|
|
1.1 ! root 1: /* ! 2: * coh_intro.c ! 3: * 6/5/91 ! 4: * Usage: coh_intro ! 5: * Uses routines in build0.c: cc -o coh_intro coh_intro.c build0.c ! 6: */ ! 7: ! 8: #include <stdio.h> ! 9: #include "build0.h" ! 10: ! 11: #define VERSION "1.5" ! 12: #define DEFPAGER "exec more -d" ! 13: ! 14: /* External. */ ! 15: extern char *getenv(); ! 16: ! 17: /* Forward. */ ! 18: int lcdir(); ! 19: void mycls(); ! 20: void tour(); ! 21: ! 22: /* Global. */ ! 23: char *pager; ! 24: int ttyflag; ! 25: ! 26: main(argc, argv) int argc; char *argv[]; ! 27: { ! 28: if (argc > 1 && argv[1][0] == '-' && argv[1][1] == 'V') ! 29: fprintf(stderr, "%s: V%s\n", argv[0], VERSION); ! 30: ttyflag = isatty(fileno(stdout)); ! 31: if ((pager = getenv("PAGER")) == NULL || *pager == '\0') ! 32: pager = DEFPAGER; ! 33: if (!ttyflag || yes_no("Would you like an introductory tour of COHERENT")) ! 34: tour(); ! 35: exit(0); ! 36: } ! 37: ! 38: /* ! 39: * List the contents of a directory. ! 40: * Flush stdout in case output is redirected. ! 41: * If pflag is true (big directory), pipe output through PAGER. ! 42: */ ! 43: int ! 44: lcdir(dir, msg, pflag) char *dir, *msg; int pflag; ! 45: { ! 46: mycls(1); ! 47: printf(msg); ! 48: fflush(stdout); ! 49: if (ttyflag && pflag) ! 50: sprintf(cmd, "lc %s | %s", dir, pager); ! 51: else ! 52: sprintf(cmd, "lc %s", dir); ! 53: return sys(cmd, S_IGNORE); ! 54: } ! 55: ! 56: /* Print newlines if stdout is redirected; otherwise, clear the screen. */ ! 57: void ! 58: mycls(flag) ! 59: { ! 60: if (ttyflag) ! 61: cls(flag); ! 62: else ! 63: printf("\n\n"); ! 64: } ! 65: ! 66: /* Take a walk on the Boardwalk... */ ! 67: void ! 68: tour() ! 69: { ! 70: mycls(0); ! 71: /* Startup and shutdown. */ ! 72: printf( ! 73: "When you boot your computer system (by turning on the power,\n" ! 74: "by hitting the reset switch, or by typing <Ctrl><Alt><Del>),\n" ! 75: "the bootstrap program by default runs the operating system on\n" ! 76: "the partition marked as active. To boot an operating system\n" ! 77: "system on a different partition, type a partition number (0 to 7)\n" ! 78: "when the boot tries to read the floppy disk.\n" ! 79: "\n" ! 80: "When you boot COHERENT, it starts up in single-user mode.\n" ! 81: "It automatically executes the commands in the file /etc/brc,\n" ! 82: "which typically check COHERENT filesystems for consistency\n" ! 83: "using /etc/fsck. If the filesystems check without errors,\n" ! 84: "the system goes into multi-user mode, automatically executing\n" ! 85: "the commands in the file /etc/rc. You can interrupt file system\n" ! 86: "checking by typing <Ctrl-C>.\n" ! 87: "\n" ! 88: "To shut down COHERENT from multi-user mode, log in as root and\n" ! 89: "execute /etc/shutdown to return the system to single-user mode.\n" ! 90: "Then type sync before rebooting or turning off the power.\n" ! 91: "Your COHERENT filesystems may be damaged if you reboot or\n" ! 92: "power down without following this procedure.\n" ! 93: "\n" ! 94: ); ! 95: ! 96: /* Root. */ ! 97: lcdir("/", ! 98: "Now we will take a quick tour of your COHERENT filesystem.\n" ! 99: "The root directory / contains:\n\n", ! 100: 0); ! 101: printf( ! 102: "\n" ! 103: "COHERENT executes file /.profile when the superuser root logs in.\n" ! 104: "File /coherent (linked to /autoboot) is the COHERENT system image.\n" ! 105: "Empty directories /f0 and /f1 are used for mounting diskettes.\n" ! 106: "Empty directory /mnt is used for mounting other devices.\n" ! 107: "The filesystem checking program /etc/fsck uses empty directory\n" ! 108: "/lost+found if it finds a problem with the root filesystem.\n" ! 109: "COHERENT uses directory /tmp for temporary files; it removes files\n" ! 110: "in /tmp automatically when the system goes multiuser (via /etc/rc).\n" ! 111: "\n" ! 112: ); ! 113: ! 114: /* /bin. */ ! 115: mycls(1); ! 116: printf( ! 117: "Directory /bin contains executable programs (commands).\n" ! 118: "Some of the most commonly used commands are:\n" ! 119: "\tbc\tinteractive calculator with arbitrary precision\n" ! 120: "\tcat\tconcatenate/print files\n" ! 121: "\tcc\tC compiler\n" ! 122: "\tcmp\tcompare files\n" ! 123: "\tcp\tcopy files\n" ! 124: "\tcpdir\tcopy directory hierarchy\n" ! 125: "\tdiff\tsummarize differences between files\n" ! 126: "\tdos\ttransfer files to or from MS-DOS\n" ! 127: "\ted\tinteractive line-oriented text editor\n" ! 128: "\tegrep\textended pattern search\n" ! 129: "\thelp\tprint concise command description\n" ! 130: "\tlc\tcategorize files in a directory\n" ! 131: "\tls\tlist directory contents\n" ! 132: "\tmail\tcomputer mail\n" ! 133: "\tps\tprint process status\n" ! 134: "\trm\tremove files\n" ! 135: "\trmdir\tremove directories\n" ! 136: "\tscat\tsegmented concatenation\n" ! 137: "\tsort\tsort lines of text\n" ! 138: "\twc\tcount words, lines, characters in a file\n" ! 139: "The next screen lists all the commands in /bin.\n" ! 140: ); ! 141: lcdir("/bin", "", 1); ! 142: putchar('\n'); ! 143: ! 144: /* /conf. */ ! 145: lcdir("/conf", "Directory /conf contains:\n\n", 0); ! 146: putchar('\n'); ! 147: ! 148: /* /conf/kbd. */ ! 149: lcdir ("/conf/kbd", ! 150: "Subdirectory /conf/kbd contains keyboard support:\n\n", ! 151: 0); ! 152: printf( ! 153: "\n" ! 154: "You can change the operation of various keys on your keyboard by changing\n" ! 155: "the appropriate file in /conf/kbd and running /etc/kbdinstall.\n" ! 156: ); ! 157: ! 158: /* /dev. */ ! 159: lcdir("/dev", "Directory /dev contains COHERENT devices:\n\n", 0); ! 160: putchar('\n'); ! 161: mycls(1); ! 162: printf( ! 163: "Some important devices are:\n" ! 164: "\t/dev/at*\tCooked (block-by-block) hard disk partitions\n" ! 165: "\t/dev/com*\tSerial port devices (COM1, COM2, COM3, COM4)\n" ! 166: "\t/dev/console\tConsole terminal\n" ! 167: "\t/dev/f*\t\tFloppy disk devices\n" ! 168: "\t/dev/lpt*\tParallel port devices (LPT1, LPT2 and LPT3)\n" ! 169: "\t/dev/null\tBit bucket\n" ! 170: "\t/dev/rat*\tRaw (character-by-character) hard disk partitions\n" ! 171: "\t/dev/rf*\tRaw (character-by-character) floppy disk devices\n" ! 172: "\n" ! 173: ); ! 174: ! 175: /* /drv. */ ! 176: lcdir("/drv", "Directory /drv contains loadable device drivers:\n\n", 0); ! 177: putchar('\n'); ! 178: ! 179: /* /etc. */ ! 180: lcdir("/etc", ! 181: "Directory /etc contains files and programs used in system administration:\n\n", ! 182: 0); ! 183: putchar('\n'); ! 184: mycls(1); ! 185: printf( ! 186: "Files of particular interest in /etc include:\n" ! 187: "\t/etc/brc\tExecuted when the system comes up single-user\n" ! 188: "\t/etc/group\tDefines user group membership information\n" ! 189: "\t/etc/passwd\tDefines user login information\n" ! 190: "\t/etc/profile\tExecuted for each shell\n" ! 191: "\t/etc/rc\t\tExecuted when the system comes up multi-user\n" ! 192: "\t/etc/ttys\tDefines status of terminals attached to system\n" ! 193: "\n" ! 194: ); ! 195: ! 196: /* /lib. */ ! 197: lcdir("/lib", ! 198: "Directory /lib contains libraries and C compiler phases:\n\n", ! 199: 0); ! 200: putchar('\n'); ! 201: ! 202: /* /usr. */ ! 203: lcdir("/usr", ! 204: "Directory /usr contains a number of subdirectories:\n\n", ! 205: 0); ! 206: printf( ! 207: "\n" ! 208: "\t/usr/adm\tSystem administration files\n" ! 209: "\t/usr/bin\tAdditional COHERENT commands\n" ! 210: "\t/usr/dict\tDictionary for spell command\n" ! 211: "\t/usr/games\tGames\n" ! 212: "\t/usr/include\tHeader files\n" ! 213: "\t/usr/lib\tAdditional libraries\n" ! 214: "\t/usr/man\tCOHERENT online manual pages\n" ! 215: "\t/usr/msgs\tSystem-wide messages\n" ! 216: "\t/usr/pub\tPublic information\n" ! 217: "\t/usr/spool\tWork area for daemon processes\n" ! 218: "\t/usr/src\tSome sources and sample programs\n" ! 219: "\t/usr/tmp\tTemporary file directory\n" ! 220: "\n" ! 221: ); ! 222: ! 223: /* File types. */ ! 224: mycls(1); ! 225: printf( ! 226: "COHERENT filenames often contain an extension following '.' which\n" ! 227: "indicates the contents of the file. Some common extensions are:\n" ! 228: "\n" ! 229: "\t.a\tarchive (or library) in ar format\n" ! 230: "\t.b\tbc source\n" ! 231: "\t.c\tC source\n" ! 232: "\t.h\tC header\n" ! 233: "\t.i\tC intermediate file (cpp output)\n" ! 234: "\t.l\tlex source\n" ! 235: "\t.m\tmacro assembler source\n" ! 236: "\t.o\tobject file (unlinked)\n" ! 237: "\t.r\tnroff or troff input\n" ! 238: "\t.s\tassembler source\n" ! 239: "\t.tar\tarchive in tar format\n" ! 240: "\t.tar.Z\tcompressed tar-format archive, cf. tar, compress\n" ! 241: "\t.tmp\ttemporary file\n" ! 242: "\t.y\tyacc source\n" ! 243: "\t.Z\tcompressed file, cf. compress/uncompress\n" ! 244: "\n" ! 245: ); ! 246: ! 247: /* Diskettes. */ ! 248: mycls(1); ! 249: printf( ! 250: "Some commonly used diskette device names and formats are:\n" ! 251: "\tDevice name Sectors/track Heads Sectors Bytes Format\n" ! 252: "\t/dev/f9a0 9 2 720 360 KB 5.25\"\n" ! 253: "\t/dev/fqa0 9 2 1440 720 KB 3.5\"\n" ! 254: "\t/dev/fha0 15 2 2400 1.2 MB 5.25\"\n" ! 255: "\t/dev/fva0 18 2 2880 1.44 MB 3.5\"\n" ! 256: "Device names ending in '0' and '1' indicate drives A: and B:.\n" ! 257: "\n" ! 258: ); ! 259: mycls(1); ! 260: printf( ! 261: "To use a floppy disk with COHERENT, you must:\n" ! 262: "\t(1) format it with /etc/fdformat,\n" ! 263: "\t(2) check it for bad blocks with /etc/badscan,\n" ! 264: "\t(3) build an empty filesystem on it with /etc/mkfs,\n" ! 265: "\t(4) mount it with /bin/mount or /etc/mount,\n" ! 266: "\t(5) copy files to or from it, e.g. with /bin/cp or /bin/cpdir,\n" ! 267: "and\t(6) unmount it with /bin/umount or /etc/umount.\n" ! 268: "\n" ! 269: "For example, to copy directory /dir to a 5.25\" high density diskette in A:\n" ! 270: "\t/etc/fdformat /dev/fha0\n" ! 271: "\t/etc/badscan -o /tmp/proto /dev/fha0 2400\n" ! 272: "\t/etc/mkfs /dev/fha0 /tmp/proto\n" ! 273: "\t/etc/mount /dev/fha0 /f0\n" ! 274: "\tcpdir -vd /dir /f0/dir\n" ! 275: "\t/etc/umount /dev/fha0\n" ! 276: "/bin/mount and /bin/umount provide handy abbreviations for mount commands.\n" ! 277: "\n" ! 278: ); ! 279: ! 280: /* Done. */ ! 281: mycls(1); ! 282: printf( ! 283: "This concludes your brief introduction to COHERENT.\n" ! 284: "To see this introduction again, type \"/etc/coh_intro\".\n" ! 285: "To create a file with this information, type \"/etc/coh_intro >/tmp/tour\".\n" ! 286: "\n" ! 287: ); ! 288: } ! 289: ! 290: /* end of coh_intro.c */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.