#define Use_MsgBase #include #include #include #include "proboard.hpp" static char *varnames[] = { /* 0 */ "NAME", /* 1 */ "CITY", /* 2 */ "NODE", /* 3 */ "SYSDIR", /* 4 */ "STARTDIR", /* 5 */ "UPDIR", /* 6 */ "PVTDIR", /* 7 */ "BAUD", /* 8 */ "PORT", /* 9 */ "FIRSTNAME", /* 10 */ "LASTNAME", /* 11 */ "TMLEFT", /* 12 */ "TMONLINE", /* 13 */ "LEVEL", /* 14 */ "DATE", /* 15 */ "TIME", /* 16 */ "HANDLE", /* 17 */ "MNUDIR", /* 18 */ "TXTDIR", /* 19 */ "MSGDIR", /* 20 */ "SYSOPNAME", /* 21 */ "PASSWORD", /* 22 */ "NLDIR", /* 23 */ "PEXDIR", /* 24 */ "CURFILEAREA#", /* 25 */ "CURMSGAREA#", /* 26 */ "CURFILEAREA", /* 27 */ "CURMSGAREA", /* 28 */ "CURMENU", /* 29 */ "NUMUSERS", /* 30 */ "ID", /* 31 */ "USERREC", /* 32 */ "#1", /* 33 */ "#2", /* 34 */ "#3", /* 35 */ "#4", /* 36 */ "#5", /* 37 */ "#6", /* 38 */ "#7", /* 39 */ "#B1", /* 40 */ "#B2", /* 41 */ "#B3", /* 42 */ "#B4", /* 43 */ "#B5", /* 44 */ "#B6", /* 45 */ "#B7", /* 46 */ "NUMMSG", /* 47 */ "LOWMSG", /* 48 */ "HIGHMSG", /* 49 */ "TOTALMSG", /* 50 */ "LASTDATE", /* 51 */ "LASTTIME", /* 52 */ "TOTALCALLS", /* 53 */ "VERSION", /* 54 */ "VOICEPHONE", /* 55 */ "DATAPHONE", /* 56 */ "COUNTRY", /* 57 */ "NUMYELLS", /* 58 */ "CURFILEAREADIR", /* 59 */ "CURFILEGROUP#", /* 60 */ "CURMSGGROUP#", /* 61 */ "CURFILEGROUP", /* 62 */ "CURMSGGROUP", /* 63 */ "LANGUAGE", NULL }; static String varvalue(char *s,int len) { String tmp; len = -len; if(s[0]=='%') { if(getenv(&s[1])) tmp = getenv(&s[1]); return tmp; } for(int i=0;varnames[i];i++) { char ts[80]; if(strcmpl(varnames[i],s)) continue; switch(i) { case 0: sprintf(ts,"%*s",len,user.name); tmp = ts; break; case 1: sprintf(ts,"%*s",len,user.city); tmp = ts; break; case 2: sprintf(ts,"%*d",len,node_number); tmp = ts; break; case 3: sprintf(ts,"%*s",len,syspath); tmp = ts; break; case 4: sprintf(ts,"%*s",len,mypath); tmp = ts; break; case 5: sprintf(ts,"%*s",len,cfg.uploadpath); tmp = ts; break; case 6: sprintf(ts,"%*s",len,cfg.pvtuploadpath); tmp = ts; break; case 7: sprintf(ts,"%*ld",len,io.baud); tmp = ts; break; case 8: sprintf(ts,"%*d",len,io.port+1); tmp = ts; break; case 9: sprintf(ts,"%*s",len,user_firstname); tmp = ts; break; case 10: { for(int i=0;i': if(invar) { if(*(s+1) == '@') { s++; tmp << varvalue(varname,inlen ? atoi(lenstr) : 0); invar = FALSE; inlen = FALSE; } continue; // We don't want '>' chars in varnames } case ':': if(invar) { inlen = TRUE; continue; } default : if(invar) { if(inlen) lenstr << (*s); else varname << (*s); } else { tmp << char((*s == '|') ? '\n' : (*s)); } } return tmp; }