Annotation of coherent/b/etc/Build_401/coh_intro.c, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.