Skip to content
Snippets Groups Projects
xtrn.cpp 59 KiB
Newer Older
#endif
	                    strncat(cmd,cfg.node_dir, avail);
                    break;
                case 'O':   /* SysOp */
                    strncat(cmd,QUOTED_STRING(instr[i],cfg.sys_op,str,sizeof(str)), avail);
                    strncat(cmd, passthru_thread_running ? "raw" : client.protocol, avail);
                    break;
                case 'Q':   /* QWK ID */
                    strncat(cmd,cfg.sys_id, avail);
                    break;
                case 'R':   /* Rows */
                    strncat(cmd,ultoa(rows,str,10), avail);
                case 'S':   /* File Spec (or Baja command str) or startup-directory */
                    break;
                case 'T':   /* Time left in seconds */
                    gettimeleft();
                    strncat(cmd,ultoa(timeleft,str,10), avail);
                    break;
                case 'U':   /* UART I/O Address (in hex) */
                    strncat(cmd,ultoa(cfg.com_base,str,16), avail);
                    break;
                case 'V':   /* Synchronet Version */
                    sprintf(str,"%s%c",VERSION,REVISION);
                    strncat(cmd,ultoa(cols,str,10), avail);
                    strncat(cmd,cfg.shell[useron.shell]->code, avail);
                    break;
                case '&':   /* Address of msr */
                    break;
                case 'Y':
#if defined(__linux__)
						strncat(cmd, DOSEMU_TEXT_DIR, avail);
					else
#endif
	                    strncat(cmd,cfg.text_dir, avail);
				case '~':	/* DOS-compatible (8.3) filename */
#ifdef _WIN32
					GetShortPathName(fpath,sfpath,sizeof(sfpath));
                    strncat(cmd,QUOTED_STRING(instr[i],fpath,str,sizeof(str)), avail);
#endif
                case '!':   /* EXEC Directory */
#if defined(__linux__)
						strncat(cmd, DOSEMU_EXEC_DIR, avail);
					else
#endif
	                    strncat(cmd,cfg.exec_dir, avail);
                case '@':   /* EXEC Directory for DOS/OS2/Win32, blank for Unix */
#ifndef __unix__
                    strncat(cmd,cfg.exec_dir, avail);
                case '#':   /* Node number (same as SBBSNNUM environment var) */
                    sprintf(str,"%d",cfg.node_num);
                    break;
                case '*':
                    sprintf(str,"%03d",cfg.node_num);
                    break;
                case '$':   /* Credits */
                    strncat(cmd,ultoa(useron.cdt+useron.freecdt,str,10), avail);
                    break;
                case '%':   /* %% for percent sign */
				case '.':	/* .exe for DOS/OS2/Win32, blank for Unix */
#ifndef __unix__
				case '?':	/* Platform */
#ifdef __OS2__
					strcpy(str,"OS2");
#else
				case '^':	/* Architecture */
					strncat(cmd, ARCHITECTURE_DESC, avail);
					break;
				case '+':	/* Real name */
					strncat(cmd, quoted_string(useron.name, str, sizeof(str)), avail);
					break;
                default:    /* unknown specification */
                        sprintf(str,"%0*d",instr[i]&0xf,useron.number);
                    break; }
            j=strlen(cmd); }
        else
            cmd[j++]=instr[i]; }
    cmd[j]=0;

    return(cmd);
}