/* This is it - how to get the setup values */ static int anonftpOpenDialog(void) { WINDOW *ds_win; ComposeObj *obj = NULL; int n = 0, cancel = FALSE; int max; char title[80]; WINDOW *w = savescr(); /* We need a curses window */ if (!(ds_win = openLayoutDialog(ANONFTP_HELPFILE, " Anonymous FTP Configuration ", ANONFTP_DIALOG_X, ANONFTP_DIALOG_Y, ANONFTP_DIALOG_WIDTH, ANONFTP_DIALOG_HEIGHT))) { beep(); msgConfirm("Cannot open anonymous ftp dialog window!!"); restorescr(w); return DITEM_FAILURE; } /* Draw a sub-box for the path configuration */ draw_box(ds_win, ANONFTP_DIALOG_Y + 7, ANONFTP_DIALOG_X + 8, ANONFTP_DIALOG_HEIGHT - 11, ANONFTP_DIALOG_WIDTH - 17, dialog_attr, border_attr); wattrset(ds_win, dialog_attr); sprintf(title, " Path Configuration "); mvwaddstr(ds_win, ANONFTP_DIALOG_Y + 7, ANONFTP_DIALOG_X + 22, title); /** Initialize the config Data Structure **/ bzero(&tconf, sizeof(tconf)); SAFE_STRCPY(tconf.group, FTP_GROUP); SAFE_STRCPY(tconf.upload, FTP_UPLOAD); SAFE_STRCPY(tconf.comment, FTP_COMMENT); SAFE_STRCPY(tconf.homedir, FTP_HOMEDIR); sprintf(tconf.uid, "%d", FTP_UID); /* Some more initialisation before we go into the main input loop */ obj = initLayoutDialog(ds_win, layout, ANONFTP_DIALOG_X, ANONFTP_DIALOG_Y, &max); cancelbutton = okbutton = 0; while (layoutDialogLoop(ds_win, layout, &obj, &n, max, &cancelbutton, &cancel)); /* Clear this crap off the screen */ delwin(ds_win); use_helpfile(NULL); restorescr(w); if (cancel) return DITEM_FAILURE; return DITEM_SUCCESS; }
int userAddUser(dialogMenuItem *self) { WINDOW *ds_win, *save; ComposeObj *obj = NULL; int n = 0, cancel = FALSE, ret; int max, firsttime = TRUE; if (RunningAsInit && !strstr(variable_get(SYSTEM_STATE), "install")) { msgConfirm("This option may only be used after the system is installed, sorry!"); return DITEM_FAILURE; } save = savescr(); dialog_clear_norefresh(); /* We need a curses window */ if (!(ds_win = openLayoutDialog(USER_HELPFILE, " User and Group Management ", USER_DIALOG_X, USER_DIALOG_Y, USER_DIALOG_WIDTH, USER_DIALOG_HEIGHT))) { beep(); msgConfirm("Cannot open adduser dialog window!!"); return(DITEM_FAILURE); } /* Draw a user entry box */ draw_box(ds_win, USER_DIALOG_Y + 1, USER_DIALOG_X + 3, USER_DIALOG_HEIGHT - 6, USER_DIALOG_WIDTH - 6, dialog_attr, border_attr); wattrset(ds_win, dialog_attr); mvwaddstr(ds_win, USER_DIALOG_Y + 1, USER_DIALOG_X + 22, " Add a new user "); CLEAR(uname); CLEAR(uid); CLEAR(ugroup); CLEAR(gecos); CLEAR(passwd); CLEAR(umemb); CLEAR(homedir); CLEAR(shell); /* Some more initialisation before we go into the main input loop */ obj = initLayoutDialog(ds_win, userLayout, USER_DIALOG_X, USER_DIALOG_Y, &max); reenter: cancelbutton = okbutton = 0; if (firsttime) { /* fill in the blanks, well, just the GID */ completeUser(); RefreshStringObj(userLayout[LAYOUT_UID].obj); RefreshStringObj(userLayout[LAYOUT_UGROUP].obj); RefreshStringObj(userLayout[LAYOUT_GECOS].obj); RefreshStringObj(userLayout[LAYOUT_UMEMB].obj); RefreshStringObj(userLayout[LAYOUT_HOMEDIR].obj); RefreshStringObj(userLayout[LAYOUT_SHELL].obj); firsttime = FALSE; } while (layoutDialogLoop(ds_win, userLayout, &obj, &n, max, &cancelbutton, &cancel)); if (!cancel && !verifyUserSettings(ds_win)) goto reenter; /* Clear this crap off the screen */ delwin(ds_win); dialog_clear_norefresh(); use_helpfile(NULL); if (!cancel) { addUser(ds_win); ret = DITEM_SUCCESS; } else ret = DITEM_FAILURE; restorescr(save); return ret; }