int main(int argc, char *argv[]) { FILE *fsi = NULL; FILE *fsx = NULL; char *domain; char *domain_dir = NULL; static struct stat statbuf; domain_entry *entry; memset(TmpBuf,0,sizeof(TmpBuf)); memset(MsgBuf,0,sizeof(MsgBuf)); Verbose = 0; DoNothing = 0; if ( argc == 1 ) { usage(); vexit(-1); } if( vauth_open( 1 )) { vexiterror( stderr, "Initial open." ); } get_options(argc,argv); getcwd(CurDir,sizeof(CurDir)); if ( EmailFileFlag == 1 ) { if ( (fsi = fopen(EmailFile, "r")) == NULL ) { fprintf(stderr, "Could not open file %s\n", EmailFile); vexit(-1); } else { /* make sure the file size is not 0 */ stat(EmailFile, &statbuf); if(statbuf.st_size == 0) { fprintf(stderr, "Error: %s is empty\n", EmailFile); vexit(-1); } /* check for existing date header */ while (fgets (TmpBuf, sizeof(TmpBuf), fsi) != NULL) { /* check for end of headers (blank line) */ if (*TmpBuf == '\n') break; if (strncasecmp ("Date: ", TmpBuf, 6) == 0) { InsertDate = 0; break; } } rewind(fsi); } } else if (! DoNothing) { /* require -f [email_file] */ fprintf(stderr, "Error: email_file not specified\n"); usage(); vexit(-1); } if ( ExcludeFileFlag == 1 ) { if ( (fsx = fopen(ExcludeFile, "r")) == NULL ) { fprintf(stderr, "Could not open file %s\n", ExcludeFile); vexit(-1); } } if (( EmailFile[0] != 0 || DoNothing == 1) && Domain[0] != 0 ) { /* Process list of domains */ domain = strtok(Domain, " "); while (domain != NULL ) { if((vget_assign(domain, domain_dir, sizeof(domain_dir), NULL, NULL)) != NULL) { process_domain(domain, fsi, fsx ); } else { fprintf(stderr, "Error: domain %s does not exist\n", domain); } domain = strtok(NULL, " "); } vexit(0); } else if ( (EmailFile[0] != 0 || DoNothing == 1) && Domain[0] == 0 ) { entry = get_domain_entries( "" ); if (entry==NULL) { if( verrori ) { printf("Can't get domain entries - %s\n", verror( verrori )); vexit(-1); } else { printf("What now - %s\n", verror( verrori )); vexit(0); } } while( entry ) { if (strcmp (entry->domain, entry->realdomain) != 0) { if (Verbose) { fprintf (stderr, "skipping %s (alias of %s)\n", entry->domain, entry->realdomain); } } else { chdir(entry->path); process_domain(entry->realdomain, fsi, fsx ); } entry = get_domain_entries(NULL); } } return(vexit(0)); }
int main(int argc, char **argv) { FILE *fs; int first; struct passwd *pw; char *tmpstr; uid_t uid; gid_t gid; get_options(argc,argv); fs = fopen("/usr/tmp/vreorg", "w+"); if ( fs == NULL ) { perror("vreorg:"); exit(errno); } first = 1; printf("getting user list\n"); while( (pw=vauth_getall(Domain, first, 0))){ first = 0; fprintf(fs, "%s %s %s\n", pw->pw_user, Domain, pw->pw_dir); } rewind(fs); printf("done.\n"); vget_assign(Domain, DomainDir, MAX_BUFF, &uid, &gid); /* reset dir control external to this program */ printf("resetting the directory layout status\n"); vdel_dir_control(Domain); printf("working on users\n"); while ( fgets(TmpBuf, MAX_BUFF, fs) != NULL ) { /* user */ tmpstr = strtok(TmpBuf, TOKENS); if ( tmpstr == NULL ) continue; strcpy( User, tmpstr); /* domain */ tmpstr = strtok(NULL, TOKENS); if ( tmpstr == NULL ) continue; strcpy( Domain, tmpstr); /* old dir */ tmpstr = strtok(NULL, TOKENS); if ( tmpstr == NULL ) continue; strcpy( OldDir, tmpstr); /* get next dir */ open_big_dir(Domain); tmpstr = next_big_dir(uid, gid); close_big_dir(Domain, uid, gid); /* get old pw struct */ pw = vauth_getpw( User, Domain); /* get space for pw_dir */ pw->pw_dir = malloc(MAX_BUFF); /* format new directory string */ if ( slen(tmpstr) > 0 ) { sprintf(pw->pw_dir, "%s/%s/%s", DomainDir, tmpstr, User); } else { sprintf(pw->pw_dir, "%s/%s", DomainDir, User); } printf("%s@%s old %s new %s ", User, Domain, OldDir, pw->pw_dir); /* update database */ vauth_setpw( pw, domain ); /* move directory */ rename(OldDir, pw->pw_dir); /* free directory memory */ free(pw->pw_dir); printf("done\n"); } fclose(fs); unlink("/usr/tmp/vreorg"); exit(0); }
modusergo() { char crypted[20]; char *tmpstr; int i; int ret_code; int password_updated = 0; struct vqpasswd *vpw=NULL; static char box[50]; static char NewBuf[156]; int count; FILE *fs; #ifdef SQWEBMAIL_PASS uid_t uid; gid_t gid; #endif vpw = vauth_getpw(ActionUser, Domain); if (!( AdminType==DOMAIN_ADMIN || (AdminType==USER_ADMIN && strcmp(ActionUser,Username)==0))){ sprintf(StatusMessage,"%s", get_html_text("142")); vclose(); exit(0); } if (strlen(Password1)>0 && strlen(Password2)>0 ) { if ( strncmp( Password1, Password2, MAX_BUFF ) != 0 ) { sprintf(StatusMessage, "%s\n", get_html_text("200")); moduser(); vclose(); exit(0); } if (strlen(Password1) > MAX_PW_CLEAR_PASSWD) { sprintf(StatusMessage,"%s %s@%s %s", get_html_text("139"), ActionUser, Domain, VA_PASSWD_TOO_LONG ); moduser(); vclose(); exit(0); } else if (vpw->pw_gid & NO_PASSWD_CHNG) { sprintf(StatusMessage, "%s", get_html_text("140")); moduser(); vclose(); exit(0); } else { sprintf(StatusMessage,"%s %s@%s", get_html_text("139"), ActionUser, Domain); } mkpasswd3(Password1,Crypted, MAX_BUFF); vpw->pw_passwd = Crypted; #ifdef CLEAR_PASS vpw->pw_clear_passwd = Password1; #endif #ifdef SQWEBMAIL_PASS vget_assign(Domain, NULL, 0, &uid, &gid ); vsqwebmail_pass( vpw->pw_dir, Crypted, uid, gid); #endif } GetValue(TmpCGI,Gecos, "gecos=", MAX_BUFF); if ( strlen( Gecos ) != 0 ) { vpw->pw_gecos = Gecos; } vauth_setpw(vpw, Domain); /* get the value of the cforward radio button */ GetValue(TmpCGI,box, "cforward=", MAX_BUFF); /* if they want to disable everything */ if ( strcmp(box,"disable") == 0 ) { /* unlink the .qmail file */ if ( vpw == NULL ) vpw = vauth_getpw(ActionUser, Domain); snprintf(NewBuf,156,"%s/.qmail", vpw->pw_dir); unlink(NewBuf); /* delete any vacation directory */ snprintf(NewBuf,156,"%s/vacation", vpw->pw_dir); vdelfiles(NewBuf); /* if they want to forward */ } else if (strcmp(box,"forward") == 0 ) { /* get the value of the foward */ GetValue(TmpCGI,box, "nforward=", MAX_BUFF); /* If nothing was entered, error */ if ( box[0] == 0 ) { sprintf(StatusMessage, "%s\n", get_html_text("215")); moduser(); vclose(); exit(0); /* check it for a valid email address } else if ( check_email_addr( box ) == 1 ) { sprintf(StatusMessage, "%s\n", get_html_text("148")); moduser(); */ } /* everything looks good, open the file */ if ( vpw == NULL ) { vpw = vauth_getpw(ActionUser, Domain); } snprintf(NewBuf,156,"%s/.qmail", vpw->pw_dir); fs = fopen(NewBuf,"w+"); tmpstr = strtok(box," ,;\n"); count=0; while( tmpstr != NULL && count < 2) { fprintf(fs,"&%s\n", tmpstr); tmpstr = strtok(NULL," ,\n"); ++count; } /* if they want to save a copy */ GetValue(TmpCGI,box, "fsaved=", MAX_BUFF); if ( strcmp(box,"on") == 0 ) { fprintf(fs,"%s/Maildir/\n", vpw->pw_dir); } fclose(fs); /* they want vacation */ } else if (strcmp(box,"vacation") == 0 ) { /* get the subject */ GetValue(TmpCGI,box, "vsubject=", MAX_BUFF); /* if no subject, error */ if ( box[0] == 0 ) { sprintf(StatusMessage, "%s\n", get_html_text("216")); moduser(); vclose(); exit(0); } /* make the vacation directory */ if ( vpw == NULL ) vpw = vauth_getpw(ActionUser, Domain); snprintf(NewBuf,156,"%s/vacation", vpw->pw_dir); mkdir(NewBuf, 448); /* open the .qmail file */ snprintf(NewBuf,156,"%s/.qmail", vpw->pw_dir); fs = fopen(NewBuf,"w+"); fprintf(fs, "| %s/autorespond 86400 3 %s/vacation/message %s/vacation\n", AUTORESPOND_BIN, vpw->pw_dir, vpw->pw_dir ); /* save a copy for the user */ fprintf(fs,"%s/Maildir/\n", vpw->pw_dir); fclose(fs); /* set up the message file */ snprintf(NewBuf,156,"%s/vacation/message", vpw->pw_dir); GetValue(TmpCGI,Message, "vmessage=",MAX_BIG_BUFF); if ( (fs = fopen(NewBuf, "w")) == NULL ) ack("123", 123); fprintf(fs, "From: %s@%s\n", ActionUser,Domain); fprintf(fs, "Subject: %s\n\n", box); fprintf(fs, "%s", Message); fclose(fs); /* save the forward for vacation too */ GetValue(TmpCGI,box,"nforward=", MAX_BUFF); snprintf(NewBuf, 156, "%s/.qmail", vpw->pw_dir); fs = fopen(NewBuf, "a+"); tmpstr = strtok(box, " ,;\n"); count = 0; while( tmpstr != NULL && count < 2 ) { fprintf(fs, "&%s\n", tmpstr); tmpstr = strtok(NULL, " ,;\n"); ++count; } fclose(fs); } else { printf("nothing\n"); } call_hooks(HOOK_MODUSER); show_users(Username, Domain, Mytime); }
int main(int argc, char *argv[]) { int i; char OptionString[MAX_BUFF]; if( vauth_open( 1 )) { vexiterror( stderr, "Initial open." ); } get_options(argc,argv); if (EditDefaultLimits || vget_assign(Domain, NULL, 0, NULL, NULL ) != NULL) { if (EditDefaultLimits) { if (vlimits_read_limits_file(VLIMITS_DEFAULT_FILE, &limits) != 0) { printf ("Failed to read the vlimits.default file.\n"); vexit(-1); } if (DeleteLimits) { printf ("Default limits must not be deleted. If you really want to do this,\n"); printf ("remove the vlimits.default file.\n"); printf ("But be warned: this might stop vpopmail from working!!\n"); vexit(-1); } } else { if (vget_limits(Domain,&limits) != 0) { printf ("Failed to vget_limits\n"); vexit(-1); } if (DeleteLimits) { if (vdel_limits(Domain)==0) { printf ("Limits deleted\n"); vexit(0); } else { printf ("Failed to delete limits\n"); vexit(-1); } } } if (ShowLimits) { memset (OptionString, 0, sizeof(OptionString)); if (EditDefaultLimits) printf("Default limits: %s\n", VLIMITS_DEFAULT_FILE); else printf("Domain: %s\n", Domain); printf("--\n"); printf("Max Pop Accounts: %d\n", limits.maxpopaccounts); printf("Max Aliases: %d\n", limits.maxaliases); printf("Max Forwards: %d\n", limits.maxforwards); printf("Max Autoresponders: %d\n", limits.maxautoresponders); printf("Max Mailinglists: %d\n", limits.maxmailinglists); printf("GID Flags:\n"); if (limits.disable_imap != 0) { printf(" NO_IMAP\n"); strncat(OptionString, "i", sizeof(OptionString)-strlen(OptionString)-1); } if (limits.disable_smtp != 0) { printf(" NO_SMTP\n"); strncat(OptionString, "s", sizeof(OptionString)-strlen(OptionString)-1); } if (limits.disable_pop != 0) { printf(" NO_POP\n"); strncat(OptionString, "p", sizeof(OptionString)-strlen(OptionString)-1); } if (limits.disable_webmail != 0) { printf(" NO_WEBMAIL\n"); strncat(OptionString, "w", sizeof(OptionString)-strlen(OptionString)-1); } if (limits.disable_passwordchanging != 0) { printf(" NO_PASSWD_CHNG\n"); strncat(OptionString, "d", sizeof(OptionString)-strlen(OptionString)-1); } if (limits.disable_relay != 0) { printf(" NO_RELAY\n"); strncat(OptionString, "r", sizeof(OptionString)-strlen(OptionString)-1); } if (limits.disable_dialup != 0) { printf(" NO_DIALUP\n"); strncat(OptionString, "u", sizeof(OptionString)-strlen(OptionString)-1); } if (limits.disable_spamassassin != 0) { printf(" NO_SPAMASSASSIN\n"); strncat(OptionString, "c", sizeof(OptionString)-strlen(OptionString)-1); } if (limits.delete_spam != 0) { printf(" DEL_SPAM\n"); strncat(OptionString, "x", sizeof(OptionString)-strlen(OptionString)-1); } if (limits.disable_maildrop != 0) { printf(" NO_MAILDROP\n"); strncat(OptionString, "m", sizeof(OptionString)-strlen(OptionString)-1); } printf("Flags (for commandline): %s\n", OptionString); printf("Flags for non postmaster accounts:"); printf("\n pop account: "); printf ((limits.perm_account & VLIMIT_DISABLE_CREATE ? "DENY_CREATE " :"ALLOW_CREATE ") ); printf ((limits.perm_account & VLIMIT_DISABLE_MODIFY ? "DENY_MODIFY " :"ALLOW_MODIFY ") ); printf ((limits.perm_account & VLIMIT_DISABLE_DELETE ? "DENY_DELETE " :"ALLOW_DELETE ") ); printf("\n alias: "); printf ((limits.perm_alias & VLIMIT_DISABLE_CREATE ? "DENY_CREATE " :"ALLOW_CREATE ") ); printf ((limits.perm_alias & VLIMIT_DISABLE_MODIFY ? "DENY_MODIFY " :"ALLOW_MODIFY ") ); printf ((limits.perm_alias & VLIMIT_DISABLE_DELETE ? "DENY_DELETE " :"ALLOW_DELETE ") ); printf("\n forward: "); printf ((limits.perm_forward & VLIMIT_DISABLE_CREATE ? "DENY_CREATE " :"ALLOW_CREATE ") ); printf ((limits.perm_forward & VLIMIT_DISABLE_MODIFY ? "DENY_MODIFY " :"ALLOW_MODIFY ") ); printf ((limits.perm_forward & VLIMIT_DISABLE_DELETE ? "DENY_DELETE " :"ALLOW_DELETE ") ); printf("\n autoresponder: "); printf ((limits.perm_autoresponder & VLIMIT_DISABLE_CREATE ? "DENY_CREATE " :"ALLOW_CREATE ") ); printf ((limits.perm_autoresponder & VLIMIT_DISABLE_MODIFY ? "DENY_MODIFY " :"ALLOW_MODIFY ") ); printf ((limits.perm_autoresponder & VLIMIT_DISABLE_DELETE ? "DENY_DELETE " :"ALLOW_DELETE ") ); printf("\n mailinglist: "); printf ((limits.perm_maillist & VLIMIT_DISABLE_CREATE ? "DENY_CREATE " :"ALLOW_CREATE ") ); printf ((limits.perm_maillist & VLIMIT_DISABLE_MODIFY ? "DENY_MODIFY " :"ALLOW_MODIFY ") ); printf ((limits.perm_maillist & VLIMIT_DISABLE_DELETE ? "DENY_DELETE " :"ALLOW_DELETE ") ); printf("\n mailinglist users: "); printf ((limits.perm_maillist_users & VLIMIT_DISABLE_CREATE ? "DENY_CREATE " :"ALLOW_CREATE ") ); printf ((limits.perm_maillist_users & VLIMIT_DISABLE_MODIFY ? "DENY_MODIFY " :"ALLOW_MODIFY ") ); printf ((limits.perm_maillist_users & VLIMIT_DISABLE_DELETE ? "DENY_DELETE " :"ALLOW_DELETE ") ); printf("\n mailinglist moderators: "); printf ((limits.perm_maillist_moderators & VLIMIT_DISABLE_CREATE ? "DENY_CREATE " :"ALLOW_CREATE ") ); printf ((limits.perm_maillist_moderators & VLIMIT_DISABLE_MODIFY ? "DENY_MODIFY " :"ALLOW_MODIFY ") ); printf ((limits.perm_maillist_moderators & VLIMIT_DISABLE_DELETE ? "DENY_DELETE " :"ALLOW_DELETE ") ); printf("\n quota: "); printf ((limits.perm_quota & VLIMIT_DISABLE_CREATE ? "DENY_CREATE " :"ALLOW_CREATE ") ); printf ((limits.perm_quota & VLIMIT_DISABLE_MODIFY ? "DENY_MODIFY " :"ALLOW_MODIFY ") ); printf ((limits.perm_quota & VLIMIT_DISABLE_DELETE ? "DENY_DELETE " :"ALLOW_DELETE ") ); printf("\n default quota: "); printf ((limits.perm_defaultquota & VLIMIT_DISABLE_CREATE ? "DENY_CREATE " :"ALLOW_CREATE ") ); printf ((limits.perm_defaultquota & VLIMIT_DISABLE_MODIFY ? "DENY_MODIFY " :"ALLOW_MODIFY ") ); printf ((limits.perm_defaultquota & VLIMIT_DISABLE_DELETE ? "DENY_DELETE " :"ALLOW_DELETE ") ); printf("\n"); printf("Domain Quota: %d MB\n", limits.diskquota); printf("Default User Quota: %d bytes\n", limits.defaultquota); printf("Max Domain Messages: %d\n", limits.maxmsgcount); printf("Default Max Messages per User: %d\n", limits.defaultmaxmsgcount); return(vexit(0)); } if (MaxPopAccounts[0] != 0) { limits.maxpopaccounts = atoi(MaxPopAccounts); } if (MaxAliases[0] != 0) { limits.maxaliases = atoi(MaxAliases); } if (MaxForwards[0] != 0) { limits.maxforwards = atoi(MaxForwards); } if (MaxAutoresponders[0] != 0) { limits.maxautoresponders = atoi(MaxAutoresponders); } if (MaxMailinglists[0] != 0) { limits.maxmailinglists = atoi(MaxMailinglists); } /* quota & message count limits */ if (DomainQuota[0] != 0) { limits.diskquota = atoi(DomainQuota); } if (DomainMaxMsgCount[0] != 0) { limits.maxmsgcount = atoi(DomainMaxMsgCount); } if (DefaultUserQuota[0] != 0) { limits.defaultquota = atoi(format_maildirquota(DefaultUserQuota)); } if (DefaultUserMaxMsgCount[0] != 0) { limits.defaultmaxmsgcount = atoi(DefaultUserMaxMsgCount); } if (GidFlag == 1) { GidFlag = 0; limits.disable_dialup = 0; limits.disable_passwordchanging = 0; limits.disable_pop = 0; limits.disable_smtp = 0; limits.disable_webmail = 0; limits.disable_imap = 0; limits.disable_relay = 0; limits.disable_spamassassin = 0; limits.delete_spam = 0; limits.disable_maildrop = 0; for (i=0; i<(int)strlen(GidFlagString); i++) { switch(GidFlagString[i]) { case 'u': limits.disable_dialup = 1; break; case 'd': limits.disable_passwordchanging = 1; break; case 'p': limits.disable_pop = 1; break; case 's': limits.disable_smtp = 1; break; case 'w': limits.disable_webmail = 1; break; case 'i': limits.disable_imap = 1; break; case 'r': limits.disable_relay = 1; break; case 'c': limits.disable_spamassassin = 1; break; case 'x': limits.delete_spam = 1; break; case 'm': limits.disable_maildrop = 1; break; } } } if (PermAccountFlag == 1) { limits.perm_account=0; for (i=0; i<(int)strlen(PermAccountFlagString); i++) { switch(PermAccountFlagString[i]) { case 'a': limits.perm_account|=VLIMIT_DISABLE_ALL; break; case 'c': limits.perm_account|=VLIMIT_DISABLE_CREATE; break; case 'm': limits.perm_account|=VLIMIT_DISABLE_MODIFY; break; case 'd': limits.perm_account|=VLIMIT_DISABLE_DELETE; break; } } } if (PermAliasFlag == 1) { limits.perm_alias=0; for (i=0; i<(int)strlen(PermAliasFlagString); i++) { switch(PermAliasFlagString[i]) { case 'a': limits.perm_alias|=VLIMIT_DISABLE_ALL; break; case 'c': limits.perm_alias|=VLIMIT_DISABLE_CREATE; break; case 'm': limits.perm_alias|=VLIMIT_DISABLE_MODIFY; break; case 'd': limits.perm_alias|=VLIMIT_DISABLE_DELETE; break; } } } if (PermForwardFlag == 1) { limits.perm_forward=0; for (i=0; i<(int)strlen(PermForwardFlagString); i++) { switch(PermForwardFlagString[i]) { case 'a': limits.perm_forward|=VLIMIT_DISABLE_ALL; break; case 'c': limits.perm_forward|=VLIMIT_DISABLE_CREATE; break; case 'm': limits.perm_forward|=VLIMIT_DISABLE_MODIFY; break; case 'd': limits.perm_forward|=VLIMIT_DISABLE_DELETE; break; } } } if (PermAutoresponderFlag == 1) { limits.perm_autoresponder=0; for (i=0; i<(int)strlen(PermAutoresponderFlagString); i++) { switch(PermAutoresponderFlagString[i]) { case 'a': limits.perm_autoresponder|=VLIMIT_DISABLE_ALL; break; case 'c': limits.perm_autoresponder|=VLIMIT_DISABLE_CREATE; break; case 'm': limits.perm_autoresponder|=VLIMIT_DISABLE_MODIFY; break; case 'd': limits.perm_autoresponder|=VLIMIT_DISABLE_DELETE; break; } } } if (PermMaillistFlag == 1) { limits.perm_maillist=0; for (i=0; i<(int)strlen(PermMaillistFlagString); i++) { switch(PermMaillistFlagString[i]) { case 'a': limits.perm_maillist|=VLIMIT_DISABLE_ALL; break; case 'c': limits.perm_maillist|=VLIMIT_DISABLE_CREATE; break; case 'm': limits.perm_maillist|=VLIMIT_DISABLE_MODIFY; break; case 'd': limits.perm_maillist|=VLIMIT_DISABLE_DELETE; break; } } } if (PermMaillistUsersFlag == 1) { limits.perm_maillist_users=0; for (i=0; i<(int)strlen(PermMaillistUsersFlagString); i++) { switch(PermMaillistUsersFlagString[i]) { case 'a': limits.perm_maillist_users|=VLIMIT_DISABLE_ALL; break; case 'c': limits.perm_maillist_users|=VLIMIT_DISABLE_CREATE; break; case 'm': limits.perm_maillist_users|=VLIMIT_DISABLE_MODIFY; break; case 'd': limits.perm_maillist_users|=VLIMIT_DISABLE_DELETE; break; } } } if (PermMaillistModeratorsFlag == 1) { limits.perm_maillist_moderators=0; for (i=0; i<(int)strlen(PermMaillistModeratorsFlagString); i++) { switch(PermMaillistModeratorsFlagString[i]) { case 'a': limits.perm_maillist_moderators|=VLIMIT_DISABLE_ALL; break; case 'c': limits.perm_maillist_moderators|=VLIMIT_DISABLE_CREATE; break; case 'm': limits.perm_maillist_moderators|=VLIMIT_DISABLE_MODIFY; break; case 'd': limits.perm_maillist_moderators|=VLIMIT_DISABLE_DELETE; break; } } } if (PermQuotaFlag == 1) { limits.perm_quota=0; for (i=0; i<(int)strlen(PermQuotaFlagString); i++) { switch(PermQuotaFlagString[i]) { case 'a': limits.perm_quota|=VLIMIT_DISABLE_ALL; break; case 'c': limits.perm_quota|=VLIMIT_DISABLE_CREATE; break; case 'm': limits.perm_quota|=VLIMIT_DISABLE_MODIFY; break; case 'd': limits.perm_quota|=VLIMIT_DISABLE_DELETE; break; } } } if (PermDefaultQuotaFlag == 1) { limits.perm_defaultquota=0; for (i=0; i<(int)strlen(PermDefaultQuotaFlagString); i++) { switch(PermDefaultQuotaFlagString[i]) { case 'a': limits.perm_defaultquota|=VLIMIT_DISABLE_ALL; break; case 'c': limits.perm_defaultquota|=VLIMIT_DISABLE_CREATE; break; case 'm': limits.perm_defaultquota|=VLIMIT_DISABLE_MODIFY; break; case 'd': limits.perm_defaultquota|=VLIMIT_DISABLE_DELETE; break; } } } if (EditDefaultLimits) { if (vlimits_write_limits_file(VLIMITS_DEFAULT_FILE, &limits)) { printf ("Failed to write vlimits.default file"); return (vexit(-1)); } } else { if (vset_limits(Domain,&limits) != 0) { printf ("Failed to vset_limits\n"); return (vexit(-1)); } } } return(vexit(0)); }