|
|
1.1 ! root 1: #define _DDI_DKI 1 ! 2: #define _SYSV4 1 ! 3: ! 4: /* ! 5: * This program performs some simple processing on a device master-file, ! 6: * mdevice (4) as specified in the "System File and Devices Reference ! 7: * Manual" for Unix System V, Release 4. ! 8: * ! 9: * The first part of the program inhales the 'mdevice' file. Other processing ! 10: * is dependent on the internal details of the character-device interface ! 11: * used by Coherent - our aim is to supply details for a mapping layer that ! 12: * converts the Coherent device system calling format. ! 13: */ ! 14: /* ! 15: *-IMPORTS: ! 16: * <sys/compat.h> ! 17: * CONST ! 18: * PROTO ! 19: * ARGS () ! 20: * LOCAL ! 21: * <stdlib.h> ! 22: * EXIT_SUCCESS ! 23: * EXIT_FAILURE ! 24: * NULL ! 25: * free () ! 26: * malloc () ! 27: * <unistd.h> ! 28: * STDERR_FILENO ! 29: * "mdev.h" ! 30: * read_mdev_file () ! 31: * "sdev.h" ! 32: * read_sdev_file () ! 33: * "symbol.h" ! 34: * symbol_init () ! 35: * "assign.h" ! 36: * assign_imajors () ! 37: * "mkconf.c" ! 38: * write_conf_c () ! 39: */ ! 40: ! 41: #include <sys/compat.h> ! 42: #include <stdlib.h> ! 43: #include <unistd.h> ! 44: ! 45: #include "mdev.h" ! 46: #include "sdev.h" ! 47: #include "mtune.h" ! 48: #include "stune.h" ! 49: #include "symbol.h" ! 50: #include "assign.h" ! 51: #include "mkconf.h" ! 52: ! 53: /* ! 54: * Some ancient systems do not define EXIT_SUCCESS or EXIT_FAILURE. ! 55: */ ! 56: ! 57: #ifndef EXIT_SUCCESS ! 58: #define EXIT_SUCCESS 0 ! 59: #define EXIT_FAILURE 1 ! 60: #endif ! 61: ! 62: ! 63: #ifdef USE_PROTO ! 64: void usage (void) ! 65: #else ! 66: void ! 67: usage () ! 68: #endif ! 69: { ! 70: static char usage_msg [] = { ! 71: "Usage:\t-d\tGenerate device configuration tables and makefiles\n" ! 72: "\t-t\tGenerate tunable parameter tables\n" ! 73: }; ! 74: ! 75: write (STDERR_FILENO, usage_msg, sizeof (usage_msg) - 1); ! 76: } ! 77: ! 78: ! 79: #ifdef USE_PROTO ! 80: int main (int argc, char * argv []) ! 81: #else ! 82: int ! 83: main (argc, argv) ! 84: int argc; ! 85: char * argv []; ! 86: #endif ! 87: { ! 88: extinfo_t * extinfop; ! 89: int do_devices = 0; ! 90: int do_tune = 0; ! 91: int i; ! 92: ! 93: symbol_init (); ! 94: ! 95: for (i = 1 ; i < argc ; i ++) { ! 96: int switches; ! 97: int j; ! 98: ! 99: if (argv [i][0] != '-') { ! 100: usage (); ! 101: return EXIT_FAILURE; ! 102: } ! 103: ! 104: switches = strlen (argv [i]); ! 105: ! 106: for (j = 1 ; j < switches ; j ++) { ! 107: ! 108: switch (argv [i][j]) { ! 109: ! 110: case 'd': ! 111: do_devices ++; ! 112: break; ! 113: ! 114: case 't': ! 115: do_tune ++; ! 116: break; ! 117: ! 118: default: ! 119: usage (); ! 120: return EXIT_FAILURE; ! 121: } ! 122: } ! 123: } ! 124: ! 125: if (! do_devices && ! do_tune) { ! 126: usage (); ! 127: return EXIT_FAILURE; ! 128: } ! 129: ! 130: if (do_devices) { ! 131: read_mdev_file ("mdevice"); ! 132: read_sdev_file ("sdevice"); ! 133: ! 134: if ((extinfop = assign_imajors ()) != NULL) { ! 135: ! 136: write_conf_c ("conf.c", extinfop); ! 137: free (extinfop); ! 138: } ! 139: ! 140: write_link ("drvbld.mak", "template.mak"); ! 141: } ! 142: ! 143: if (do_tune) { ! 144: read_mtune_file ("mtune"); ! 145: read_stune_file ("stune"); ! 146: write_conf_h ("conf.h"); ! 147: } ! 148: ! 149: return EXIT_SUCCESS; ! 150: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.