Пример #1
0
void CreateConfigurationFile(int FileNameIndex, int FileDataIndex, Bool PrintStuff)
    {
    discardable *d;

    if (!filexists(citfiles[FileNameIndex]))
        {
        if ((d = readData(16, FileDataIndex, FileDataIndex)) != NULL)
            {
            FILE *File;

            if ((File = fopen(citfiles[FileNameIndex], FO_W)) != NULL)
                {
                if (PrintStuff)
                    {
#ifndef WINCIT
                    cPrintf(getcfgmsg(133), citfiles[FileNameIndex]);
                    doccr();
#endif
                    }

                const char **Data = (const char **) d->aux;

                for (int i = 0; !SameString(Data[i], getcfgmsg(244)); i++)
                    {
                    fprintf(File, getmsg(472), Data[i], bn);
                    }

                fclose(File);
                }
            else
                {
                if (PrintStuff)
                    {
#ifndef WINCIT
                    cPrintf(getcfgmsg(134), citfiles[FileNameIndex]);
                    doccr();
#endif
                    }
                }

            discardData(d);
            }
        else
            {
            if (PrintStuff)
                {
                cOutOfMemory(51);
                }
            }
        }
    }
Пример #2
0
static void dump_node_ddata(void)
    {
    if (!(--read_node_counter))
        {
#ifndef WINCIT
        // Rather than implement a locking mechanism to ensure this is
        // never freed accidentally, we just leave it loaded all of the
        // time -- there's lots of memory on a Windows machine, right? :)

        discardData(nddd);
        nddd = NULL;
#endif
        }

    if (read_node_counter < 0)
        {
        read_node_counter = 0;
        }
    }
Пример #3
0
void TERMWINDOWMEMBER ListAllEvents(void)
	{
	doCR();

	discardable *crdd;
	if ((crdd = readData(9)) == NULL)
		{
		mPrintf(getmsg(59));
		return;
		}

	OC.SetOutFlag(OUTOK);

	if (Cron.HasEvents())
		{
		termCap(TERM_BOLD);
		mPrintf(getsysmsg(169));
		termCap(TERM_NORMAL);
		doCR();

		const char **crontypes = (const char **) crdd->aux;
		CronEventListS *theEvent;

		for (int i = 1; (theEvent = Cron.GetEventNum(i)) != NULL; i++)
			{
			CronEventC Evt = theEvent->Event;

			char dtstr[20], etstr[20];

			mPrintf(getsysmsg(352), i,

					Cron.IsOnEvent(theEvent) ? getsysmsg(353) : spc,

					Evt.CanDo() ? getsysmsg(354) : (Evt.LastAttemptFailed() ? getsysmsg(355) : spc),

					crontypes[Evt.GetType()], Evt.GetString(),

					Evt.IsZapped() ? getsysmsg(170) : itoa(Evt.GetRedo(), dtstr, 10),

					Evt.IsZapped() ? getsysmsg(170) : itoa(Evt.GetRetry(), etstr, 10));

			if (Evt.GetLastSuccess())
				{
				strftime(dtstr, 19, getsysmsg(351), Evt.GetLastSuccess());
				mPrintf(pcts, dtstr);
				}
			else
				{
				mPrintf(getsysmsg(171));
				}

			if (Evt.GetLastTried())
				{
				strftime(dtstr, 19, getsysmsg(351), Evt.GetLastTried());
				mPrintfCR(pcts, dtstr);
				}
			else
				{
				mPrintfCR(getsysmsg(172));
				}
			}

		if (Cron.IsPaused())
			{
			CRmPrintfCR(getsysmsg(173));
			}

		if (!CurrentUser->IsExpert())
			{
			CRmPrintf(getsysmsg(174));
			CRmPrintf(getsysmsg(175));
			CRmPrintfCR(getsysmsg(176));
			}
		}
	else
		{
		mPrintfCR(getsysmsg(79));
		}

	discardData(crdd);
	}
