couple more nits noticed: you don't need enum be_cmd ... be_cmd_t. you can just use an int in run_be_cmd(). I think you don't want the bindtextdomain call either. Look at usr/src/cmd/ls/ls.c as an example.