herm1t LIVE!ng room - [entries|archive|friends|userinfo]
herm1t

[ website | twilight corner in the herm1t's cave ]
[ userinfo | ljr userinfo ]
[ archive | journal archive ]

[Jul. 26th, 2012|02:20 pm]
Previous Entry Add to Memories Tell A Friend Next Entry
LinkLeave a comment

Comments:
[User Picture]
From:[info]ketmar
Date:July 27th, 2012 - 09:51 am
(Link)
а нефиг на argv[0] забивать. никто — риальне, никто практически не проверяет на случай argc == 0. и я не проверяю. ибо нехуй. потому что другого переносимого способа определить, как меня зовут, нет. поэтому будьте уж так любезны, предоставляйте хоть это.
[User Picture]
From:[info]herm1t
Date:July 27th, 2012 - 10:04 am
(Link)
все-таки способы получить настоящий путь (кажется) есть везде, а если не хочется, то хотя бы argc?argv[0]:"фубарище" - к пользовательскому вводу нужно относиться так, как он этого заслуживает. имхо.
[User Picture]
From:[info]ketmar
Date:July 27th, 2012 - 10:10 am
(Link)
способы-то есть, переносимых способов нет. к тому же в argv[0] совершенно не обязательно что-то настоящее лежит (заразы).

алсо, argv[0] — это ни разу не пользовательский ввод, это системное соглашение. если кто-то забыл его соблюсти… ну, проблемы негров и индейцев. хотя и можно if (!argc) abort();, но лениво.
[User Picture]
From:[info]herm1t
Date:July 27th, 2012 - 10:16 am
(Link)
> это ни разу не пользовательский ввод

в стандарте - implementation defined. и пользователь может запихнуть туда что угодно. лениво конечно, да, и о чем тут вообще разговаривать.

вот это еще понравилось:

if (Argc < 0)
progname = "sudo";
else if ((progname = strrchr(Argv[0], '/')) != NULL)
progname++;
else
progname = Argv[0];
[User Picture]
From:[info]ketmar
Date:July 27th, 2012 - 10:11 am
(Link)
в принципе, проверять на argc<1 — это почти то же самое, что проверять, не NULL-ы ли элементы argv от 0 до argc-1. в принципе, никто не мешает так извращаться, но нафига?