Annotation of researchv10dc/man/man1/cin.1, revision 1.1.1.1

1.1       root        1: . \" Copyright 1984,1985,1986,1987,1988,1989,1990 AT&T Bell Laboratories
                      2: .TH CIN 1
                      3: .CT 1 prog_c
                      4: .SH NAME
                      5: cin \- C interpreter
                      6: .SH SYNOPSIS
                      7: .B cin
                      8: [
                      9: .I option ...
                     10: ]
                     11: [
                     12: .I file ...
                     13: ]
                     14: [
                     15: .B --
                     16: .I arg ...
                     17: ]
                     18: .SH DESCRIPTION
                     19: .I Cin
                     20: interprets a C program comprising the
                     21: .I file
                     22: arguments as in
                     23: .IR cc (1).
                     24: The special name
                     25: .L -
                     26: signifies standard input.
                     27: When called with no
                     28: .I file
                     29: arguments,
                     30: .I cin
                     31: defaults to
                     32: .BR -i .
                     33: Arguments
                     34: .I arg
                     35: are passed to the interpreted program as
                     36: .BR cin_argv[1] ,
                     37: .BR cin_argv[2] ,
                     38: \&...
                     39: and
                     40: .BR cin_argc .
                     41: .PP
                     42: Options
                     43: .BI -D name = def ,
                     44: .BI -D name ,
                     45: .BI -L name ,
                     46: .BI -U name ,
                     47: .BI -I name ,
                     48: .BI -l x ,
                     49: .BI -o name ,
                     50: and
                     51: .BI -u name
                     52: are as in
                     53: .IR cc .
                     54: Options
                     55: .B -O
                     56: and
                     57: .B -g
                     58: are ignored.
                     59: Other options are:
                     60: .TP
                     61: .BI -0 name
                     62: Pass
                     63: .I name
                     64: to the interpreted program as
                     65: .BR cin_argv[0] .
                     66: .TP
                     67: .BI -C name
                     68: Use
                     69: .I name
                     70: as the interpreter startup file
                     71: (by default, the file
                     72: .FR $HOME/.cin.c ).
                     73: The interpreter startup file is ignored by using
                     74: .BR -C/dev/null .
                     75: .TP
                     76: .BI -F i : o : e
                     77: Use file descriptors
                     78: .IR i , o , e
                     79: as standard input, standard output, and standard error for the
                     80: interpreter, as distinct from the interpreted code
                     81: (by default, 0, 1, and 2).
                     82: .TP
                     83: .B -S
                     84: Enable interactive mode after run-time errors.
                     85: .TP
                     86: .BI -V name : n
                     87: Declare function
                     88: .I name
                     89: to have a variable number of arguments, the first
                     90: .I n
                     91: of which are to be type-checked.
                     92: .TP
                     93: .B -c
                     94: Parse files but do not execute the program.
                     95: .TP
                     96: .B -i
                     97: Enable interactive interpretation.
                     98: C statements are evaluated immediately using local and global variables.
                     99: Non-void values are printed.
                    100: Function, variable, and C pre-processor declarations are stored
                    101: in the current `view'.
                    102: A function definition must include its return type.
                    103: Declarations and statements can appear in any order and
                    104: identifiers can be redeclared.
                    105: .TP
                    106: .B -r
                    107: Prohibit multiply-declared global variables.
                    108: .TP
                    109: .B -s
                    110: Do not catch signals using
                    111: .IR signal (2)
                    112: (by default,
                    113: .I cin
                    114: catches
                    115: .BR SIGBUS ,
                    116: .BR SIGEMT ,
                    117: .BR SIGFPE ,
                    118: .BR SIGILL ,
                    119: .BR SIGINT ,
                    120: .BR SIGIOT ,
                    121: .BR SIGSEGV ,
                    122: .BR SIGSYS ,
                    123: .BR SIGTRAP ).
                    124: .TP
                    125: .B -v
                    126: Print the user and system times associated with loading files and executing
                    127: the program, as in
                    128: .IR time (1).
                    129: .TP
                    130: .BI + option
                    131: Turn off the specified
                    132: .IR option .
                    133: .PP
                    134: The functions and variables listed below are predefined in
                    135: .I cin
                    136: and
                    137: .IR libcin.a .
                    138: Their arguments are typed according to these conventions:
                    139: .IP
                    140: .B char
                    141: .BI * func ,
                    142: .BI * message ,
                    143: .BI * mod ,
                    144: .BI * name ,
                    145: .BI * ref ,
                    146: .BI * string ;
                    147: .br
                    148: .B enode
                    149: .BI * code ;
                    150: .br
                    151: .B int
                    152: .IB level ,
                    153: .IB line ;
                    154: .br
                    155: .B long
                    156: .BI (* after )();
                    157: .br
                    158: .B unsigned
                    159: .B long
                    160: .IB addr ;
                    161: .br
                    162: .B void
                    163: .BI (* before )(),
                    164: .BI (* routine )();
                    165: .PP
                    166: This first group of functions and variables are the most commonly used.
                    167: To use them load
                    168: .F libcin.a
                    169: and include
                    170: .FR cin.h .
                    171: .PP
                    172: .HP
                    173: .BI "int cin_break(" name ,
                    174: .IB line ,
                    175: .IB string )
                    176: .br
                    177: If
                    178: .I string
                    179: is
                    180: .BR "(char *)0" ,
                    181: place a
                    182: .B cin_system
                    183: in file
                    184: .I name
                    185: before line number
                    186: .IR line .
                    187: Otherwise,
                    188: place the C-language statement specified by
                    189: .I string
                    190: in file
                    191: .I name
                    192: before line number
                    193: .IR line .
                    194: Thus,
                    195: .IR string
                    196: is read and evaluated
                    197: within the prevailing context of the function
                    198: without stopping execution.
                    199: Return 0 if line number
                    200: .I line
                    201: cannot be found in file
                    202: .IR name .
                    203: .TP
                    204: .BI "int cin_dump(" name )
                    205: Create an
                    206: .F a.out
                    207: and place it in the file
                    208: .IR name .
                    209: Return 0 if
                    210: .I name
                    211: cannot be created.
                    212: .TP
                    213: .BI "void cin_info(" string )
                    214: Where
                    215: .I string
                    216: is:
                    217: .RS
                    218: .TP
                    219: .B breakpoint
                    220: Print
                    221: .IR cin 's
                    222: .BR cin_break s
                    223: and
                    224: .BR cin_stopin s.
                    225: .TP
                    226: .B log
                    227: Print
                    228: .IR cin 's
                    229: interactive mode log file name.
                    230: .TP
                    231: .B memory
                    232: Print
                    233: .IR cin 's
                    234: memory usage.
                    235: .TP
                    236: .B spy
                    237: Print
                    238: .IR cin 's
                    239: spies.
                    240: .TP
                    241: .B symboltable
                    242: Print
                    243: .IR cin 's
                    244: symbol table.
                    245: .TP
                    246: .B undefined
                    247: Print
                    248: .IR cin 's
                    249: undefined variables.
                    250: .TP
                    251: .B usage
                    252: Print
                    253: .IR cin 's
                    254: usage message.
                    255: .TP
                    256: .B version
                    257: Print
                    258: .IR cin 's
                    259: version number.
                    260: .TP
                    261: .B view
                    262: List the available views.
                    263: The current view is starred
                    264: .RB ( * ).
                    265: .TP
                    266: .B where
                    267: Print a trace of function calls.
                    268: .TP
                    269: .B wrapper
                    270: Print
                    271: .IR cin 's
                    272: wrappers.
                    273: .RE
                    274: .TP
                    275: .BI "int cin_load(" string )
                    276: Evaluate
                    277: .I string
                    278: as invocation arguments of
                    279: .IR cin .
                    280: Return 0 if arguments are not valid.
                    281: .TP
                    282: .BI "int cin_log(" name )
                    283: .IR mv (1)
                    284: the interactive mode session log to file
                    285: .IR name .
                    286: Return 0 if
                    287: .I name
                    288: cannot be
                    289: .IR mv ed.
                    290: .TP
                    291: .BI "void cin_make(" string )
                    292: If
                    293: .I string
                    294: is
                    295: .BR "(char *)0" ,
                    296: then re-load any file that is out of date.
                    297: Otherwise,
                    298: run
                    299: .BR $MAKE ,
                    300: passing
                    301: .I string
                    302: as arguments, and scan
                    303: its standard output for lines that begin with pound sign
                    304: .RB ( # ).
                    305: Characters following the pound sign are executed as
                    306: a C-language statement.
                    307: .HP
                    308: .BI "int cin_pp(" func ,
                    309: .IB level )
                    310: .br
                    311: Print the C-language for the function
                    312: .IR func .
                    313: Where
                    314: .I level
                    315: is:
                    316: .RS
                    317: .TP
                    318: .B 0
                    319: Print declaration.
                    320: .TP
                    321: .B 1
                    322: Print declaration and body.
                    323: .PP
                    324: Return 0 if
                    325: .I func
                    326: cannot be found.
                    327: .RE
                    328: .TP
                    329: .B "void cin_quit()"
                    330: Flush output and exit
                    331: .IR cin .
                    332: If all else fails,
                    333: use
                    334: .IR _exit(2) .
                    335: .TP
                    336: .B "int cin_reset()"
                    337: Preserve function definitions,
                    338: zero bss variables,
                    339: and restore initialized data variables to their original values.
                    340: Return 0 if
                    341: state cannot be reset.
                    342: .TP
                    343: .B "void cin_return()"
                    344: Return from a call to
                    345: .BR cin_system .
                    346: .TP
                    347: .BI "void cin_run(" string )
                    348: Set
                    349: .BR cin_argv[1] ,
                    350: .BR cin_argv[2] ,
                    351: \&...
                    352: and
                    353: .B cin_argc
                    354: from
                    355: .I string
                    356: and then
                    357: .BR "main(cin_argc, cin_argv)" .
                    358: .HP
                    359: .BI "int cin_spy(" func ,
                    360: .IB name ,
                    361: .IB mod ,
                    362: .IB ref )
                    363: .br
                    364: Trace variable references and modifications.
                    365: If
                    366: .I mod
                    367: is not
                    368: .BR "(char *)0" ,
                    369: place the C-language statement specified by
                    370: .I mod
                    371: after the variable
                    372: .I name
                    373: is modified in the function
                    374: .IR func .
                    375: If
                    376: .I ref
                    377: is not
                    378: .BR "(char *)0" ,
                    379: place the C-language statement specified by
                    380: .I ref
                    381: before the variable
                    382: .I name
                    383: is referenced in the function
                    384: .IR func .
                    385: If function value
                    386: .I func
                    387: is
                    388: .BR "(char *)0" ,
                    389: search all functions.
                    390: Return 0 if
                    391: .I name
                    392: cannot be found in
                    393: .IR func .
                    394: .TP
                    395: .B "void cin_step()"
                    396: Step over function calls
                    397: to the next C-language statement in the current or previous function.
                    398: .TP
                    399: .B "void cin_stepin()"
                    400: Step into any function to the next C-language statement.
                    401: .TP
                    402: .B "void cin_stepout()"
                    403: Step out of the current function back to the next C-language statement
                    404: in the previous function.
                    405: .HP
                    406: .BI "int cin_stopin(" func ,
                    407: .IB string )
                    408: .br
                    409: If
                    410: .I string
                    411: is
                    412: .BR "(char *)0" ,
                    413: place a
                    414: .B cin_system
                    415: before the first
                    416: executable line in the function
                    417: .IR func ,
                    418: either in the current view or wherever
                    419: .I func
                    420: can be found.
                    421: Otherwise,
                    422: place the C-language statement specified by
                    423: .I string
                    424: before the first
                    425: executable line in the function
                    426: .IR func ,
                    427: either in the current view or wherever it can be found.
                    428: Thus,
                    429: .IR string
                    430: is read and evaluated
                    431: within the prevailing context of the function
                    432: without stopping execution.
                    433: Return 0 if function
                    434: .I func
                    435: cannot be found.
                    436: .TP
                    437: .BI "char *cin_sync(" string )
                    438: Where
                    439: .I string
                    440: is:
                    441: .RS
                    442: .TP
                    443: .B filename
                    444: Return the non-interactive C source file name being executed.
                    445: .TP
                    446: .B lineno
                    447: Return the non-interactive C source line number being executed.
                    448: .RE
                    449: .TP
                    450: .B "void cin_system()"
                    451: Start a
                    452: .BR cin_read - cin_eval - cin_print
                    453: loop.
                    454: .HP
                    455: .BI "int cin_unbreak(" name ,
                    456: .IB line ,
                    457: .IB string )
                    458: .br
                    459: Clear a 
                    460: .B cin_break
                    461: or a
                    462: .B cin_stopin
                    463: in file
                    464: .I name
                    465: before line number
                    466: .I line
                    467: with string
                    468: .IR string .
                    469: Return 0 if
                    470: .B cin_break
                    471: or
                    472: .B cin_stopin
                    473: cannot be cleared.
                    474: .TP
                    475: .BI "int cin_unload(" name )
                    476: Unload the object file
                    477: .IR name .
                    478: Return 0 if
                    479: .I name
                    480: cannot be unloaded.
                    481: .HP
                    482: .BI "int cin_unspy(" func ,
                    483: .IB name ,
                    484: .IB mod ,
                    485: .IB ref )
                    486: .br
                    487: Remove the C-language statement specified by
                    488: .I mod
                    489: after the variable
                    490: .I name
                    491: is modified,
                    492: and the C-language statement specified by
                    493: .I ref
                    494: before the variable
                    495: .I name
                    496: is referenced in the function
                    497: .IR func .
                    498: Return 0 if spy cannot be cleared.
                    499: .HP
                    500: .BI "int cin_unstopin(" func ,
                    501: .IB string )
                    502: .br
                    503: Clear a 
                    504: .B cin_stopin
                    505: or
                    506: .B cin_break
                    507: at the first
                    508: executable line in the function
                    509: .I func
                    510: with string
                    511: .I string
                    512: in either the current view or wherever
                    513: .I func
                    514: can be found.
                    515: Return 0 if the
                    516: .B cin_stopin
                    517: or
                    518: .B cin_break
                    519: cannot be cleared.
                    520: .HP
                    521: .BI "int cin_unwrapper(" func ,
                    522: .IB before ,
                    523: .IB after )
                    524: .br
                    525: Remove the call of function
                    526: .I before
                    527: before the function
                    528: .I func
                    529: is called.
                    530: Remove the call of function
                    531: .I after
                    532: after the function
                    533: .I func
                    534: is called.
                    535: Return 0 if
                    536: .I func
                    537: cannot be found.
                    538: .TP
                    539: .BI "int cin_view(" name )
                    540: Change the current view to
                    541: .IR name .
                    542: Return 0 if the view cannot be found.
                    543: .HP
                    544: .BI "int cin_wrapper(" func ,
                    545: .IB before ,
                    546: .IB after )
                    547: .br
                    548: If
                    549: .I before
                    550: is not
                    551: .BR "(void (*)())0" ,
                    552: call the function
                    553: .I before
                    554: with the arguments of function
                    555: .I func
                    556: before the function
                    557: .I func
                    558: is called.
                    559: If
                    560: .I after
                    561: is not
                    562: .BR "(long (*)())0" ,
                    563: call the function
                    564: .I after
                    565: with the argument of the return value of function
                    566: .I func
                    567: after the function
                    568: .I func
                    569: is called.
                    570: The return value of function
                    571: .I after
                    572: is substituted for the return value of function
                    573: .IR func .
                    574: Return 0 if
                    575: .I name
                    576: cannot be found either in the current view or any other view.
                    577: .TP
                    578: .B "extern int cin_argc"
                    579: The number of elements passed to the interpreted program.
                    580: .TP
                    581: .B "extern char **cin_argv"
                    582: An array of the arguments passed to the interpreted program.
                    583: .TP
                    584: .B "extern char *cin_filename"
                    585: The current C source file name being executed.
                    586: .TP
                    587: .B "extern int cin_level"
                    588: The number of nested calls to
                    589: .BR cin_system .
                    590: .TP
                    591: .B "extern char *cin_libpath"
                    592: A colon
                    593: .RB ( : )
                    594: -separated list of libraries to search for undefined routines
                    595: (by default,
                    596: the libraries specified on the command line and
                    597: .FR -lc ).
                    598: .TP
                    599: .B "extern int cin_lineno"
                    600: The current C source line number being executed.
                    601: .TP
                    602: .B "extern char *cin_prompt"
                    603: The interactive mode prompt (by default,
                    604: the string
                    605: .RB `` cin> " '')."
                    606: .PP
                    607: These are some of the less frequently used functions and variables in
                    608: .IR cin .
                    609: They are primarily used by
                    610: .I cin
                    611: library or language developers.
                    612: .TP
                    613: .BI "enode *cin_compile(" code )
                    614: Analyze
                    615: .I code
                    616: and return an optimized program.
                    617: Return
                    618: .B "(enode *)0"
                    619: if
                    620: .I code
                    621: cannot be compiled.
                    622: .TP
                    623: .BI "int cin_epp(" func )
                    624: Print the
                    625: .BR enode s
                    626: for function
                    627: .IR func .
                    628: Return 0 if
                    629: .I func
                    630: cannot be found.
                    631: .TP
                    632: .BI "enode *cin_eprint(" code )
                    633: Print the
                    634: .I code
                    635: as
                    636: .BR enode s.
                    637: Return the argument.
                    638: .HP
                    639: .BI "char *cin_error_code_set(" message ,
                    640: .IB string )
                    641: .br
                    642: Where
                    643: .I message
                    644: is:
                    645: .RS
                    646: .TP
                    647: .B dynamic error
                    648: When
                    649: .I cin
                    650: detects
                    651: a divide by zero,
                    652: a modulus by zero,
                    653: a null pointer access,
                    654: or
                    655: an abnormal signal
                    656: execute the C-language statement specified by
                    657: .IR string .
                    658: .TP
                    659: .B undefined function
                    660: When
                    661: .I cin
                    662: detects an undefined function execute the C-language statement specified by
                    663: .IR string .
                    664: .TP
                    665: .B undefined symbol
                    666: When
                    667: .I cin
                    668: detects
                    669: an undefined symbol execute the C-language statement specified by
                    670: .IR string .
                    671: .PP
                    672: If
                    673: .I string
                    674: is
                    675: .BR "(char *)0" ,
                    676: execute
                    677: .BR cin_system() .
                    678: Return the old
                    679: .I string
                    680: for
                    681: .IR message .
                    682: .RE
                    683: .TP
                    684: .BI "enode *cin_eval(" code )
                    685: Execute the
                    686: .I code
                    687: as if it were present in the program where
                    688: .B cin_eval
                    689: is called.
                    690: Return the resulting program.
                    691: .TP
                    692: .BI "ident *cin_find_ident(" name )
                    693: If
                    694: .I name
                    695: is not
                    696: .BR "(char *)0" ,
                    697: return the identifier for the variable
                    698: .I name
                    699: either in the current view or wherever
                    700: .I name
                    701: can be found.
                    702: If
                    703: .I name
                    704: is
                    705: .BR "(char *)0" ,
                    706: return the identifier for the previous non-
                    707: .B "(char *)0"
                    708: value of the variable
                    709: .I name
                    710: in the next view where
                    711: .I name
                    712: can be found.
                    713: Return
                    714: .B "(ident *)0"
                    715: if
                    716: .I name
                    717: cannot be found.
                    718: .TP
                    719: .BI "struct nlist *cin_find_nlist(" addr )
                    720: Return the loader symbol table entry for the external address
                    721: .IR addr .
                    722: Return
                    723: .B "(struct nlist *)0"
                    724: if
                    725: .I addr
                    726: cannot be found.
                    727: .HP
                    728: .BI "void (*cin_info_set())(" string ,
                    729: .IB routine )
                    730: .br
                    731: Inform
                    732: .B cin_info
                    733: that it should call
                    734: .I routine
                    735: when it is passed
                    736: .IR string .
                    737: Return the old
                    738: .I routine
                    739: for
                    740: .IR string .
                    741: .TP
                    742: .BI "char *cin_ltof(" line )
                    743: Return the function name at line number
                    744: .I line
                    745: in the current view.
                    746: Return
                    747: .B "(char *)0"
                    748: if a function cannot be found for
                    749: .IR line .
                    750: .TP
                    751: .BI "void cin_pop(" level )
                    752: Replace
                    753: .I level
                    754: interpreted function calls from the stack with
                    755: .BR cin_system .
                    756: .HP
                    757: .BI "enode *cin_print(" code ,
                    758: .IB level )
                    759: .br
                    760: Print the
                    761: .I code
                    762: as C-language code.
                    763: Where
                    764: .I level
                    765: is:
                    766: .RS
                    767: .TP
                    768: .B 0
                    769: Print declaration.
                    770: .TP
                    771: .B 1
                    772: Print declaration and body.
                    773: .PP
                    774: Return the
                    775: .I code
                    776: argument.
                    777: .RE
                    778: .TP
                    779: .BI "enode *cin_read(" string )
                    780: Read
                    781: .I string
                    782: and return a program.
                    783: Return
                    784: .B "(enode *)0"
                    785: if
                    786: .I string
                    787: cannot be parsed.
                    788: .TP
                    789: .BI "char *cin_slashify(" string )
                    790: Return a pointer to storage obtained from
                    791: .IR malloc (3)
                    792: and there create a character array from
                    793: .I string
                    794: by translating
                    795: backspace,
                    796: form feed,
                    797: newline,
                    798: carriage return,
                    799: horizontal tab,
                    800: vertical tab,
                    801: backslash,
                    802: single quote,
                    803: and double quote
                    804: into
                    805: .BR \eb ,
                    806: .BR \ef ,
                    807: .BR \en ,
                    808: .BR \er ,
                    809: .BR \et ,
                    810: .BR \ev ,
                    811: .BR \e\e ,
                    812: .BR \e' ,
                    813: and
                    814: .B \e"
                    815: respectively.
                    816: Other non-printable characters are translated into
                    817: .BI \e ddd
                    818: octal notation.
                    819: .TP
                    820: .B "extern int cin_err_fd"
                    821: .IR Cin 's
                    822: standard error file descriptor.
                    823: .TP
                    824: .B "extern int cin_in_fd"
                    825: .IR Cin 's
                    826: standard input file descriptor.
                    827: .TP
                    828: .B "extern int cin_out_fd"
                    829: .IR Cin 's
                    830: standard output file descriptor.
                    831: .TP
                    832: .B "extern stackelem *cin_stack"
                    833: The trace of function calls.
                    834: .TP
                    835: .B "extern view *cin_views"
                    836: The list of available views.
                    837: .SH EXAMPLES
                    838: .TP
                    839: The world's shortest ``Hello world'' program.
                    840: .EX
                    841: cin> printf("Hello world\en");
                    842: Hello world
                    843: (int)12
                    844: .EE
                    845: .TP
                    846: Setting breakpoints and tracing function calls.
                    847: .EX
                    848: $ cin -lcin
                    849: cin> int f(x) { return x <= 1 ? 1 : x * f(x - 1); }
                    850: extern int f();
                    851: cin> cin_stopin("f", (char*)0);
                    852: /tmp/cin006795: 1: f: set breakpoint: (char *)0
                    853: (int)1
                    854: cin> f(2);
                    855: /tmp/int006795: 1: f: stopped execution:
                    856: cin> cin_return();
                    857: /tmp/int006795: 1: f: stopped execution:
                    858: cin> (void)cin_info("where");
                    859: /tmp/cin006795: 5: cin_system: info: where: ()
                    860: /tmp/cin006795: 1: f: info: where: (x = (int)1)
                    861: /tmp/cin006795: 1: f: info: where: (x = (int)2)
                    862: /tmp/cin006795: 3: cin_system: info: where: ()
                    863: cin> x;
                    864: (int)1
                    865: cin> cin_return();
                    866: (int)2
                    867: cin> cin_quit();
                    868: $
                    869: .EE
                    870: .SH FILES
                    871: .TF /usr/include/cin.h
                    872: .TP
                    873: .F /tmp/cin*
                    874: default interactive log
                    875: .TP
                    876: .F /usr/include/cin.h
                    877: various function and variable declarations
                    878: .TP
                    879: .F /usr/lib/libcin.a
                    880: various predefined functions
                    881: .TP
                    882: .F $HOME/.cin.c
                    883: interpreter startup file
                    884: .HP
                    885: other files as in
                    886: .IR cc (1)
                    887: .SH "SEE ALSO"
                    888: .I "Cin User Manual"
                    889: .br
                    890: .I "Cin Reference Manual"
                    891: .br
                    892: B. W. Kernighan and D. M. Ritchie,
                    893: .IR "The C Programming Language" ,
                    894: Prentice-Hall,
                    895: 1978
                    896: .br
                    897: .IR lint (1),
                    898: .IR ar (1),
                    899: .IR cc (1)
                    900: .SH BUGS
                    901: The addresses of
                    902: .IR etext ,
                    903: .IR edata ,
                    904: and
                    905: .I end
                    906: are not meaningful with incrementally loaded code.

unix.superglobalmegacorp.com

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