Bug 8014

Summary: Ошибка в функции checkpid?!
Product: Sisyphus Reporter: Pavel Vainerman <pv>
Component: serviceAssignee: placeholder <placeholder>
Status: CLOSED NOTABUG QA Contact: qa-sisyphus
Severity: minor    
Priority: P2 CC: glebfm, ldv, legion, placeholder
Version: unstable   
Hardware: all   
OS: Linux   

Description Pavel Vainerman 2005-09-19 21:04:10 MSD
в функции checkpid (/etc/init.d/functions-compat) помоему имеется "логическая 
ошибка"...  
checkpid() 
{ 
    while [ -n "$1" ]; do 
        [ -d "/proc/$1" ] && shift || return 1 
    done 
    return 0 
} 
 
Как я понимал 0 возвращается если pid (или список pid-ов) найден. 
 
Если передать пустой $1, то тоже вернётся 0. Что вроде как неверно. 
Если я прав, то можно добавить вначале строку: [ -z "$1" ] && return 1
Comment 1 Dmitry V. Levin 2005-09-22 19:41:58 MSD
Я полагаю, что такое поведение функции checkpid (если ей не передано аргументов,
то возвращать 0) было заложено сознательно теми, кто эту функцию придумал.

Я бы не хотел менять поведение функций в файле /etc/init.d/functions-compat,
поскольку их основной задачей является обеспечение обратной совместимости со
скриптами, написанными в стиле RH.
Comment 2 Dmitry V. Levin 2007-03-24 01:50:17 MSK
Поскольку других соображений не поступило, закрываю.
Comment 3 Pavel Vainerman 2007-03-25 16:19:52 MSD
Ну пожалуй соглашусь. Тем более, что проверка с пустым 
аргументом вряд-ли часто используется :)