Выдрать имя проги (argv[0])

Модератор: Модераторы разделов

Аватара пользователя
sergius
Сообщения: 782

Выдрать имя проги

Сообщение sergius »

Что-то я туплю :)

Есть прога (написана на С), которая должна работать в мастдае и в линухе.
Этой проге надо знать свое имя (argv[0]).
Т.е. если прога называется "prog" (в мастдае "prog.exe") - надо знать "prog".
Как идеологически правильно сделать это в данном случае?
Что получается:
Если я смотрю argv[0] в линухе - "./prog"
Если я смотрю argv[0] в мастдае - "prog.exe"
Без проблем strtok'ом могу убрать "./" в первом случае и ".exe" во втором случае.
Но как это делать правильно?
Или, например, моя прога будет переименована (под линух) в "prog.exe.run", а под мастдай - "prog.exe.run.exe". Здесь надо выдернуть "prog.exe.run".
Спасибо сказали:
Аватара пользователя
oav
Бывший модератор
Сообщения: 296

Re: Выдрать имя проги

Сообщение oav »

sergius писал(а):
11.11.2005 16:27
Что-то я туплю :)

Есть прога (написана на С), которая должна работать в мастдае и в линухе.
Этой проге надо знать свое имя (argv[0]).
Т.е. если прога называется "prog" (в мастдае "prog.exe") - надо знать "prog".
Как идеологически правильно сделать это в данном случае?
Что получается:
Если я смотрю argv[0] в линухе - "./prog"
Если я смотрю argv[0] в мастдае - "prog.exe"
Без проблем strtok'ом могу убрать "./" в первом случае и ".exe" во втором случае.
Но как это делать правильно?
Или, например, моя прога будет переименована (под линух) в "prog.exe.run", а под мастдай - "prog.exe.run.exe". Здесь надо выдернуть "prog.exe.run".

для винды вызывай метод PathFindFileName( argv[0]), но лучше GetModuleFileName, в юнихе незнаю - лень искать, вроде тоже были аналоги
Спасибо сказали:
Аватара пользователя
sergius
Сообщения: 782

Re: Выдрать имя проги

Сообщение sergius »

[quote name='oav' date='Nov 11 2005, в 16:40' post='134778'] [quote name='sergius' post='134772' date='Nov 11
для винды вызывай метод PathFindFileName( argv[0]), но лучше GetModuleFileName, в юнихе незнаю - лень искать, вроде тоже были аналоги [quote]

Не, так не пойдет ;)
Это, если я не ошибаюсь, API функция. Мне нужно на чистом С.
Может кто-то уже делал какую-нить функцию, которая возвращает нужный мне вариант?
Мне нужен один вариант, который будет работать и там, и здесь.

ЗЫ Если ни у кого нет - придется самому возиться и парсить строку :(
Спасибо сказали: