Annotation of sbbs/sbbs2/smm/smmcfg.c, revision 1.1.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.