Annotation of sbbs/sbbs2/smm/smmcfg.c, revision 1.1

1.1     ! root        1: /* SMMCFG.C */
        !             2: 
        !             3: /* Developed 1990-1997 by Rob Swindell; PO Box 501, Yorba Linda, CA 92885 */
        !             4: 
        !             5: #include <uifc.h>
        !             6: #include <sys\stat.h>
        !             7: #include "gen_defs.h"
        !             8: #include "smmdefs.h"
        !             9: #include "smmvars.c"
        !            10: 
        !            11: char **opt;
        !            12: 
        !            13: void bail(int code);
        !            14: void main();
        !            15: char fexist(char *filespec);
        !            16: 
        !            17: unsigned _stklen=16000;                  /* Set stack size in code, not header */
        !            18: 
        !            19: void bail(int code)
        !            20: {
        !            21: 
        !            22: if(code)
        !            23:        getch();
        !            24: uifcbail();
        !            25: exit(code);
        !            26: }
        !            27: 
        !            28: void main()
        !            29: {
        !            30:        char str[256];
        !            31:        int i,j,k,file,dflt,sysop_level;
        !            32:        FILE *stream;
        !            33: 
        !            34: savnum=0;
        !            35: if((opt=(char **)MALLOC(sizeof(char *)*300))==NULL) {
        !            36:        cputs("memory allocation error\r\n");
        !            37:        bail(1); }
        !            38: for(i=0;i<300;i++)
        !            39:        if((opt[i]=(char *)MALLOC(MAX_OPLN))==NULL) {
        !            40:                cputs("memory allocation error\r\n");
        !            41:         bail(1); }
        !            42: uifcini();
        !            43: sprintf(str,"Synchronet Match Maker v%s",SMM_VER);
        !            44: uscrn(str);
        !            45: 
        !            46: if((file=open("SMM.CFG",O_RDONLY|O_BINARY|O_DENYNONE))==-1) {
        !            47:        textattr(LIGHTGRAY);
        !            48:        clrscr();
        !            49:        lprintf("Error opening SMM.CFG\r\n");
        !            50:        bail(1); }
        !            51: if((stream=fdopen(file,"rb"))==NULL) {
        !            52:        textattr(LIGHTGRAY);
        !            53:        clrscr();
        !            54:        lprintf("Error fdopen SMM.CFG\r\n");
        !            55:        bail(1); }
        !            56: 
        !            57: str[0]=0;
        !            58: fgets(str,128,stream);
        !            59: purity_age=atoi(str);
        !            60: str[0]=0;
        !            61: fgets(str,128,stream);
        !            62: min_age=atoi(str);
        !            63: str[0]=0;
        !            64: fgets(str,128,stream);
        !            65: min_level=atoi(str);
        !            66: 
        !            67: req_flags1[0]=0;
        !            68: fgets(req_flags1,128,stream);
        !            69: req_flags1[27]=0;
        !            70: truncsp(req_flags1);
        !            71: 
        !            72: req_flags2[0]=0;
        !            73: fgets(req_flags2,128,stream);
        !            74: req_flags2[27]=0;
        !            75: truncsp(req_flags2);
        !            76: 
        !            77: req_flags3[0]=0;
        !            78: fgets(req_flags3,128,stream);
        !            79: req_flags3[27]=0;
        !            80: truncsp(req_flags3);
        !            81: 
        !            82: req_flags4[0]=0;
        !            83: fgets(req_flags4,128,stream);
        !            84: req_flags4[27]=0;
        !            85: truncsp(req_flags4);
        !            86: 
        !            87: str[0]=0;
        !            88: fgets(str,128,stream);
        !            89: profile_cdt=atol(str);
        !            90: str[0]=0;
        !            91: fgets(str,128,stream);
        !            92: telegram_cdt=atol(str);
        !            93: str[0]=0;
        !            94: fgets(str,128,stream);
        !            95: auto_update=atoi(str);
        !            96: str[0]=0;
        !            97: fgets(str,128,stream);
        !            98: notify_user=atoi(str);
        !            99: 
        !           100: str[0]=0;
        !           101: fgets(str,128,stream); // regnum
        !           102: 
        !           103: str[0]=0;
        !           104: fgets(str,128,stream);
        !           105: telegram_level=atoi(str);
        !           106: 
        !           107: str[0]=0;
        !           108: fgets(str,128,stream);
        !           109: que_level=atoi(str);
        !           110: 
        !           111: str[0]=0;
        !           112: fgets(str,128,stream);
        !           113: wall_level=atoi(str);
        !           114: 
        !           115: str[0]=0;
        !           116: fgets(str,128,stream);
        !           117: wall_cdt=atol(str);
        !           118: 
        !           119: str[0]=0;
        !           120: fgets(str,128,stream);
        !           121: que_cdt=atol(str);
        !           122: 
        !           123: zmodem_send[0]=0;
        !           124: fgets(zmodem_send,128,stream);
        !           125: if(!zmodem_send[0])
        !           126:        strcpy(zmodem_send,DEFAULT_ZMODEM_SEND);
        !           127: truncsp(zmodem_send);
        !           128: 
        !           129: str[0]=0;
        !           130: fgets(str,128,stream);
        !           131: smm_misc=atol(str);
        !           132: 
        !           133: str[0]=0;
        !           134: fgets(str,128,stream);
        !           135: sprintf(system_name,"%.25s",str);
        !           136: truncsp(system_name);
        !           137: 
        !           138: local_view[0]=0;
        !           139: fgets(local_view,128,stream);
        !           140: truncsp(local_view);
        !           141: 
        !           142: str[0]=0;
        !           143: fgets(str,128,stream);
        !           144: sysop_level=atoi(str);
        !           145: if(!sysop_level)
        !           146:        sysop_level=90;
        !           147: 
        !           148: str[0]=0;
        !           149: fgets(str,128,stream);
        !           150: wall_age=atoi(str);
        !           151: 
        !           152: str[0]=0;
        !           153: fgets(str,128,stream);
        !           154: age_split=atoi(str);
        !           155: 
        !           156: fclose(stream);
        !           157: 
        !           158: 
        !           159: dflt=0;
        !           160: while(1) {
        !           161:        helpbuf=
        !           162: " Synchronet Match Maker Configuration \r\n\r\n"
        !           163: "Move through the various options using the arrow keys.  Select the\r\n"
        !           164: "highlighted options by pressing ENTER.\r\n\r\n";
        !           165:        j=0;
        !           166:        sprintf(opt[j++],"%-40.40s %s","System Name",system_name);
        !           167:        sprintf(opt[j++],"Wall Security...");
        !           168:        sprintf(opt[j++],"Profile Database Security...");
        !           169:        sprintf(str,"Credit %s for Adding Profile"
        !           170:                ,profile_cdt>0 ? "Bonus":"Cost");
        !           171:        sprintf(opt[j++],"%-40.40s %ldk",str
        !           172:                ,profile_cdt>0 ? profile_cdt/1024L : (-profile_cdt)/1024L);
        !           173:        sprintf(str,"Credit %s for Sending Telegram"
        !           174:                ,telegram_cdt>0 ? "Bonus":"Cost");
        !           175:        sprintf(opt[j++],"%-40.40s %ldk",str
        !           176:                ,telegram_cdt>0 ? telegram_cdt/1024L : (-telegram_cdt)/1024L);
        !           177:        sprintf(str,"Credit %s for Writing on the Wall"
        !           178:                ,wall_cdt>0 ? "Bonus":"Cost");
        !           179:        sprintf(opt[j++],"%-40.40s %ldk",str
        !           180:                ,wall_cdt>0 ? wall_cdt/1024L : (-wall_cdt)/1024L);
        !           181:        sprintf(str,"Credit %s for Reading Questionnaire"
        !           182:                ,que_cdt>0 ? "Bonus":"Cost");
        !           183:        sprintf(opt[j++],"%-40.40s %ldk",str
        !           184:                ,que_cdt>0 ? que_cdt/1024L : (-que_cdt)/1024L);
        !           185:        sprintf(opt[j++],"%-40.40s %u","Minimum Level to Send Telegrams"
        !           186:                ,telegram_level);
        !           187:        sprintf(opt[j++],"%-40.40s %u","Minimum Level to Read Questionnaires"
        !           188:                ,que_level);
        !           189:        sprintf(opt[j++],"%-40.40s %s","Minor Segregation (Protection) Age"
        !           190:                ,age_split ? itoa(age_split,str,10):"Disabled");
        !           191:        sprintf(opt[j++],"%-40.40s %u","Sysop Level",sysop_level);
        !           192:        sprintf(opt[j++],"%-40.40s %s","Auto-Update Profiles"
        !           193:                ,auto_update ? itoa(auto_update,str,10):"Disabled");
        !           194:        sprintf(opt[j++],"%-40.40s %s","Notify User of Activity"
        !           195:                ,notify_user ? itoa(notify_user,str,10):"Disabled");
        !           196:        sprintf(opt[j++],"%-40.40s %s","Use Metric System"
        !           197:                ,smm_misc&SMM_METRIC ? "Yes":"No");
        !           198:        sprintf(opt[j++],"%-40.40s %.25s","Zmodem Send Command"
        !           199:                ,zmodem_send);
        !           200:        sprintf(opt[j++],"%-40.40s %.25s","Local Photo Viewer"
        !           201:                ,local_view);
        !           202:        opt[j][0]=NULL;
        !           203:        switch(ulist(WIN_ORG|WIN_MID|WIN_ACT|WIN_ESC,0,0,60,&dflt,0
        !           204:        ,"Synchronet Match Maker Configuration",opt)) {
        !           205:                case 0:
        !           206: helpbuf=
        !           207: " System Name \r\n\r\n"
        !           208: "This is your BBS name. Once you have configured your BBS name here, you\r\n"
        !           209: "will not be able to change it, without losing all of your local users'\r\n"
        !           210: "profiles in your database.\r\n"
        !           211: "\r\n"
        !           212: "It is &highly& recommended that you do not change your BBS name here,\r\n"
        !           213: "even if you decide to change your actual BBS name in the future.\r\n"
        !           214: "\r\n"
        !           215: "All BBS names in a match maker network must be unique.";
        !           216:                        uinput(WIN_MID,0,0,"System Name"
        !           217:                                ,system_name,40,K_EDIT|K_UPPER);
        !           218:             break;
        !           219:                case 1:
        !           220:                        j=0;
        !           221:                        while(1) {
        !           222:                                k=0;
        !           223:                                sprintf(opt[k++],"%-40.40s  %u"
        !           224:                                        ,"Minimum User Age to Access Wall"
        !           225:                                        ,wall_age);
        !           226:                                sprintf(opt[k++],"%-40.40s  %u"
        !           227:                                        ,"Minimum Security Level to Write on Wall"
        !           228:                                        ,wall_level);
        !           229:                                opt[k][0]=NULL;
        !           230: helpbuf=
        !           231: " Wall Security \r\n\r\n"
        !           232: "This menu allows you to specify which users can access the wall.\r\n";
        !           233: 
        !           234:                                j=ulist(WIN_ACT|WIN_SAV|WIN_RHT|WIN_BOT,0,0,0,&j,0
        !           235:                                        ,"Wall Security",opt);
        !           236:                                if(j==-1)
        !           237:                                        break;
        !           238:                                switch(j) {
        !           239:                                        case 0:
        !           240: helpbuf=
        !           241: " Minimum User Age \r\n\r\n"
        !           242: "This is the minimum user age that will be allowed to access (read or\r\n"
        !           243: "write) the wall.";
        !           244:                                                sprintf(str,"%u",wall_age);
        !           245:                                                uinput(WIN_L2R|WIN_SAV,0,0,
        !           246:                                                        "Minimum Age to Access Wall"
        !           247:                                                        ,str,2,K_EDIT|K_NUMBER);
        !           248:                                                wall_age=atoi(str);
        !           249:                         break;
        !           250:                                        case 1:
        !           251: helpbuf=
        !           252: " Minimum User Level \r\n\r\n"
        !           253: "This is the minimum user level required to write on the wall.\r\n";
        !           254:                                                sprintf(str,"%u",wall_level);
        !           255:                                                uinput(WIN_L2R|WIN_SAV,0,0,
        !           256:                                                        "Minimum Level to Write on Wall"
        !           257:                                                        ,str,2,K_EDIT|K_NUMBER);
        !           258:                                                wall_level=atoi(str);
        !           259:                                                break; } }
        !           260:                        break;
        !           261:                case 2:
        !           262:                        j=0;
        !           263:                        while(1) {
        !           264:                                k=0;
        !           265:                                sprintf(opt[k++],"%-40.40s  %u"
        !           266:                                        ,"Minimum User Age to Add Profile"
        !           267:                                        ,min_age);
        !           268:                                sprintf(opt[k++],"%-40.40s  %u"
        !           269:                                        ,"Minimum User Age to Take Purity Test"
        !           270:                                        ,purity_age);
        !           271:                                sprintf(opt[k++],"%-40.40s  %u"
        !           272:                                        ,"Minimum Security Level to Add Profile"
        !           273:                                        ,min_level);
        !           274:                                sprintf(opt[k++],"%-40.40s  %s"
        !           275:                                        ,"Required Flags (Set 1) to Add Profile"
        !           276:                                        ,req_flags1);
        !           277:                                sprintf(opt[k++],"%-40.40s  %s"
        !           278:                                        ,"Required Flags (Set 2) to Add Profile"
        !           279:                                        ,req_flags2);
        !           280:                                sprintf(opt[k++],"%-40.40s  %s"
        !           281:                                        ,"Required Flags (Set 3) to Add Profile"
        !           282:                                        ,req_flags3);
        !           283:                                sprintf(opt[k++],"%-40.40s  %s"
        !           284:                                        ,"Required Flags (Set 4) to Add Profile"
        !           285:                                        ,req_flags4);
        !           286:                                opt[k][0]=NULL;
        !           287: helpbuf=
        !           288: " Profile Security \r\n\r\n"
        !           289: "This menu allows you to specify which users can create profiles\r\n"
        !           290: "and take the purity test.";
        !           291: 
        !           292:                                j=ulist(WIN_ACT|WIN_SAV|WIN_RHT|WIN_BOT,0,0,0,&j,0
        !           293:                                        ,"Profile Database Security",opt);
        !           294:                                if(j==-1)
        !           295:                                        break;
        !           296:                                switch(j) {
        !           297:                                        case 0:
        !           298: helpbuf=
        !           299: " Minimum User Age \r\n\r\n"
        !           300: "This is the minimum user age that will be allowed to add a profile to\r\n"
        !           301: "the database.";
        !           302:                                                sprintf(str,"%u",min_age);
        !           303:                                                uinput(WIN_L2R|WIN_SAV,0,0,
        !           304:                                                        "Minimum Age",str,2,K_EDIT|K_NUMBER);
        !           305:                                                min_age=atoi(str);
        !           306:                                                break;
        !           307:                                        case 1:
        !           308: helpbuf=
        !           309: " Minimum User Age for Purity Test\r\n\r\n"
        !           310: "This is the minimum user age that will be allowed to take the purity\r\n"
        !           311: "test.";
        !           312:                                                sprintf(str,"%u",purity_age);
        !           313:                                                uinput(WIN_L2R|WIN_SAV,0,0,
        !           314:                                                        "Minimum Age for Purity Test"
        !           315:                                                        ,str,2,K_EDIT|K_NUMBER);
        !           316:                                                purity_age=atoi(str);
        !           317:                                                break;
        !           318:                                        case 2:
        !           319: helpbuf=
        !           320: " Minimum Security Level \r\n\r\n"
        !           321: "This is the minimum security level that is required to add a profile\r\n"
        !           322: "to the database.";
        !           323:                                                sprintf(str,"%u",min_level);
        !           324:                                                uinput(WIN_L2R|WIN_SAV,0,0,
        !           325:                                                        "Security Level",str,3,K_EDIT|K_NUMBER);
        !           326:                                                min_level=atoi(str);
        !           327:                         break;
        !           328:                                        case 3:
        !           329: helpbuf=
        !           330: " Required Flags from Flag Set 1 \r\n\r\n"
        !           331: "These are the flags that a required for the user to add a profile\r\n"
        !           332: "to the database.";
        !           333:                                                uinput(WIN_L2R|WIN_SAV,0,0,"Flag Set 1"
        !           334:                                                        ,req_flags1
        !           335:                                                        ,26,K_EDIT|K_UPPER|K_ALPHA);
        !           336:                         break;
        !           337:                                        case 4:
        !           338: helpbuf=
        !           339: " Required Flags from Flag Set 2 \r\n\r\n"
        !           340: "These are the flags that a required for the user to add a profile\r\n"
        !           341: "to the database.";
        !           342:                                                uinput(WIN_L2R|WIN_SAV,0,0,"Flag Set 2"
        !           343:                                                        ,req_flags2
        !           344:                                                        ,26,K_EDIT|K_UPPER|K_ALPHA);
        !           345:                         break;
        !           346:                                        case 5:
        !           347: helpbuf=
        !           348: " Required Flags from Flag Set 3 \r\n\r\n"
        !           349: "These are the flags that a required for the user to add a profile\r\n"
        !           350: "to the database.";
        !           351:                                                uinput(WIN_L2R|WIN_SAV,0,0,"Flag Set 3"
        !           352:                                                        ,req_flags3
        !           353:                                                        ,26,K_EDIT|K_UPPER|K_ALPHA);
        !           354:                         break;
        !           355:                                        case 6:
        !           356: helpbuf=
        !           357: " Required Flags from Flag Set 4 \r\n\r\n"
        !           358: "These are the flags that a required for the user to add a profile\r\n"
        !           359: "to the database.";
        !           360:                                                uinput(WIN_L2R|WIN_SAV,0,0,"Flag Set 4"
        !           361:                                                        ,req_flags4
        !           362:                                                        ,26,K_EDIT|K_UPPER|K_ALPHA);
        !           363:                                                break; } }
        !           364:             break;
        !           365:                case 3:
        !           366: helpbuf=
        !           367: " Credit Adjustment for Adding Profile \r\n\r\n"
        !           368: "You can have &Synchronet Match Maker& either give credits to or take\r\n"
        !           369: "credits from the user for adding a profile to the database.";
        !           370:                        strcpy(opt[0],"Add Credits");
        !           371:                        strcpy(opt[1],"Remove Credits");
        !           372:                        opt[2][0]=0;
        !           373:                        i=1;
        !           374:                        i=ulist(WIN_L2R|WIN_BOT|WIN_ACT,0,0,0,&i,0
        !           375:                                ,"Credit Adjustment for Adding Profile",opt);
        !           376:                        if(i==-1)
        !           377:                                break;
        !           378:                        sprintf(str,"%ld",profile_cdt<0 ? -profile_cdt:profile_cdt);
        !           379:                        uinput(WIN_MID,0,0,"Credits (K=1024)"
        !           380:                                ,str,10,K_EDIT|K_UPPER);
        !           381:                        if(strchr(str,'K'))
        !           382:                                profile_cdt=atol(str)*1024L;
        !           383:                        else
        !           384:                                profile_cdt=atol(str);
        !           385:                        if(i==1)
        !           386:                                profile_cdt=-profile_cdt;
        !           387:                        break;
        !           388:                case 4:
        !           389: helpbuf=
        !           390: " Credit Adjustment for Sending Telegram \r\n\r\n"
        !           391: "You can have &Synchronet Match Maker& either give credits to or take\r\n"
        !           392: "credits from the user for sending a telegram to another user in SMM.";
        !           393:                        strcpy(opt[0],"Add Credits");
        !           394:                        strcpy(opt[1],"Remove Credits");
        !           395:                        opt[2][0]=0;
        !           396:                        i=1;
        !           397:                        i=ulist(WIN_L2R|WIN_BOT|WIN_ACT,0,0,0,&i,0
        !           398:                                ,"Credit Adjustment for Sending Telegram",opt);
        !           399:                        if(i==-1)
        !           400:                                break;
        !           401:                        sprintf(str,"%ld",telegram_cdt<0 ? -telegram_cdt:telegram_cdt);
        !           402:                        uinput(WIN_MID,0,0,"Credits (K=1024)"
        !           403:                                ,str,10,K_EDIT|K_UPPER);
        !           404:                        if(strchr(str,'K'))
        !           405:                                telegram_cdt=atol(str)*1024L;
        !           406:                        else
        !           407:                                telegram_cdt=atol(str);
        !           408:                        if(i==1)
        !           409:                                telegram_cdt=-telegram_cdt;
        !           410:             break;
        !           411:                case 5:
        !           412: helpbuf=
        !           413: " Credit Adjustment for Writing on the Wall \r\n\r\n"
        !           414: "You can have &Synchronet Match Maker& either give credits to or take\r\n"
        !           415: "credits from the user for writing on the wall.";
        !           416:                        strcpy(opt[0],"Add Credits");
        !           417:                        strcpy(opt[1],"Remove Credits");
        !           418:                        opt[2][0]=0;
        !           419:                        i=1;
        !           420:                        i=ulist(WIN_L2R|WIN_BOT|WIN_ACT,0,0,0,&i,0
        !           421:                                ,"Credit Adjustment for Writing on the Wall",opt);
        !           422:                        if(i==-1)
        !           423:                                break;
        !           424:                        sprintf(str,"%ld",wall_cdt<0 ? -wall_cdt:wall_cdt);
        !           425:                        uinput(WIN_MID,0,0,"Credits (K=1024)"
        !           426:                                ,str,10,K_EDIT|K_UPPER);
        !           427:                        if(strchr(str,'K'))
        !           428:                                wall_cdt=atol(str)*1024L;
        !           429:                        else
        !           430:                                wall_cdt=atol(str);
        !           431:                        if(i==1)
        !           432:                                wall_cdt=-wall_cdt;
        !           433:             break;
        !           434:                case 6:
        !           435: helpbuf=
        !           436: " Credit Adjustment for Reading Questionnaire \r\n\r\n"
        !           437: "You can have &Synchronet Match Maker& either give credits to or take\r\n"
        !           438: "credits from the user when reading another user's questionnaire";
        !           439:                        strcpy(opt[0],"Add Credits");
        !           440:                        strcpy(opt[1],"Remove Credits");
        !           441:                        opt[2][0]=0;
        !           442:                        i=1;
        !           443:                        i=ulist(WIN_L2R|WIN_BOT|WIN_ACT,0,0,0,&i,0
        !           444:                                ,"Credit Adjustment for Reading Questionnaire",opt);
        !           445:                        if(i==-1)
        !           446:                                break;
        !           447:                        sprintf(str,"%ld",que_cdt<0 ? -que_cdt:que_cdt);
        !           448:                        uinput(WIN_MID,0,0,"Credits (K=1024)"
        !           449:                                ,str,10,K_EDIT|K_UPPER);
        !           450:                        if(strchr(str,'K'))
        !           451:                                que_cdt=atol(str)*1024L;
        !           452:                        else
        !           453:                                que_cdt=atol(str);
        !           454:                        if(i==1)
        !           455:                                que_cdt=-que_cdt;
        !           456:             break;
        !           457:                case 7:
        !           458: helpbuf=
        !           459: " Minimum Level to Send Telegrams \r\n\r\n"
        !           460: "Use this option to restrict the sending of telegrams to users of a\r\n"
        !           461: "specific security level or higher.";
        !           462:                        sprintf(str,"%u",telegram_level);
        !           463:                        uinput(WIN_MID,0,0,"Minimum Level to Send Telegrams"
        !           464:                                ,str,3,K_EDIT|K_NUMBER);
        !           465:                        telegram_level=atoi(str);
        !           466:             break;
        !           467:                case 8:
        !           468: helpbuf=
        !           469: " Minimum Level to Read Questionnaires \r\n\r\n"
        !           470: "Users will only be allowed to read other users' questionnaires if\r\n"
        !           471: "their security level is this value or higher.";
        !           472:                        sprintf(str,"%u",que_level);
        !           473:                        uinput(WIN_MID,0,0,"Minimum Level to Read Questionnaires"
        !           474:                                ,str,3,K_EDIT|K_NUMBER);
        !           475:                        que_level=atoi(str);
        !           476:             break;
        !           477:                case 9:
        !           478: helpbuf=
        !           479: " Minor Segregation (Protection) Age \r\n\r\n"
        !           480: "This option (if enabled) separates all users into two groups:\r\n"
        !           481: "\r\n"
        !           482: "&Minors: &Those users below the specified age (normally 18)\r\n"
        !           483: "&Adults: &Those users at or above the specified age\r\n"
        !           484: "\r\n"
        !           485: "If enabled, adults cannot see minors' profiles or send telegrams to\r\n"
        !           486: "minors and vice versa.\r\n"
        !           487: "\r\n"
        !           488: "If disabled, all users can see eachother's profiles regardless of age.\r\n";
        !           489:                        sprintf(str,"%u",age_split);
        !           490:                        uinput(WIN_MID,0,0,"Minor Segregation Age (0=Disabled)"
        !           491:                                ,str,2,K_EDIT|K_NUMBER);
        !           492:                        age_split=atoi(str);
        !           493:                        break;
        !           494:                case 10:
        !           495: helpbuf=
        !           496: " Sysop Level \r\n\r\n"
        !           497: "Every user of this level or higher will be given access to sysop\r\n"
        !           498: "commands in the match maker.";
        !           499:                        sprintf(str,"%u",sysop_level);
        !           500:                        uinput(WIN_MID,0,0,"Sysop Level",str,3,K_EDIT|K_NUMBER);
        !           501:                        sysop_level=atoi(str);
        !           502:             break;
        !           503: 
        !           504:                case 11:
        !           505: helpbuf=
        !           506: " Auto-Update Profiles \r\n\r\n"
        !           507: "If you would like to have &Synchronet Match Maker& automatically send\r\n"
        !           508: "a network update message for a user that is active in SMM, but hasn't\r\n"
        !           509: "actually made any changes to his or her profile, set this option to the\r\n"
        !           510: "number of days between &Auto-Updates& (e.g. 30 days is a good value).\r\n"
        !           511: "\r\n"
        !           512: "Setting this option to &0& disables this feature.";
        !           513:                        sprintf(str,"%u",auto_update);
        !           514:                        uinput(WIN_MID,0,0,"Auto-Update Profiles (in Days)"
        !           515:                                ,str,3,K_EDIT|K_NUMBER);
        !           516:                        auto_update=atoi(str);
        !           517:                        break;
        !           518:                case 12:
        !           519: helpbuf=
        !           520: " Notify User of Activity \r\n\r\n"
        !           521: "If you would like to have &Synchronet Match Maker& automatically send\r\n"
        !           522: "a message to a specific user (most commonly the sysop) whenever a user\r\n"
        !           523: "adds a profile to the database or sends a telegram from SMM, set this\r\n"
        !           524: "option to the number of that user (e.g. &1& would indicate user #1).\r\n"
        !           525: "\r\n"
        !           526: "Setting this option to &0& disables this feature.";
        !           527:                        sprintf(str,"%u",notify_user);
        !           528:                        uinput(WIN_MID,0,0,"Notify User Number (0=disabled)"
        !           529:                                ,str,5,K_EDIT|K_NUMBER);
        !           530:                        notify_user=atoi(str);
        !           531:             break;
        !           532:                case 13:
        !           533: helpbuf=
        !           534: " Use Metric System \r\n\r\n"
        !           535: "If you wish to use centimeters and kilograms instead of inches and\r\n"
        !           536: "pounds for height and weight measurements, set this option to &Yes&.";
        !           537:                        strcpy(opt[0],"Yes");
        !           538:                        strcpy(opt[1],"No");
        !           539:                        opt[2][0]=0;
        !           540:                        i=1;
        !           541:                        i=ulist(WIN_MID|WIN_ACT,0,0,0,&i,0
        !           542:                                ,"Use Metric Measurement System",opt);
        !           543:                        if(i==-1)
        !           544:                 break;
        !           545:                        if(i==1)
        !           546:                                smm_misc&=~SMM_METRIC;
        !           547:                        else
        !           548:                                smm_misc|=SMM_METRIC;
        !           549:                        break;
        !           550: 
        !           551:                case 14:
        !           552: helpbuf=
        !           553: " Zmodem Send Command \r\n\r\n"
        !           554: "This is the command line to execute to send files to remote user.\r\n";
        !           555:                        uinput(WIN_MID,0,0,"Zmodem Send"
        !           556:                                ,zmodem_send,50,K_EDIT);
        !           557:             break;
        !           558:                case 15:
        !           559: helpbuf=
        !           560: " Local Photo Viewer \r\n\r\n"
        !           561: "This is the command line to execute to view photos when logged on\r\n"
        !           562: "locally.\r\n";
        !           563:                        uinput(WIN_MID,0,0,"Local Viewer"
        !           564:                                ,local_view,50,K_EDIT);
        !           565:             break;
        !           566:                case -1:
        !           567: helpbuf=
        !           568: " Save Configuration File \r\n\r\n"
        !           569: "Select &Yes& to save the config file, &No& to quit without saving,\r\n"
        !           570: "or hit  ESC  to go back to the menu.\r\n\r\n";
        !           571:                        i=0;
        !           572:                        strcpy(opt[0],"Yes");
        !           573:                        strcpy(opt[1],"No");
        !           574:                        opt[2][0]=0;
        !           575:                        i=ulist(WIN_MID,0,0,0,&i,0,"Save Config File",opt);
        !           576:                        if(i==-1) break;
        !           577:                        if(i) bail(0);
        !           578:                        if((file=open("SMM.CFG"
        !           579:                                ,O_WRONLY|O_BINARY|O_CREAT|O_DENYALL|O_TRUNC,S_IWRITE))==-1) {
        !           580:                                textattr(LIGHTGRAY);
        !           581:                                clrscr();
        !           582:                                lprintf("Error opening SMM.CFG\r\n");
        !           583:                                bail(1); }
        !           584:                        if((stream=fdopen(file,"wb"))==NULL) {
        !           585:                                textattr(LIGHTGRAY);
        !           586:                                clrscr();
        !           587:                                lprintf("Error fdopen SMM.CFG\r\n");
        !           588:                                bail(1); }
        !           589:                        fprintf(stream,"%u\r\n%u\r\n%u\r\n%s\r\n%s\r\n%s\r\n%s\r\n"
        !           590:                                ,purity_age,min_age,min_level
        !           591:                                ,req_flags1,req_flags2,req_flags3,req_flags4);
        !           592:                        fprintf(stream,"%ld\r\n%ld\r\n%u\r\n%u\r\n%s\r\n%u\r\n%u\r\n"
        !           593:                                ,profile_cdt,telegram_cdt,auto_update,notify_user,""
        !           594:                                ,telegram_level,que_level);
        !           595:                        fprintf(stream,"%u\r\n%ld\r\n%ld\r\n%s\r\n%ld\r\n%s\r\n"
        !           596:                                ,wall_level,wall_cdt,que_cdt,zmodem_send,smm_misc,system_name);
        !           597:                        fprintf(stream,"%s\r\n%u\r\n%u\r\n%u\r\n"
        !           598:                                ,local_view,sysop_level,wall_age,age_split);
        !           599:                        fclose(stream);
        !           600:                        bail(0);
        !           601:        }
        !           602: }
        !           603: }
        !           604: /****************************************************************************/
        !           605: /* Checks the disk drive for the existance of a file. Returns 1 if it          */
        !           606: /* exists, 0 if it doesn't.                                                                                                    */
        !           607: /* Called from upload                                                                                                          */
        !           608: /****************************************************************************/
        !           609: char fexist(char *filespec)
        !           610: {
        !           611:        struct ffblk f;
        !           612: 
        !           613: if(findfirst(filespec,&f,0)==NULL)
        !           614:        return(1);
        !           615: return(0);
        !           616: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.