Jo, C má v tomhle rozhodně své limity. Ale zároveň dost omezení není v jiných jazycích o moc lepších.
Ty příkazy mají jen pár ruzných druhů parametrů. Ale ty parametry mají navázané společné kusy kódu (třeba user_open). Tady ty příkazy stačilo podle těch společných parametrů seřadit.
Ve vámi navrhovaném switchi by to takhle nešlo. Tam by ty společné části bylo nutno buď zduplikovat do každé funkce, nebo provést podmíněně před tím switchem. To podle jazyka a použitého parseru commandliny znamená buď další navázané "předswitche" před tím hlavním switchem, nebo použití nějakého mocného parseru commandliny s konfigurací odpovídající složitosti. A obě ty možnosti jsou těsně svázané s tím hlavním switchem.
Jo, nebyla by to funkce na 500 či kolik řádků. Ale jestli by to ve výsledku bylo jednodušší si nejsem vůbec jistý.