progname.cpp 526 B

1234567891011121314151617181920212223242526
  1. #include "execpath.h"
  2. #include "progname.h"
  3. #include <util/folder/dirut.h>
  4. #include <util/generic/singleton.h>
  5. static const char* Argv0;
  6. namespace {
  7. struct TProgramNameHolder {
  8. inline TProgramNameHolder()
  9. : ProgName(GetFileNameComponent(Argv0 ? Argv0 : GetExecPath().data()))
  10. {
  11. }
  12. TString ProgName;
  13. };
  14. } // namespace
  15. const TString& GetProgramName() {
  16. return Singleton<TProgramNameHolder>()->ProgName;
  17. }
  18. void SetProgramName(const char* argv0) {
  19. Argv0 = argv0;
  20. }