Пример #4
0
RData::~RData () {
	RK_TRACE (RBACKEND);

	discardData ();
}
Пример #5
0
static Bool initCitadel(void)
    {
    if (!read_cfg_messages())
        {
#ifdef WINCIT
        char Buffer[128];
        sprintf(Buffer, getmsg(188), getmsg(671));
        MessageBox(NULL, Buffer, NULL, MB_ICONSTOP | MB_OK);
#else
        printf(getmsg(188), getmsg(671));
#endif
        return (FALSE);
        }

    checkfiles();

    initExtDrivers();

    get_os();

	cfg.battr = 0xff;
    setscreen();

    logo(TRUE); // no go for debug version; td32 go crash crash

    init_internal_sound();

	// some mouse initialization technology!!!!
    initMouseHandler();
    hideCounter = 1;

    if (time(NULL) < 700000000L)
        {
#ifdef WINCIT
        MessageBox(NULL, getcfgmsg(119), NULL, MB_ICONSTOP | MB_OK);
#else
        doccr();
        doccr();
        cPrintf(getcfgmsg(119));
        doccr();
#endif
        dump_cfg_messages();
        return (FALSE);
        }


    static char prompt[92];
    static char citadel[92];
    char *envprompt;
    char *citprompt;

    envprompt = getenv(getcfgmsg(120));
    citprompt = getenv(getcfgmsg(121));
    if (citprompt)
        {
        sprintf(prompt, getcfgmsg(122), citprompt);
        }
    else if (envprompt)
        {
        sprintf(prompt, getcfgmsg(123), envprompt);
        }
    else
        {
        strcpy(prompt, getcfgmsg(124));
        }
    putenv(prompt);

    sprintf(citadel, getcfgmsg(125), programName, version);
    putenv(citadel);


#ifndef WINCIT
    OC.whichIO = CONSOLE;
    OC.SetOutFlag(OUTOK);
    OC.Echo = BOTH;
    OC.setio();
#endif

    VerifyHeap(1);

    // If we aren't reconfiguring, load the tables...
    if (!reconfig)
        {
        // Start by reading ETC.TAB
        getcwd(etcpath, 64);

        FILE *fd;
        if ((fd = fopen(etcTab, FO_RB)) != NULL)
            {
            if (filelength(fileno(fd)) != (long) sizeof(config) ||
					fread(&cfg, 1, sizeof(config), fd) != (long) sizeof(config))
                {
                memset(&cfg, 0, sizeof(cfg));
                reconfig = TRUE;
                }

            fclose(fd);
            unlink(etcTab);


            // If ETC.TAB could be loaded, load the rest
            if (!reconfig)
                {
                changedir(cfg.homepath);

                allocateTables();

                if (!LogTab.Load() || !MessageDat.LoadTable() || !RoomTab.Load())
                    {
                    reconfig = TRUE;
                    }

                Cron.ReadTable(WC_TWpn);
                }
            }
        else
            {
            if (!batchmode)
                {
#ifdef WINCIT
                MessageBox(NULL, "No ETC.TAB.", NULL, MB_ICONSTOP | MB_OK);
#else
                doccr();

                discardable *d;

                if ((d = readData(6)) != NULL)
                    {
                    int i;

                    for (i = 0; ((char **) d->next->aux)[i][0] != '#'; i++)
                        {
                        cPrintf(pcts, ((char **) d->next->aux)[i]);
                        doccr();
                        }

                    doccr();

                    discardData(d);
                    }
                else
                    {
                    cOutOfMemory(28);
                    }

                DeinitializeTimer();
                critical(FALSE);
#endif
                exit(1);
                }

            reconfig = TRUE;
            }
        }



    if (reconfig)
        {
        cfg.attr = 7;

#ifndef WINCIT
        pause(200);
        cls(SCROLL_SAVE);

        cCPrintf(getcfgmsg(126));
        doccr();
#endif


        if (!configcit())
            {
#ifdef WINCIT
            MessageBox(NULL, getcfgmsg(127), NULL, MB_ICONSTOP | MB_OK);
#else
            doccr();
            doccr();
            cPrintf(getcfgmsg(127));
            doccr();
#endif
            dump_cfg_messages();
            return (FALSE);
            }


#ifndef WINCIT
        setdefaultTerm(TT_ANSI);
        CurrentUser->SetWidth(80);
#endif

        Cron.ReadCronCit(WC_TWpn);
        }
    else
        {
#ifndef WINCIT
        if (!CreateScrollBackBuffer())
            {
            cPrintf(getcfgmsg(60));
            doccr();
            }
#endif


        if (readconfigcit)  // forced to read in config.cit
            {
            if (!readconfig(NULL, 1))
                {
#ifdef WINCIT
                MessageBox(NULL, getcfgmsg(129), NULL, MB_ICONSTOP | MB_OK);
#else
                doccr();
                doccr();
                cPrintf(getcfgmsg(129));
                doccr();
#endif
                dump_cfg_messages();
                return (FALSE);
                }
            }
        }

    VerifyHeap(1);

    makeBorders();
    readBordersDat();

    if (cmd_nobells)
        {
        cfg.noBells = 2;
        }

    if (cmd_nochat)
        {
        cfg.noChat = TRUE;
        }

    if (cmd_mdata != CERROR)
        {
        cfg.mdata = cmd_mdata;
        }

    if (*cfg.f6pass)
        {
        if (SameString(cfg.f6pass, getmsg(670)))
            {
            ConsoleLock.LockF6();
            }
        else
            {
            ConsoleLock.Lock();
            }
        }


#ifndef WINCIT
    if (cfg.ovrEms)
        {
        if (_OvrInitEms(0, 0, 0))
            {
            cPrintf(getcfgmsg(130));
            doccr();
            pause(200);
            }
        }

    if (cfg.ovrExt)
        {
        if (_OvrInitExt(0, 0))
            {
            cPrintf(getcfgmsg(131));
            doccr();
            pause(200);
            }
        }

    CommPort->Init();
    setscreen();
#endif

    logo(TRUE); // no go for debug version; td32 go crash crash

#ifndef WINCIT
    StatusLine.Update(WC_TWp);
#endif

    if (cfg.msgpath[(strlen(cfg.msgpath) - 1)] == '\\')
        {
        cfg.msgpath[(strlen(cfg.msgpath) - 1)] = '\0';
        }

    // move to home path
    changedir(cfg.homepath);
    char FileName[128];

    ReIndexFileInfo();  // keep fileinfo.dat nice and pretty

    // open message file
    if (!MessageDat.OpenMessageFile(cfg.msgpath))
		{
		illegal(getmsg(78), MessageDat.GetFilename());
		}

    // Then room file
    sprintf(FileName, sbs, cfg.homepath, roomDat);
    openFile(FileName, &RoomFile);

    citOpen(cfg.trapfile, CO_A, &TrapFile);
    initMenus();
    dump_cfg_messages();

    if(!read_tr_messages())
        {
        errorDisp(getmsg(172));
        }
    else
        {
#ifdef WINCIT
    trap(T_SYSOP, "", gettrmsg(37));
#else
    trap(T_SYSOP, gettrmsg(37));
#endif
        dump_tr_messages();
        }

        read_cfg_messages();            // uh-oh!

    if (!GroupData.Load())
        {
        return (FALSE);
        }

    if (!HallData.Load())
        {
        return (FALSE);
        }

    getRoomPos();

    if (cfg.accounting)
        {
        ReadGrpdataCit(WC_TWpn);
        }

    ReadExternalCit(WC_TWpn);
    ReadProtocolCit(WC_TWpn);
    ReadMdmresltCit(WC_TWpn);
    ReadCommandsCit(WC_TWpn);


#ifndef WINCIT
    ReadMCICit(FALSE);

    CurrentRoom->Load(LOBBY);
    thisRoom = LOBBY;
    checkdir();

    if (!slv_door)
        {
        CITWINDOW *w = CitWindowsMsg(NULL, getmsg(19));

        Initport();
        Initport();

        if (w)
            {
            destroyCitWindow(w, FALSE);
            }
        }
    else
        {
        CommPort->Enable();
        }

    OC.whichIO = MODEM;
    OC.setio();
#endif


    // record when we put system up
    time(&uptimestamp);

#ifndef WINCIT
    setdefaultconfig(FALSE);
    Talley->Fill();
#endif
    logo(FALSE);

    VerifyHeap(1);

    dump_cfg_messages();
    compactMemory(1);

    return (TRUE);
    }
