#include /* misc.c - contains everything too small to put into its own source file */ crlf() { static char *cr = "\r\n"; write(1,cr,2); } int do_prog(argc,argv) char *argv[]; { int result; if (666 == (result = fexecvp(argv[0],argv))) { (void)invalid(argc,argv); perror(""); return -1; } return result; } int drive(argc,argv) char *argv[]; { char *dir,*getcwd(); if (argc != 1) return -1; bdos(0xe,toupper(**argv) - 'A'); /* select drive 0 */ if (NULL == (dir = getcwd(NULL,64))) return -1; free(dir); return 0; } int echo(argc,argv) char *argv[]; { register int i; for (i = 1; i < argc;i++) { write(2,argv[i],strlen(argv[i])); if (i < argc-1) write(2," ",1); } crlf(); return 0; } int invalid(argc,argv) char *argv[]; { register int i; static char *invmsg = "sh : bad command : "; write(2,invmsg,strlen(invmsg)); for (i = 0; i < argc;i++) { write(2,argv[i],strlen(argv[i])); write(2," ",1); } return -1; } touch(argc,argv) char *argv[]; { while(--argc) utime(*(++argv),NULL); }