int AddPrintSrv(int argc, char **argv) { char *info[MAX_ARGS_SIZE], **args, *name; int stat; name = canonicalize_hostname(strdup(argv[1])); if (!(stat = do_mr_query("get_print_server", 1, &name, NULL, NULL))) { Put_message ("A print server record for that host already exists."); free(name); return DM_NORMAL; } else if (stat != MR_NO_MATCH) { com_err(program_name, stat, " in AddPrintSrv"); free(name); return DM_NORMAL; } args = AskPrintSrvInfo(SetPrintSrvDefaults(info, name)); free(name); if (!args) { Put_message("Aborted."); return DM_NORMAL; } if ((stat = do_mr_query("add_print_server", CountArgs(args), args, NULL, NULL))) com_err(program_name, stat, " in AddPrintSrv"); FreeInfo(info); return DM_NORMAL; }
node *PRTdoPrint( node *syntaxtree) { info *info; DBUG_ENTER("PRTdoPrint"); DBUG_ASSERT( (syntaxtree!= NULL), "PRTdoPrint called with empty syntaxtree"); printf( "\n\n------------------------------\n\n"); info = MakeInfo(); TRAVpush( TR_prt); syntaxtree = TRAVdo( syntaxtree, info); TRAVpop(); info = FreeInfo(info); printf( "\n\n------------------------------\n\n"); DBUG_RETURN( syntaxtree); }
int GetMemberInfo(char *action, char **ret_argv) { char temp_buf[BUFSIZ]; ret_argv[LM_LIST] = strdup(current_list); ret_argv[LM_TYPE] = strdup("user"); if (GetTypeFromUser("Type of member", "member", &ret_argv[LM_TYPE]) == SUB_ERROR) return SUB_ERROR; sprintf(temp_buf, "Name of %s to %s", ret_argv[LM_TYPE], action); ret_argv[LM_MEMBER] = strdup(user); if (GetValueFromUser(temp_buf, &ret_argv[LM_MEMBER]) == SUB_ERROR) return SUB_ERROR; ret_argv[LM_END] = NULL; /* NULL terminate this list. */ if (strcasecmp(ret_argv[LM_TYPE], "string") && !ValidName(ret_argv[LM_MEMBER])) { FreeInfo(ret_argv); return SUB_ERROR; } return SUB_NORMAL; }
int AddACL(int argc, char **argv) { char *info[MAX_ARGS_SIZE], **args; int stat; argv[1] = canonicalize_hostname(strdup(argv[1])); if (!(stat = do_mr_query("get_acl", 2, argv + 1, NULL, NULL))) { Put_message ("An ACL for that host and target already exists."); free(argv[1]); return DM_NORMAL; } else if (stat != MR_NO_MATCH) { com_err(program_name, stat, " in AddACL"); free(argv[1]); return DM_NORMAL; } args = AskACLInfo(SetDefaults(info, argv[1], argv[2])); free(argv[1]); if (!args) { Put_message("Aborted."); return DM_NORMAL; } if ((stat = do_mr_query("add_acl", CountArgs(args), args, NULL, NULL))) com_err(program_name, stat, " in AddACL"); FreeInfo(info); return DM_NORMAL; }
EXPORT_C void RMBufPacketBase::Free() /** Delete info and data */ { FreeInfo(); RMBufChain::Free(); }
int AddPrn(int argc, char **argv) { char *info[MAX_ARGS_SIZE], **args; int stat; if (!ValidName(argv[1])) return DM_NORMAL; if (!(stat = do_mr_query("get_printer", 1, argv + 1, NULL, NULL)) || !(stat = do_mr_query("get_printer_by_duplexname", 1, argv + 1, NULL, NULL))) { Put_message ("A Printer by that name already exists."); return DM_NORMAL; } else if (stat != MR_NO_MATCH) { com_err(program_name, stat, " in AddPrn"); return DM_NORMAL; } args = AskPrnInfo(SetDefaults(info, argv[1]), FALSE); if (!args) { Put_message("Aborted."); return DM_NORMAL; } if ((stat = do_mr_query("add_printer", CountArgs(args), args, NULL, NULL))) com_err(program_name, stat, " in AddPrn"); if (stat == MR_SUCCESS && strcasecmp(info[PRN_HOSTNAME], "[NONE]")) { char *hwargv[2], *hwaddr, *s, *d; hwaddr = strdup(""); if (GetValueFromUser("Hardware ethernet address", &hwaddr) == SUB_ERROR) return DM_NORMAL; s = d = hwaddr; do { if (*s != ':') *d++ = *s; } while (*s++); hwargv[0] = info[PRN_HOSTNAME]; hwargv[1] = hwaddr; stat = do_mr_query("add_host_hwaddr", 2, hwargv, NULL, NULL); if (stat != MR_SUCCESS) com_err(program_name, stat, " in add_host_hwaddr"); } FreeInfo(info); return DM_NORMAL; }
int AddMember(int argc, char **argv) { char *args[10], temp_buf[BUFSIZ], *p; int status; struct mqelem *mailhubs, *elem; if (GetMemberInfo("add", args) == SUB_ERROR) return DM_NORMAL; if (!strcmp(args[LM_TYPE], "STRING")) { status = mrcl_validate_string_member(args[LM_MEMBER]); if (status != MRCL_SUCCESS) Put_message(mrcl_get_message()); if (status == MRCL_REJECT) return DM_NORMAL; } else if (!strcmp(args[LM_TYPE], "KERBEROS")) { char *canon; status = mrcl_validate_kerberos_member(args[LM_MEMBER], &canon); if (mrcl_get_message()) Put_message(mrcl_get_message()); if (status == MRCL_REJECT) return DM_NORMAL; free(args[LM_MEMBER]); args[LM_MEMBER] = canon; } else if (!strcmp(args[LM_TYPE], "MACHINE")) { char *canon; canon = canonicalize_hostname(strdup(args[LM_MEMBER])); free(args[LM_MEMBER]); args[LM_MEMBER] = canon; } if ((status = do_mr_query("add_member_to_list", CountArgs(args), args, NULL, NULL)) != MR_SUCCESS) { if (status == MR_EXISTS) { sprintf(temp_buf, "The %s %s is already a member of LIST %s.", args[LM_TYPE], args[LM_MEMBER], args[LM_LIST]); Put_message(temp_buf); } else com_err(program_name, status, " in AddMember"); } FreeInfo(args); return DM_NORMAL; }
// -------------------------------------------------------------------------- // // Function // Name: BackupStoreCheck::~BackupStoreCheck() // Purpose: Destructor // Created: 21/4/04 // // -------------------------------------------------------------------------- BackupStoreCheck::~BackupStoreCheck() { // Clean up FreeInfo(); // Avoid an exception if we forget to discard mapNewRefs if (mapNewRefs.get()) { mapNewRefs->Discard(); mapNewRefs.reset(); } }
int CreateFSAlias(int argc, char **argv) { int stat; struct mqelem *elem, *top; char *args[MAX_ARGS_SIZE], buf[BUFSIZ], **info; elem = NULL; if (!ValidName(argv[1])) return DM_NORMAL; args[ALIAS_NAME] = strdup(argv[1]); args[ALIAS_TYPE] = strdup(FS_ALIAS_TYPE); args[ALIAS_TRANS] = strdup("*"); /* * Check to see if this alias already exists in the database, if so then * print out values, free memory used and then exit. */ if (!(stat = do_mr_query("get_alias", 3, args, StoreInfo, &elem))) { top = elem = QueueTop(elem); while (elem) { info = elem->q_data; sprintf(buf, "The alias: %s currently describes the filesystem %s", info[ALIAS_NAME], info[ALIAS_TRANS]); Put_message(buf); elem = elem->q_forw; } FreeQueue(top); return DM_NORMAL; } else if (stat != MR_NO_MATCH) { com_err(program_name, stat, " in CreateFSAlias."); return DM_NORMAL; } args[ALIAS_TRANS] = strdup(""); args[ALIAS_END] = NULL; if (GetValueFromUser("Which filesystem will this alias point to?", &args[ALIAS_TRANS]) == SUB_ERROR) return DM_NORMAL; if ((stat = do_mr_query("add_alias", 3, args, NULL, NULL))) com_err(program_name, stat, " in CreateFSAlias."); FreeInfo(args); return DM_NORMAL; }
OBJError Mesh_Load( OBJ2 *obj, void *global, int obj_no, int flags ) { StoreInfo *info; LWObjectFuncs *objfunc; const char *filename; if (global == NULL) return OBJ_PARM_ERROR; info = (StoreInfo *) calloc( 1, sizeof(StoreInfo) ); if (info == NULL) return OBJ_MEM_ERROR; info->global = (GlobalFunc *) global; info->obj = obj; info->obj_no = obj_no; info->flags = flags; info->query = (*info->global)( LWSTATEQUERYFUNCS_GLOBAL, GFUSE_TRANSIENT ); info->surff = (*info->global)( LWSURFACEFUNCS_GLOBAL , GFUSE_TRANSIENT ); info->txtrf = (*info->global)( LWTEXTUREFUNCS_GLOBAL , GFUSE_TRANSIENT ); info->envlf = (*info->global)( LWENVELOPEFUNCS_GLOBAL , GFUSE_TRANSIENT ); info->chaninfo = (*info->global)( LWCHANNELINFO_GLOBAL , GFUSE_TRANSIENT ); info->imglist = (*info->global)( LWIMAGELIST_GLOBAL , GFUSE_TRANSIENT ); info->objfunc = (*info->global)( LWOBJECTFUNCS_GLOBAL , GFUSE_TRANSIENT ); info->fileio = (*info->global)( LWFILEIOFUNCS_GLOBAL , GFUSE_TRANSIENT ); if (info->surff == NULL || info->imglist == NULL || info->objfunc == NULL) return OBJ_PARM_ERROR; objfunc = info->objfunc; obj->type = LWO2_FILE; filename = (*objfunc->filename)( obj_no ); if (filename) { strcpy( obj->name, filename ); } else { strcpy( obj->name, (*objfunc->userName)( obj_no ) ); } /* Store Surface Info */ StoreSurfaces( info ); /* Store Image Info */ StoreImages( info ); if (flags & MESH_FLAG_MERGE) { StorePoints ( info ); StorePolygons( info ); } else { StoreMeshes ( info ); } FreeInfo( info ); return OBJ_NO_ERROR; }
int DeleteMember(int argc, char **argv) { char *args[10]; int status; if (GetMemberInfo("delete", args) == SUB_ERROR) return DM_NORMAL; if (Confirm("Are you sure you want to delete this member?")) { if ((status = do_mr_query("delete_member_from_list", CountArgs(args), args, NULL, NULL))) { if ((status == MR_STRING || status == MR_NO_MATCH) && !strcmp(args[LM_TYPE], "KERBEROS")) { char *canon; mrcl_validate_kerberos_member(args[LM_MEMBER], &canon); if (mrcl_get_message()) { free(args[LM_MEMBER]); args[LM_MEMBER] = canon; if (do_mr_query("delete_member_from_list", CountArgs(args), args, NULL, NULL) == MR_SUCCESS) { Put_message(mrcl_get_message()); status = MR_SUCCESS; } } } else if ((status == MR_MACHINE || status == MR_NO_MATCH) && !strcmp(args[LM_TYPE], "MACHINE")) { char *canon; canon = canonicalize_hostname(args[LM_MEMBER]); args[LM_MEMBER] = canon; if (do_mr_query("delete_member_from_list", CountArgs(args), args, NULL, NULL) == MR_SUCCESS) status = MR_SUCCESS; } } if (status) com_err(program_name, status, " in DeleteMember"); else Put_message("Deletion Completed."); } else Put_message("Deletion has been Aborted."); FreeInfo(args); return DM_NORMAL; }
void ServiceStop(void) { DWORD i; for(i=0;i<GetThreadCount();i++) if(hServerStopEvent[i]) SetEvent(hServerStopEvent[i]); FreeInfo(); WaitForMultipleObjects(GetThreadCount(),threads,TRUE,INFINITE); for(i=0;i<GetThreadCount();i++) CloseHandle(threads[i]); FreeNotify(); free(pipe_sd); pipe_sd=NULL; }
//start traversal node *CTchecktypes( node *syntaxtree){ DBUG_ENTER("CTchecktypes"); info *arg_info; TRAVpush( TR_ct); // Push traversal "link" as defined in ast.xml arg_info = MakeInfo(); syntaxtree = TRAVdo( syntaxtree, arg_info); // Initiate ast traversal TRAVpop(); // Pop current traversal arg_info = FreeInfo(arg_info); DBUG_RETURN( syntaxtree); }
void ChangePrintSrvLoop(char **info, Bool one) { int stat; if (!AskPrintSrvInfo(info)) return; if ((stat = do_mr_query("update_print_server", CountArgs(info), info, NULL, NULL))) com_err(program_name, stat, " in ChangePrintSrv"); FreeInfo(info); return; }
node *COPdoCountOperators( node *syntaxtree) { info *arg_info; DBUG_ENTER("COPdoCountOperators"); arg_info = MakeInfo(); TRAVpush( TR_cop); syntaxtree = TRAVdo( syntaxtree, arg_info); TRAVpop(); arg_info = FreeInfo( arg_info); DBUG_RETURN( syntaxtree); }
int AddNFSService(int argc, char **argv) { char **add_args, *args[10]; char *info[MAX_ARGS_SIZE]; int stat; args[0] = canonicalize_hostname(strdup(argv[1])); args[1] = strdup(DEFAULT_DIR); if (GetValueFromUser("Directory:", &args[1]) == SUB_ERROR) return DM_NORMAL; if (!ValidName(args[0]) || !ValidName(args[1])) return DM_NORMAL; if (!(stat = do_mr_query("get_nfsphys", 2, args, NULL, NULL))) stat = MR_EXISTS; if (stat != MR_NO_MATCH) { com_err(program_name, stat, " in get_nfsphys."); return DM_NORMAL; } info[NFS_NAME] = strdup(args[0]); info[NFS_DIR] = args[1]; /* already saved. */ info[NFS_DEVICE] = strdup(DEFAULT_DEVICE); info[NFS_STATUS] = strdup(DEFAULT_STATUS); info[NFS_ALLOC] = strdup(DEFAULT_ALLOC); info[NFS_SIZE] = strdup(DEFAULT_SIZE); info[NFS_MODBY] = info[NFS_MODWITH] = info[NFS_MODTIME] = NULL; info[NFS_END] = NULL; if (!(add_args = AskNFSInfo(info))) { Put_message("Aborted."); return DM_NORMAL; } if ((stat = do_mr_query("add_nfsphys", CountArgs(add_args), add_args, NULL, NULL))) com_err(program_name, stat, " in AdsNFSService"); FreeInfo(info); free(args[0]); return DM_NORMAL; }
int AddNewUser(int argc, char **argv) { int status; char **args, *info[MAX_ARGS_SIZE]; if (!(args = AskUserInfo(SetUserDefaults(info), FALSE))) { Put_message("Aborted."); return DM_NORMAL; } if ((status = do_mr_query("add_user_account", CountArgs(args), args, NULL, NULL))) com_err(program_name, status, " in add_user_account"); else Put_message("New user added to database."); FreeInfo(args); return DM_NORMAL; }
node *COPYdoCopy( node *arg_node) { node *result = NULL; info *info = NULL; DBUG_ENTER("COPYdoCopy"); if (arg_node != NULL) { info = MakeInfo(); TRAVpush( TR_copy); result = TRAVdo( arg_node, info); TRAVpop(); info = FreeInfo( info); } DBUG_RETURN( result); }
node * FREEdoFreeTree (node * free_node) { info *arg_info; DBUG_ENTER ("FREEfreeTree"); // printf("it is here in Free now\n"); arg_info = MakeInfo (); INFO_FREE_FLAG (arg_info) = NULL; TRAVpush (TR_free); free_node = TRAVdo (free_node, arg_info); TRAVpop (TR_free); arg_info = FreeInfo (arg_info); DBUG_RETURN (free_node); }
node * FREEdoFreeNode (node * free_node) { info *arg_info; DBUG_ENTER ("FREEfreeNode"); arg_info = MakeInfo (); INFO_FREE_FLAG (arg_info) = free_node; TRAVpush (TR_free); free_node = TRAVdo (free_node, arg_info); TRAVpop (); arg_info = FreeInfo (arg_info); DBUG_RETURN (free_node); }
node *CTPdoLinkVar(node *syntaxtree) { info *info; DBUG_ENTER("CTPdoLinkVar"); DBUG_ASSERT( ( syntaxtree != NULL), "CTPdoLink called with empty syntaxtree"); info = MakeInfo(); TRAVpush(TR_lvar); syntaxtree = TRAVdo( syntaxtree, info); //report_unlinked_identifiers(info); TRAVpop(); info = FreeInfo( info); DBUG_RETURN( syntaxtree); }
int TagMember(int argc, char **argv) { char *args[10]; int status; if (GetMemberInfo("tag", args) == SUB_ERROR) return DM_NORMAL; args[LM_TAG] = strdup(""); if (GetValueFromUser("Tag" , &args[LM_TAG]) == SUB_ERROR) { Put_message("Aborted."); return DM_NORMAL; } args[LM_TAG_END] = NULL; /* NULL terminate this list. */ if ((status = do_mr_query("tag_member_of_list", CountArgs(args), args, NULL, NULL))) com_err(program_name, status, " in TagMember"); FreeInfo(args); return DM_NORMAL; }
static void RealDeactivateUser(char **info, Bool one_item) { int status; char txt_buf[BUFSIZ]; char *qargs[2], **args; struct mqelem *elem = NULL; if (one_item) { sprintf(txt_buf, "Deactivate user %s (y/n)", info[NAME]); if (YesNoQuestion(txt_buf, FALSE) != TRUE) return; } qargs[0] = info[NAME]; qargs[1] = "3"; if ((status = do_mr_query("update_user_status", 2, qargs, NULL, NULL))) { com_err(program_name, status, " in update_user_status"); sprintf(txt_buf, "User %s not deactivated due to errors.", info[NAME]); Put_message(txt_buf); } else if (YesNoQuestion("Also deactivate matching list and filesystem (y/n)", FALSE) == TRUE) { status = do_mr_query("get_list_info", 1, &(info[NAME]), StoreInfo, &elem); if (status == MR_SUCCESS) { args = QueueTop(elem)->q_data; free(args[L_ACTIVE]); args[L_ACTIVE] = strdup("0"); FreeAndClear(&args[L_MODTIME], TRUE); FreeAndClear(&args[L_MODBY], TRUE); FreeAndClear(&args[L_MODWITH], TRUE); SlipInNewName(args, strdup(args[L_NAME])); if ((status = do_mr_query("update_list", CountArgs(args), args, NULL, NULL))) { com_err(program_name, status, " updating list, " "not deactivating list or filesystem"); FreeInfo(args); FreeQueue(elem); return; } FreeInfo(args); FreeQueue(elem); elem = NULL; } else if (status != MR_NO_MATCH) { com_err(program_name, status, " getting list info, " "not deactivating list or filesystem"); return; } if ((status = do_mr_query("get_filesys_by_label", 1, &(info[NAME]), StoreInfo, &elem))) { com_err(program_name, status, " getting filsys info, " "not deactivating filesystem"); return; } args = QueueTop(elem)->q_data; free(args[FS_TYPE]); args[FS_TYPE] = strdup("ERR"); free(args[FS_COMMENTS]); args[FS_COMMENTS] = strdup("Locker disabled; call 3-1325 for help"); FreeAndClear(&args[FS_MODTIME], TRUE); FreeAndClear(&args[FS_MODBY], TRUE); FreeAndClear(&args[FS_MODWITH], TRUE); SlipInNewName(args, strdup(args[FS_NAME])); if ((status = do_mr_query("update_filesys", CountArgs(args), args, NULL, NULL))) { com_err(program_name, status, " updating filesystem, " "not deactivating filesystem"); FreeInfo(args); FreeQueue(elem); return; } FreeInfo(args); FreeQueue(elem); } }
CNCSThread::~CNCSThread() { if( Terminate() ) { FreeInfo(); } }
int AddList(int argc, char **argv) { static char *info[MAX_ARGS_SIZE], **add_args; int status, ret_code = SUB_NORMAL; struct mqelem *elem = NULL; if (!ValidName(argv[1])) return DM_NORMAL; status = do_mr_query("get_list_info", 1, argv + 1, NULL, NULL); if (status != MR_NO_MATCH) { if (status == MR_SUCCESS) Put_message("This list already exists."); else com_err(program_name, status, " in AddList."); return SUB_ERROR; } if (status = mr_access("add_list", L_MODTIME, SetDefaults(info, argv[1]))) { com_err(program_name, status, " in AddList."); return SUB_ERROR; } /* * If the listname is less than 8 characters, make sure it doesn't * collide with a username. */ if ((strlen(argv[1]) <= 8) && do_mr_query("get_user_account_by_login", 1, argv + 1, StoreInfo, &elem) != MR_NO_MATCH) { char buf[256]; sprintf(buf, "\nA user by the name `%s' already exists in the database.", argv[1]); Put_message(buf); Loop(QueueTop(elem), FreeInfo); FreeQueue(elem); if (YesNoQuestion("Create a list with the same name", FALSE) != TRUE) return SUB_ERROR; } if (!(add_args = AskListInfo(SetDefaults(info, argv[1]), FALSE))) { Put_message("Aborted."); return SUB_ERROR; } if ((status = do_mr_query("add_list", CountArgs(add_args), add_args, NULL, NULL)) != MR_SUCCESS) { com_err(program_name, status, " in AddList."); Put_message("List Not Created."); ret_code = SUB_ERROR; } if (atoi(add_args[L_MAILMAN])) { char mailman_address[256], buf[1024]; status = do_mr_query("get_list_info", 1, add_args, StoreInfo, &elem); if (status) com_err(program_name, status, "while retrieving list information."); else { strcpy(mailman_address, add_args[0]); strcat(mailman_address, "@"); strcat(mailman_address, ((char **)elem->q_data)[L_MAILMAN_SERVER]); sprintf(buf, "Add STRING %s to LIST %s", mailman_address, add_args[0]); if (YesNoQuestion(buf, TRUE) == TRUE) { char *args[3]; args[0] = add_args[0]; args[1] = "STRING"; args[2] = mailman_address; status = do_mr_query("add_member_to_list", CountArgs(args), args, NULL, NULL); if (status) com_err(program_name, status, "while adding member to list."); } } } FreeInfo(info); return ret_code; }
int AddFS(int argc, char **argv) { char *info[MAX_ARGS_SIZE], **args, buf[BUFSIZ]; int stat; extern Menu nfsphys_menu; if (!ValidName(argv[1])) return DM_NORMAL; if (!(stat = do_mr_query("get_filesys_by_label", 1, argv + 1, NULL, NULL))) { Put_message ("A Filesystem by that name already exists."); return DM_NORMAL; } else if (stat != MR_NO_MATCH) { com_err(program_name, stat, " in AddFS"); return DM_NORMAL; } if (!(args = AskFSInfo(SetDefaults(info, argv[1]), FALSE))) { Put_message("Aborted."); return DM_NORMAL; } stat = do_mr_query("add_filesys", CountArgs(args), args, NULL, NULL); switch (stat) { case MR_NFS: Put_message("That NFS filesystem is not exported."); if (YesNoQuestion("Fix this now (Y/N)", TRUE) == TRUE) { Do_menu(&nfsphys_menu, 0, NULL); if (YesNoQuestion("Retry filesystem creation now (Y/N)", TRUE) == TRUE) { if ((stat = do_mr_query("add_filesys", CountArgs(args), args, NULL, NULL))) com_err(program_name, stat, " in AddFS"); else Put_message("Created."); } } break; case MR_SUCCESS: break; default: com_err(program_name, stat, " in AddFS"); } if (stat == MR_SUCCESS && !strcasecmp(info[FS_L_TYPE], "HOMEDIR")) { static char *val[] = {"def_quota", NULL}; static char *def_quota = NULL; char *argv[Q_QUOTA + 1]; struct mqelem *top = NULL; if (!def_quota) { stat = do_mr_query("get_value", CountArgs(val), val, StoreInfo, &top); if (stat != MR_SUCCESS) com_err(program_name, stat, " getting default quota"); else { top = QueueTop(top); def_quota = strdup(((char **)top->q_data)[0]); FreeQueue(top); } } if (def_quota) { sprintf(buf, "Give user %s a quota of %s on filesys %s (Y/N)", info[FS_NAME], def_quota, info[FS_NAME]); if (YesNoQuestion(buf, 1) == TRUE) { argv[Q_NAME] = argv[Q_FILESYS] = info[FS_NAME]; if (!strcmp(info[FS_TYPE], "NFS")) argv[Q_TYPE] = "USER"; else argv[Q_TYPE] = "ANY"; argv[Q_QUOTA] = def_quota; if ((stat = do_mr_query("add_quota", Q_QUOTA + 1, argv, NULL, NULL))) com_err(program_name, stat, " while adding quota"); } } } else if (stat == MR_SUCCESS) { if (YesNoQuestion("Assign a quota on this filesystem (Y/N)", 1) == TRUE) { parsed_argc = 1; parsed_argv[0] = info[FS_NAME]; AddQuota(parsed_argc, parsed_argv); } } FreeInfo(info); return DM_NORMAL; }
int RegisterUser(int argc, char **argv) { char *args[MAX_ARGS_SIZE]; char *login, *potype = NULL; char temp_buf[BUFSIZ]; int status, i; for (i = 0; i < MAX_ARGS_SIZE; i++) args[i] = NULL; Put_message("This function has NO kerberos support, so strange things"); Put_message("may happen if you use it to register a user."); switch (YesNoQuestion("Do you know the users UID Number (y/n)", FALSE)) { case TRUE: Prompt_input("What is the UID number of the user? ", temp_buf, BUFSIZ); args[0] = strdup(temp_buf); break; case FALSE: if (!(args[0] = GetUidNumberFromName())) return DM_NORMAL; break; default: return DM_NORMAL; } sprintf(temp_buf, "u%s", args[0]); login = strdup(temp_buf); if (GetValueFromUser("Login name for this user? ", &login) == SUB_ERROR) { args[1] = login; FreeInfo(args); /* This work because the NULL temination is ok. */ return DM_NORMAL; } Put_message("KERBEROS code not added, did not reserve name with kerberos."); args[1] = login; sprintf(temp_buf, "EXCHANGE"); potype = strdup(temp_buf); if (GetValueFromUser("P.O. Box Type for this user? ", &potype) == SUB_ERROR) { args[2] = potype; FreeInfo(args); return DM_NORMAL; } if (strcmp(potype, "POP") && strcmp(potype, "IMAP") && strcmp(potype, "EXCHANGE")) { sprintf(temp_buf, "Unknown P.O. Box type."); Put_message(temp_buf); FreeInfo(args); return DM_NORMAL; } args[2] = potype; args[3] = NULL; switch ((status = do_mr_query("register_user", CountArgs(args), args, NULL, NULL))) { case MR_SUCCESS: sprintf(temp_buf, "User %s successfully registered.", login); Put_message(temp_buf); SetUserPassword(login); break; case MR_IN_USE: GiveBackLogin(login); sprintf(temp_buf, "The username %s is already in use.", login); Put_message(temp_buf); break; default: com_err(program_name, status, " in register_user"); break; } FreeInfo(args); return DM_NORMAL; }