Пример #6
0
void TERMWINDOWMEMBER setdefaultconfig(Bool KeepTerm)
    {
    int oldATT[ATTR_NUM];

    oldATT[ATTR_NORMAL]     = CurrentUser->GetAttribute(ATTR_NORMAL);
    oldATT[ATTR_BLINK]      = CurrentUser->GetAttribute(ATTR_BLINK);
    oldATT[ATTR_REVERSE]    = CurrentUser->GetAttribute(ATTR_REVERSE);
    oldATT[ATTR_BOLD]       = CurrentUser->GetAttribute(ATTR_BOLD);
    oldATT[ATTR_UNDERLINE]  = CurrentUser->GetAttribute(ATTR_UNDERLINE);

    prevChar = ' '; // why here?

    CurrentUser->Clear();

    // set all default defaults...
    CurrentUser->SetWidth(80);
    CurrentUser->SetCredits(3600);

    CurrentUser->SetLinefeeds(TRUE);
    CurrentUser->SetOldToo(TRUE);
    CurrentUser->SetNetUser(TRUE);
    CurrentUser->SetViewRoomDesc(TRUE);
    CurrentUser->SetEnterBorders(TRUE);
    CurrentUser->SetViewTitleSurname(TRUE);
    CurrentUser->SetViewSubjects(TRUE);
    CurrentUser->SetViewSignatures(TRUE);
    CurrentUser->SetMinibin(TRUE);
    CurrentUser->SetViewRoomInfoLines(TRUE);
    CurrentUser->SetViewHallDescription(TRUE);
    CurrentUser->SetViewBorders(TRUE);
    CurrentUser->SetSeeOwnChats(TRUE);
    CurrentUser->SetHearLaughter(TRUE);

    if (!KeepTerm)
        {
        CurrentUser->SetDefaultColors(TermCap->IsColor());
        }
    else
        {
        CurrentUser->SetAttribute(ATTR_NORMAL,      oldATT[ATTR_NORMAL]);
        CurrentUser->SetAttribute(ATTR_BLINK,       oldATT[ATTR_BLINK]);
        CurrentUser->SetAttribute(ATTR_REVERSE,     oldATT[ATTR_REVERSE]);
        CurrentUser->SetAttribute(ATTR_BOLD,        oldATT[ATTR_BOLD]);
        CurrentUser->SetAttribute(ATTR_UNDERLINE,   oldATT[ATTR_UNDERLINE]);
        }

    CurrentUser->SetPromptFormat(cfg.prompt);           // "%n^A2%r%e"
    CurrentUser->SetDateStamp(cfg.datestamp);           // "%x %X %p"
    CurrentUser->SetVerboseDateStamp(cfg.vdatestamp);   // "%A %x %X %p"
    CurrentUser->SetNetPrefix(cfg.netPrefix);           // "3*0"
    CurrentUser->SetMorePrompt(cfg.moreprompt);         // "<more>"

    if (!KeepTerm)
        {
        setdefaultTerm(TT_DUMB);
        }

    if (cfg.accounting)
        {
        CurrentUserAccount->Negotiate(CurrentUser);
        }

    changedir(cfg.homepath);

    discardable *du = readData(8, 0, 0);

    if (du)
        {
        FILE *defusr;
        if ((defusr = fopen(citfiles[C_DEFUSER_CIT], FO_R)) != NULL)
            {
            const char **duk = (const char **) du->aux;
            char line[90];
            char *words[256];

            while (fgets(line, 90, defusr) != NULL)
                {
                if (line[0] != '#')
                    {
                    continue;
                    }

                const int count = parse_it(words, line);

                if (count > 1)
                    {
                    int i;
                    for (i = 0; i < DUK_NUM; i++)
                        {
                        if (SameString(words[0] + 1, duk[i]))
                            {
                            break;
                            }
                        }

                    switch (i)
                        {
                        case DUK_FORWARD:
                            {
                            CurrentUser->SetForwardAddr(words[1]);
                            break;
                            }

                        case DUK_SURNAME:
                            {
                            CurrentUser->SetSurname(words[1]);
                            break;
                            }

                        case DUK_TITLE:
                            {
                            CurrentUser->SetTitle(words[1]);
                            break;
                            }

                        case DUK_BOLD:
                            {
                            CurrentUser->SetAttribute(ATTR_BOLD, atoi(words[1]));
                            break;
                            }

                        case DUK_NULLS:
                            {
                            CurrentUser->SetNulls(atoi(words[1]));
                            break;
                            }

                        case DUK_WIDTH:
                            {
                            CurrentUser->SetWidth(atoi(words[1]));
                            break;
                            }

                        case DUK_CREDITS:
                            {
                            CurrentUser->SetCredits(60 * atol(words[1]));
                            break;
                            }

                        case DUK_INVERSE:
                            {
                            CurrentUser->SetAttribute(ATTR_REVERSE, atoi(words[1]));
                            break;
                            }

                        case DUK_BLINK:
                            {
                            CurrentUser->SetAttribute(ATTR_BLINK, atoi(words[1]));
                            break;
                            }

                        case DUK_UNDERLINE:
                            {
                            CurrentUser->SetAttribute(ATTR_UNDERLINE, atoi(words[1]));
                            break;
                            }

                        case DUK_NORMAL:
                            {
                            CurrentUser->SetAttribute(ATTR_NORMAL, atoi(words[1]));
                            break;
                            }

                        case DUK_PROTOCOL:
                            {
                            CurrentUser->SetDefaultProtocol(words[1][0]);
                            break;
                            }

                        case DUK_PROMPT:
                            {
                            CurrentUser->SetPromptFormat(words[1]);
                            break;
                            }

                        case DUK_DSTAMP:
                            {
                            CurrentUser->SetDateStamp(words[1]);
                            break;
                            }

                        case DUK_VDSTAMP:
                            {
                            CurrentUser->SetVerboseDateStamp(words[1]);
                            break;
                            }

                        case DUK_SIGNATURE:
                            {
                            CurrentUser->SetSignature(words[1]);
                            break;
                            }

                        case DUK_NETPREFIX:
                            {
                            CurrentUser->SetNetPrefix(words[1]);
                            break;
                            }

                        case DUK_ADDR1:
                            {
                            CurrentUser->SetMailAddr1(words[1]);
                            break;
                            }

                        case DUK_ADDR2:
                            {
                            CurrentUser->SetMailAddr2(words[1]);
                            break;
                            }

                        case DUK_ADDR3:
                            {
                            CurrentUser->SetMailAddr3(words[1]);
                            break;
                            }

                        case DUK_POOP:
                            {
                            CurrentUser->SetPoopcount(atol(words[1]));
                            break;
                            }

                        case DUK_UCMASK:
                            {
                            CurrentUser->SetUpperOnly(atoi(words[1]));
                            break;
                            }

                        case DUK_EXPERT:
                            {
                            CurrentUser->SetExpert(atoi(words[1]));
                            break;
                            }

                        case DUK_AIDE:
                            {
                            CurrentUser->SetAide(atoi(words[1]));
                            break;
                            }

                        case DUK_TABS:
                            {
                            CurrentUser->SetTabs(atoi(words[1]));
                            break;
                            }

                        case DUK_OLDTOO:
                            {
                            CurrentUser->SetOldToo(atoi(words[1]));
                            break;
                            }

                        case DUK_UNLISTED:
                            {
                            CurrentUser->SetUnlisted(atoi(words[1]));
                            break;
                            }

                        case DUK_PERMANENT:
                            {
                            CurrentUser->SetPermanent(atoi(words[1]));
                            break;
                            }

                        case DUK_SYSOP:
                            {
                            CurrentUser->SetSysop(atoi(words[1]));
                            break;
                            }

                        case DUK_NODE:
                            {
                            CurrentUser->SetNode(atoi(words[1]));
                            break;
                            }

                        case DUK_NOACCOUNT:
                            {
                            CurrentUser->SetAccounting(!atoi(words[1]));
                            break;
                            }

                        case DUK_NOMAIL:
                            {
                            CurrentUser->SetMail(!atoi(words[1]));
                            break;
                            }

                        case DUK_ROOMTELL:
                            {
                            CurrentUser->SetViewRoomDesc(atoi(words[1]));
                            break;
                            }

                        case DUK_BORDERS:
                            {
                            CurrentUser->SetEnterBorders(atoi(words[1]));
                            break;
                            }

                        case DUK_VERIFIED:
                            {
                            CurrentUser->SetVerified(!!atoi(words[1]));
                            break;
                            }

                        case DUK_SURNAMLOK:
                            {
                            CurrentUser->SetSurnameLocked(atoi(words[1]));
                            break;
                            }

                        case DUK_LOCKHALL:
                            {
                            CurrentUser->SetDefaultHallLocked(atoi(words[1]));
                            break;
                            }

                        case DUK_DISPLAYTS:
                            {
                            CurrentUser->SetViewTitleSurname(atoi(words[1]));
                            break;
                            }

                        case DUK_SUBJECTS:
                            {
                            CurrentUser->SetViewSubjects(atoi(words[1]));
                            break;
                            }

                        case DUK_SIGNATURES:
                            {
                            CurrentUser->SetViewSignatures(atoi(words[1]));
                            break;
                            }

                        case DUK_DEFAULTHALL:
                            {
                            CurrentUser->SetDefaultHall(words[1]);
                            break;
                            }

                        case DUK_LINESSCREEN:
                            {
                            CurrentUser->SetLinesPerScreen(atoi(words[1]));
                            break;
                            }

                        case DUK_FORWARDNODE:
                            {
                            CurrentUser->SetForwardAddrNode(words[1]);

                            if (*words[1])
                                {
                                CurrentUser->SetForwardToNode(TRUE);
                                }

                            break;
                            }

                        case DUK_LFMASK:
                            {
                            CurrentUser->SetLinefeeds(atoi(words[1]));
                            break;
                            }

                        case DUK_PROBLEM:
                            {
                            CurrentUser->SetProblem(atoi(words[1]));
                            break;
                            }

                        case DUK_NETUSER:
                            {
                            CurrentUser->SetNetUser(atoi(words[1]));
                            break;
                            }

                        case DUK_NEXTHALL:
                            {
                            CurrentUser->SetAutoNextHall(atoi(words[1]));
                            break;
                            }

                        case DUK_PSYCHO:
                            {
                            CurrentUser->SetPsycho(atoi(words[1]));
                            break;
                            }

                        case DUK_TWIRLY:
                            {
                            CurrentUser->SetTwirly(atoi(words[1]));
                            break;
                            }

                        case DUK_VERBOSE:
                            {
                            CurrentUser->SetAutoVerbose(atoi(words[1]));
                            break;
                            }

                        case DUK_MSGPAUSE:
                            {
                            CurrentUser->SetPauseBetweenMessages(atoi(words[1]));
                            break;
                            }

                        case DUK_MINIBIN:
                            {
                            CurrentUser->SetMinibin(atoi(words[1]));
                            break;
                            }

                        case DUK_MSGCLS:
                            {
                            CurrentUser->SetClearScreenBetweenMessages(atoi(words[1]));
                            break;
                            }

                        case DUK_ROOMINFO:
                            {
                            CurrentUser->SetViewRoomInfoLines(atoi(words[1]));
                            break;
                            }

                        case DUK_HALLTELL:
                            {
                            CurrentUser->SetViewHallDescription(atoi(words[1]));
                            break;
                            }

                        case DUK_VERBOSECONT:
                            {
                            CurrentUser->SetVerboseContinue(atoi(words[1]));
                            break;
                            }

                        case DUK_VIEWCENSOR:
                            {
                            CurrentUser->SetViewCensoredMessages(atoi(words[1]));
                            break;
                            }

                        case DUK_SEEBORDERS:
                            {
                            CurrentUser->SetViewBorders(atoi(words[1]));
                            break;
                            }

                        case DUK_OUT300:
                            {
                            CurrentUser->SetOut300(atoi(words[1]));
                            break;
                            }

                        case DUK_LOCKUSIG:
                            {
                            CurrentUser->SetUserSignatureLocked(atoi(words[1]));
                            break;
                            }

                        case DUK_HIDEEXCL:
                            {
                            CurrentUser->SetHideMessageExclusions(atoi(words[1]));
                            break;
                            }

                        case DUK_NODOWNLOAD:
                            {
                            CurrentUser->SetDownload(!atoi(words[1]));
                            break;
                            }

                        case DUK_NOUPLOAD:
                            {
                            CurrentUser->SetUpload(!atoi(words[1]));
                            break;
                            }

                        case DUK_NOCHAT:
                            {
                            CurrentUser->SetChat(!atoi(words[1]));
                            break;
                            }

                        case DUK_PRINTFILE:
                            {
                            CurrentUser->SetPrintFile(atoi(words[1]));
                            break;
                            }

                        case DUK_REALNAME:
                            {
                            CurrentUser->SetRealName(words[1]);
                            break;
                            }

                        case DUK_PHONENUM:
                            {
                            CurrentUser->SetPhoneNumber(words[1]);
                            break;
                            }

                        case DUK_SPELLCHECK:
                            {
                            CurrentUser->SetSpellCheckMode(atoi(words[1]));
                            break;
                            }

                        case DUK_NOMAKEROOM:
                            {
                            CurrentUser->SetMakeRoom(!atoi(words[1]));
                            break;
                            }

                        case DUK_VERBOSELO:
                            {
                            CurrentUser->SetVerboseLogOut(atoi(words[1]));
                            break;
                            }

                        case DUK_CONFSAVE:
                            {
                            CurrentUser->SetConfirmSave(atoi(words[1]));
                            break;
                            }

                        case DUK_CONFABORT:
                            {
                            CurrentUser->SetConfirmAbort(atoi(words[1]));
                            break;
                            }

                        case DUK_CONFEOABORT:
                            {
                            CurrentUser->SetConfirmNoEO(atoi(words[1]));
                            break;
                            }

                        case DUK_USEPERSONAL:
                            {
                            CurrentUser->SetUsePersonalHall(atoi(words[1]));
                            break;
                            }

                        case DUK_YOUAREHERE:
                            {
                            CurrentUser->SetYouAreHere(atoi(words[1]));
                            break;
                            }

                        case DUK_IBMROOM:
                            {
                            CurrentUser->SetIBMRoom(atoi(words[1]));
                            break;
                            }

                        case DUK_WIDEROOM:
                            {
                            CurrentUser->SetWideRoom(atoi(words[1]));
                            break;
                            }

                        case DUK_MUSIC:
                            {
                            CurrentUser->SetMusic(atoi(words[1]));
                            break;
                            }

                        case DUK_MOREPROMPT:
                            {
                            CurrentUser->SetMorePrompt(words[1]);
                            break;
                            }

                        case DUK_NUMUSERSHOW:
                            {
                            CurrentUser->SetNumUserShow(atoi(words[1]));
                            break;
                            }

                        case DUK_CALLLIMIT:
                            {
                            CurrentUser->SetCallLimit(atoi(words[1]));
                            break;
                            }

                        case DUK_CHECKAPS:
                            {
                            CurrentUser->SetCheckApostropheS(atoi(words[1]));
                            break;
                            }

                        case DUK_CHECKALLCAPS:
                            {
                            CurrentUser->SetCheckAllCaps(atoi(words[1]));
                            break;
                            }

                        case DUK_CHECKDIGITS:
                            {
                            CurrentUser->SetCheckDigits(atoi(words[1]));
                            break;
                            }

                        case DUK_EXCLUDEENCRYPTED:
                            {
                            CurrentUser->SetExcludeEncryptedMessages(atoi(words[1]));
                            break;
                            }

                        case DUK_SHOWCOMMAS:
                            {
                            CurrentUser->SetViewCommas(atoi(words[1]));
                            break;
                            }

                        case DUK_PUNPAUSES:
                            {
                            CurrentUser->SetPUnPauses(atoi(words[1]));
                            break;
                            }

                        case DUK_KUSER:
                            {
                            CurrentUser->AddKill(KF_USER, words[1]);
                            break;
                            }

                        case DUK_KTEXT:
                            {
                            CurrentUser->AddKill(KF_TEXT, words[1]);
                            break;
                            }

                        case DUK_KNODE:
                            {
                            CurrentUser->AddKill(KF_NODE, words[1]);
                            break;
                            }

                        case DUK_KREG:
                            {
                            CurrentUser->AddKill(KF_REGION, words[1]);
                            break;
                            }

                        case DUK_TUSER:
                            {
                            if (count > 2)
                                {
                                CurrentUser->AddTagUser(words[1], words[2]);
                                }

                            break;
                            }

                        case DUK_DICTWORD:
                            {
                            CurrentUser->AddWordToDictionary(words[1]);
                            break;
                            }

                        case DUK_FINGER:
                            {
                            CurrentUser->SetFinger(words[1]);
                            break;
                            }

                        case DUK_USERDEF:
                            {
                            if (count > 2)
                                {
                                CurrentUser->SetUserDefined(words[1], words[2]);
                                }

                            break;
                            }

                        case DUK_REPLACE:
                            {
                            if (count > 2)
                                {
                                CurrentUser->AddReplace(words[1], words[2]);
                                }

                            break;
                            }

                        case DUK_ROMAN:
                            {
                            CurrentUser->SetRoman(atoi(words[1]));
                            break;
                            }

                        case DUK_SUPERSYSOP:
                            {
                            CurrentUser->SetSuperSysop(atoi(words[1]));
                            break;
                            }

                        case DUK_BUNNY:
                            {
                            CurrentUser->SetBunny(atoi(words[1]));
                            break;
                            }

                        case DUK_SSE_LOGONOFF:
                            {
                            CurrentUser->SetSELogOnOff(atoi(words[1]));
                            break;
                            }

                        case DUK_SSE_NEWMSG:
                            {
                            CurrentUser->SetSENewMessage(atoi(words[1]));
                            break;
                            }

                        case DUK_SSE_EXCLMSG:
                            {
                            CurrentUser->SetSEExclusiveMessage(atoi(words[1]));
                            break;
                            }

                        case DUK_SSE_CHATALL:
                            {
                            CurrentUser->SetSEChatAll(atoi(words[1]));
                            break;
                            }

                        case DUK_SSE_CHATROOM:
                            {
                            CurrentUser->SetSEChatRoom(atoi(words[1]));
                            break;
                            }

                        case DUK_SSE_CHATGROUP:
                            {
                            CurrentUser->SetSEChatGroup(atoi(words[1]));
                            break;
                            }

                        case DUK_SSE_CHATUSER:
                            {
                            CurrentUser->SetSEChatUser(atoi(words[1]));
                            break;
                            }

                        case DUK_SSE_RMINOUT:
                            {
                            CurrentUser->SetSERoomInOut(atoi(words[1]));
                            break;
                            }

                        case DUK_TERMTYPE:
                            {
                            CurrentUser->SetTermType(words[1]);
                            TermCap->Load(words[1]);
                            break;
                            }

                        case DUK_BANNED:
                            {
                            CurrentUser->SetBanned(atoi(words[1]));
                            break;
                            }

                        case DUK_KILLOWN:
                            {
                            CurrentUser->SetKillOwn(atoi(words[1]));
                            break;
                            }

                        case DUK_SEEOWNCHATS:
                            {
                            CurrentUser->SetSeeOwnChats(atoi(words[1]));
                            break;
                            }

                        case DUK_ERASEPROMPT:
                            {
                            CurrentUser->SetErasePrompt(atoi(words[1]));
                            break;
                            }

                        case DUK_AUTOIDLESECONDS:
                            {
                            CurrentUser->SetAutoIdleSeconds(atoi(words[1]));
                            break;
                            }

                        case DUK_SSE_MSGSOMEWHERE:
                            {
                            CurrentUser->SetHearLaughter(atoi(words[1]));
                            break;
                            }

                        default:
                            {
                            doccr();
                            cPrintf(getmsg(21), citfiles[C_DEFUSER_CIT], words[0]);
                            doccr();
                            break;
                            }
                        }
                    }
                }

            fclose(defusr);
            }

        discardData(du);
        }
    }