|
|
1.1 ! root 1: /* alias.c */ ! 2: ! 3: /* Author: ! 4: * Peter Reinig ! 5: * Universitaet Kaiserslautern ! 6: * Postfach 3049 ! 7: * 7650 Kaiserslautern ! 8: * W. Germany ! 9: * [email protected] ! 10: */ ! 11: ! 12: /* This tiny program executes elvis with the flags that are appropriate ! 13: * for a given command name. This program is used only on systems that ! 14: * don't allow UNIX-style file links. ! 15: * ! 16: * The benefit of this program is: instead of having 5 copies of elvis ! 17: * on your disk, you only need one copy of elvis and 4 copies of this ! 18: * little program. ! 19: */ ! 20: ! 21: #include <stdio.h> ! 22: #include "config.h" ! 23: ! 24: #if OSK ! 25: #define ELVIS "/dd/usr/cmds/elvis" ! 26: #else ! 27: #define ELVIS "elvis" ! 28: #endif ! 29: ! 30: extern char **environ; ! 31: extern int errno; ! 32: ! 33: main(argc, argv) ! 34: int argc; ! 35: char *argv[]; ! 36: { ! 37: int pid, i; ! 38: char **argblk; ! 39: #if OSK ! 40: extern int chainc(); ! 41: #endif ! 42: ! 43: if ((argblk = (char **) malloc((argc + 2) * sizeof(char *))) == 0) ! 44: { ! 45: #if OSK ! 46: _errmsg(errno, "Can't get enough memory\n"); ! 47: #else ! 48: fprintf(stderr, "%s: Can't get enough memory\n", argv[0]); ! 49: #endif ! 50: exit(2); ! 51: } ! 52: i = 1; ! 53: switch (argv[0][strlen(argv[0]) - 1]) ! 54: { ! 55: case 'w': /* "view" */ ! 56: case 'W': ! 57: argblk[i++] = "-R"; ! 58: break; ! 59: ! 60: #if !OSK ! 61: case 'x': /* "ex" */ ! 62: case 'X': ! 63: argblk[i++] = "-x"; ! 64: break; ! 65: #endif ! 66: ! 67: case 't': /* "input" */ ! 68: case 'T': ! 69: argblk[i++] = "-i"; ! 70: break; ! 71: } ! 72: argv++; ! 73: while(argc--) ! 74: argblk[i++] = *argv++; ! 75: argblk[0] = ELVIS; ! 76: #if OSK ! 77: pid = os9exec(chainc, argblk[0], argblk, environ, 0, 0, 3); ! 78: #else ! 79: (void)execvp(argblk[0], argblk); ! 80: #endif ! 81: fprintf(stderr, "%s: cannot execute\n", argblk[0]); ! 82: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.