/* * Show filelist from current area, called from the menu. */ void Copy_Home() { char *File, *temp1, *temp2; int err, Found = FALSE; struct _fdbarea *fdb_area = NULL; File = calloc(81, sizeof(char)); temp1 = calloc(PATH_MAX, sizeof(char)); temp2 = calloc(PATH_MAX, sizeof(char)); Enter(1); /* Please enter filename: */ pout(YELLOW, BLACK, (char *) Language(245)); colour(CFG.InputColourF, CFG.InputColourB); GetstrC(File, 80); Enter(2); if ((strcmp(File, "")) == 0) { /* No filename entered, Aborting. */ pout(CFG.HiliteF, CFG.HiliteB, (char *) Language(246)); Enter(2); Pause(); free(File); free(temp1); free(temp2); return; } if (*(File) == '/' || *(File) == ' ') { /* Illegal Filename! */ pout(CFG.HiliteF, CFG.HiliteB, (char *) Language(247)); Enter(2); Pause(); free(File); free(temp1); free(temp2); return; } if (Access(exitinfo.Security, area.DLSec) == FALSE) { pout(YELLOW, BLACK, (char *) Language(236)); Enter(2); Pause(); free(File); free(temp1); free(temp2); return; } if ((fdb_area = mbsedb_OpenFDB(iAreaNumber, 30)) == NULL) { free(File); free(temp1); free(temp2); return; } while (fread(&fdb, fdbhdr.recsize, 1, fdb_area->fp) == 1) { if ((strcasecmp(File, fdb.Name) == 0) || (strcasecmp(File, fdb.LName) == 0)) { Found = TRUE; if (((fdb.Size + Quota()) > (CFG.iQuota * 1048576))) { /* You have not enough diskspace free to copy this file */ pout(CFG.HiliteF, CFG.HiliteB, (char *) Language(279)); Enter(1); Syslog('+', "Copy homedir, not enough quota"); } else { snprintf(temp1, PATH_MAX, "%s/%s", area.Path, fdb.LName); /* Use real longname here */ snprintf(temp2, PATH_MAX, "%s/%s/wrk/%s", CFG.bbs_usersdir, exitinfo.Name, File); colour(CFG.TextColourF, CFG.TextColourB); /* Start copy: */ pout(CFG.HiliteF, CFG.HiliteB, (char *) Language(289)); PUTSTR(File); PUTCHAR(' '); Syslog('b', "Copy from : %s", temp1); Syslog('b', "Copy to : %s", temp2); if ((err = file_cp(temp1, temp2))) { /* Failed! */ pout(CFG.HiliteF, CFG.HiliteB, (char *) Language(353)); WriteError("Copy %s to homedir failed, code %d", File, err); } else { /* Ok */ PUTSTR((char *) Language(200)); Syslog('+', "Copied %s from area %d to homedir", File, iAreaNumber); } Enter(1); } } } mbsedb_CloseFDB(fdb_area); if (!Found) { /* File does not exist, please try again ... */ pout(CFG.HiliteF, CFG.HiliteB, (char *) Language(296)); Enter(1); } Pause(); free(File); free(temp1); free(temp2); }
void do_quota ( dbref executor, dbref caller, dbref enactor, int eval, int key, int nargs, UTF8 *arg1, UTF8 *arg2, const UTF8 *cargs[], int ncargs ) { UNUSED_PARAMETER(caller); UNUSED_PARAMETER(enactor); UNUSED_PARAMETER(eval); UNUSED_PARAMETER(nargs); UNUSED_PARAMETER(cargs); UNUSED_PARAMETER(ncargs); if (!(mudconf.quotas || Quota(executor))) { notify_quiet(executor, T("Quotas are not enabled.")); return; } if ((key & QUOTA_TOT) && (key & QUOTA_REM)) { notify_quiet(executor, T("Illegal combination of switches.")); return; } dbref who; int value = 0, i; bool set = false; // Show or set all quotas if requested. // if (key & QUOTA_ALL) { if (arg1 && *arg1) { value = mux_atol(arg1); set = true; } else if (key & (QUOTA_SET | QUOTA_FIX)) { value = 0; set = true; } if (set) { STARTLOG(LOG_WIZARD, "WIZ", "QUOTA"); log_name(executor); log_text(T(" changed everyone\xE2\x80\x99s quota")); ENDLOG; } DO_WHOLE_DB(i) { if (isPlayer(i)) { if (set) { mung_quotas(i, key, value); } show_quota(executor, i); } } return; } // Find out whose quota to show or set. // if (!arg1 || *arg1 == '\0') { who = Owner(executor); } else { who = lookup_player(executor, arg1, true); if (!Good_obj(who)) { notify_quiet(executor, T("Not found.")); return; } } // Make sure we have permission to do it. // if (!Quota(executor)) { if (arg2 && *arg2) { notify_quiet(executor, NOPERM_MESSAGE); return; } if (Owner(executor) != who) { notify_quiet(executor, NOPERM_MESSAGE); return; } } if (arg2 && *arg2) { set = true; value = mux_atol(arg2); } else if (key & QUOTA_FIX) { set = true; value = 0; } if (set) { STARTLOG(LOG_WIZARD, "WIZ", "QUOTA"); log_name(executor); log_text(T(" changed the quota of ")); log_name(who); ENDLOG; mung_quotas(who, key, value); } show_quota(executor, who); }