Annotation of coherent/g/usr/lib/uucp/tay104/TODO, revision 1.1

1.1     ! root        1: This is a list of things to do for the Taylor UUCP package.  Please
        !             2: feel free to work on any of them.  You may want to check with me first
        !             3: to make sure that nobody else is working on them as well.
        !             4: 
        !             5: Some of these are my thoughts, but most are suggestions from other
        !             6: people; I have tried to give credit.  They are in the order I received
        !             7: them; the missing numbers have already been implemented.
        !             8: 
        !             9: Just because something is on the list doesn't mean that I necessarily
        !            10: think it is a good idea.  It does mean that I think it's worth
        !            11: thinking about.
        !            12: 
        !            13: 2.
        !            14: 
        !            15: John Cowan <[email protected]> says:
        !            16: 
        !            17: >I think you should accept a broader range of time specifications.
        !            18: >Consider using getdate() (from your handy Usenet news source code)
        !            19: >with its high-powered yacc parser.
        !            20: 
        !            21: Of course, getdate() accepts a single date, but we want a range.  A
        !            22: better syntax would be certainly be nice.
        !            23: 
        !            24: 9.
        !            25: 
        !            26: Gordon Burditt <[email protected]> warns about modifications
        !            27: to the TZ environment variable, to fool uucico into dialing out at an
        !            28: inappropriate time.
        !            29: 
        !            30: 10.
        !            31: 
        !            32: Gordon Burditt <[email protected]> says:
        !            33: 
        !            34: >(4) Less important, because few people will have this problem, is a 
        !            35: >port-specific dialcodes file.  Why?  Well, one system I had was connected
        !            36: >to 2 inside lines "dial 9 for outside line", and one outside line (which
        !            37: >doesn't want the 9).  A number of the systems called were "inside", so
        !            38: >you didn't add the 9 on those lines dialing from inside, but you did add 
        !            39: >"390" to the 4-digit number if you dialed it via "outside".  Also not 
        !            40: >unheard of are systems with 2 outside lines that are local to different 
        !            41: >area codes, or one local outside line and one WATS line (which MUST
        !            42: >have an area code).
        !            43: >Example:
        !            44: >      inside-line Dialcodes           outside-line Dialcodes
        !            45: >      pbx     ""                      pbx     "390"
        !            46: >      local   "9"                     local   ""
        !            47: >      nyc     "9-1212"                nyc     "1212"
        !            48: 
        !            49: 12.
        !            50: 
        !            51: Ralf E. Stranzenbach <[email protected]> says:
        !            52: 
        !            53: >It would be nice to also have the option of running a shell script each time  
        !            54: >uucico connects/disconnects a systen. I do not mean shell scripts for dial/in.  
        !            55: >I would like to do some accounting and batching when the connection  
        !            56: >establishes.
        !            57: 
        !            58: 13.
        !            59: 
        !            60: [email protected] (Leslie Mikesell) writes:
        !            61: 
        !            62: >>local-send /usr/spool/uucppublic !/usr/spool/uucpublic/private
        !            63: >>
        !            64: >>The directories are searched from left to right, and the last one to
        !            65: >>match determines whether the file may be sent or not.  This is
        !            66: >>slightly more general than NOWRITE, since it permits a public
        !            67: >>directory within a private directory within a public directory,
        !            68: >>although probably nobody will ever want that.
        !            69: >
        !            70: >Interesting... The obvious enhancement is to generalize to shell-like
        !            71: >wild cards for the READ/WRITE/COMMANDS entries.
        !            72: 
        !            73: 14.
        !            74: 
        !            75: Should there be a way for chat scripts to specify the parity to
        !            76: generate?  I don't think there's much point to specifying what parity
        !            77: to accept.
        !            78: 
        !            79: 17.
        !            80: 
        !            81: The -b and -s switches to uux are not implemented by uuxqt.
        !            82: 
        !            83: 18.
        !            84: 
        !            85: If we are supposed to call a system back, we should do it immediately
        !            86: rather than merely queuing up an empty command file.
        !            87: 
        !            88: 22.
        !            89: 
        !            90: Add an ftp port type which uses anonymous ftp rather than any of the
        !            91: UUCP protocols to do file transfers.  This would allow ftp work to be
        !            92: done late at night, and allow neighbors of cooperative Internet sites
        !            93: to use UUCP forwarding for anonymous FTP.
        !            94: 
        !            95: 31.
        !            96: 
        !            97: David Nugent: add a -C option to uucico to only call the system if
        !            98: there is work to do.
        !            99: 
        !           100: 32.
        !           101: 
        !           102: It would be nice if uucico could sleep until a line was available.
        !           103: This is complicated by the possibility of wanting to wait for any of
        !           104: several different lines, and one would really want some sort of
        !           105: semaphore function to do it right.  If the available lines could be
        !           106: sorted, then each could be assigned to a byte in a line lock file.
        !           107: Looking for a line could be done by sleeping on a read lock on all
        !           108: possible lines.  Once it came through, write locks would be attempted.
        !           109: If they all failed, somebody else snuck in, so you would sleep on a
        !           110: read lock again.  This isn't great because a process could be starved,
        !           111: but it might be better than nothing.
        !           112: 
        !           113: This could be tied in to uucp and uux, such that they wouldn't
        !           114: actually fire up uucico unless a line was known to be available; an
        !           115: additional switch would be used to fire up uucico anyhow (or one could
        !           116: switch the default behaviour and the switch).
        !           117: 
        !           118: So how do you sort the lines?  You could just use the index in the
        !           119: port (or Devices) file, but what if multiple ports used the same
        !           120: physical device?  Hmmm.
        !           121: 
        !           122: 43.
        !           123: 
        !           124: David Nugent: it would be nice to be able to set debugging, log, and
        !           125: statistics files on a site by site basis.
        !           126: Brian Murrell: heck, set those files on a port by port basis as well.
        !           127: 
        !           128: 74.
        !           129: 
        !           130: Yanek Martinson: allow each system to independently choose whether to
        !           131: permit shell execution.
        !           132: 
        !           133: 81.
        !           134: 
        !           135: Marty Shannon: log reason for dial failure (chat-fail string) in
        !           136: .Status file.
        !           137: 
        !           138: 83.
        !           139: 
        !           140: Switch between 'M' and 'S' correctly in the BNU log file output.
        !           141: 
        !           142: 86.
        !           143: 
        !           144: Les Mikesell: allow a separate program to be specified to handle the
        !           145: communications with a particular system.
        !           146: 
        !           147: 105.
        !           148: 
        !           149: T. William Wells: close and open the Debug file after each file
        !           150: transfer.  Alternatively, cycle through a series of Debug file names
        !           151: every 1000 lines or so.
        !           152: 
        !           153: 106.
        !           154: 
        !           155: Marty Shannon: add a time command for ports, to specify when they may
        !           156: be used.
        !           157: 
        !           158: 115.
        !           159: 
        !           160: T. William Wells: new options for uustat:
        !           161:        -i display job ids only
        !           162: Also, there should perhaps be a configuration option to request uustat
        !           163: to only display jobs submitted by the user running uustat, except for
        !           164: root and uucp.
        !           165: 
        !           166: 117.
        !           167: 
        !           168: Marc Unangst: provide some way to change the debugging level of a
        !           169: running uucico.  T. William Wells suggests having it read a file to
        !           170: change arbitrary configuration information, although obviously one has
        !           171: to be careful of what gets changed while a connection is active.
        !           172: 
        !           173: 120.
        !           174: 
        !           175: Jarmo Raiha: new chat-fail commands: one to not update the status file
        !           176: and require a retry wait, and one to permit the string to occur a few
        !           177: times before reporting an error.
        !           178: 
        !           179: 124.
        !           180: 
        !           181: Peter da Silva: perhaps there should be a ``chat-end-program'' command
        !           182: to let a program be run after the initial handshake has been completed
        !           183: and the protocol has been selected and turned on.  This would let
        !           184: people run stty to change their terminal parameters.
        !           185: 
        !           186: 128.
        !           187: 
        !           188: Richard Stallman: have an interactive program to set up a chat script.
        !           189: It would let you type directly to the port, recording what you type as
        !           190: send strings and recording what comes back from the other side as
        !           191: expect strings.
        !           192: 
        !           193: 129.
        !           194: 
        !           195: Use POSIX fcntl locks when possible instead of creating a lock file.
        !           196: 
        !           197: 130.
        !           198: 
        !           199: Chip Salzenberg: BSD lets you override the timeout for a particular
        !           200: expect string by using a trailing ~.
        !           201: 
        !           202: 138.
        !           203: 
        !           204: T. William Wells: BNU apparently uses a file named A.whatever to hold
        !           205: the line number reached in current C. file processing.  This is a
        !           206: hack, and won't work right with size control anyhow, but
        !           207: fsysdep_did_work could, for example, clobber the first byte in the
        !           208: line to a # or something to mark that it had been finished.  Still a
        !           209: hack, but a better one.
        !           210: 
        !           211: 139.
        !           212: 
        !           213: Patrick Smith: incorporate patches to generate full debugging traces
        !           214: with less debugging file overhead.  The debugging file repeats too
        !           215: much information at great length right now--not good.
        !           216: 
        !           217: 141.
        !           218: 
        !           219: Franc,ois Pinard: batch up pauses and delays in chat scripts and do
        !           220: them all at once in a single system call.  This is particularly useful
        !           221: for pauses on systems which don't support subsecond sleeps.  For
        !           222: everything else it's a fairly minor optimization.
        !           223: 
        !           224: 142.
        !           225: 
        !           226: Franc,ois Pinard: give uustat an option to requeue jobs to another
        !           227: system.  This only makes a lot of sense for rmail executions, but it's
        !           228: fairly easy to do for any type of command.  I think uucico does all
        !           229: the file checking needed to ensure that this doesn't break security,
        !           230: but that should be double-checked.
        !           231: 
        !           232: 144.
        !           233: 
        !           234: T. William Wells: add a -g option to uucico to permit specifying the
        !           235: maximum grade to be transferred at that time.  This could restrict the
        !           236: timegrade command further, but should not be permitted to override it.
        !           237: 
        !           238: 145.
        !           239: 
        !           240: T. William Wells: if uucico or uuxqt get started with bad arguments,
        !           241: put an indication in the log file since stderr may be /dev/null.
        !           242: 
        !           243: 146.
        !           244: 
        !           245: Richard Todd: it would be nice to sometimes be able to request the
        !           246: other side to turn on debugging.
        !           247: 
        !           248: 147.
        !           249: 
        !           250: Bart Schaefer: some more possible options for uucico:
        !           251:     -R reverse roles (hangup immediately).  Not too exciting.
        !           252:     some method to restrict calling to particular systems.
        !           253: 
        !           254: 148.
        !           255: 
        !           256: Jarmo Raiha: some method to control the work queue at the remote end.
        !           257: This could get awfully general, though.
        !           258: 
        !           259: 149.
        !           260: 
        !           261: The interaction of the time command and defaults can be confusing,
        !           262: since any time command in the actual system entry, even a fairly
        !           263: specific one, will wipe out the default entry.  Not sure what can be
        !           264: done about this.
        !           265: 
        !           266: 150.
        !           267: 
        !           268: Jarmo Raiha: should there be some way to specify modem initialization
        !           269: strings when uucico is hanging on a port with -l or -e?  This would
        !           270: presumably require a new type of chat script associated with a dialer.
        !           271: 
        !           272: 151.
        !           273: 
        !           274: Petri Helenius: log complete CONNECT string reported by modem, so that
        !           275: the baud rate is recorded in the log file.
        !           276: 
        !           277: 152.
        !           278: 
        !           279: Marc Evans: let the protocol selection be based on the CONNECT string,
        !           280: so that different protocols could be selected based on what type of
        !           281: connection was made.
        !           282: 
        !           283: 153.
        !           284: 
        !           285: Chris Lewis: provide a signal to get a core dump even on systems which
        !           286: won't do core dumps if the uid is not the euid.  One could catch a
        !           287: signal, call setuid (getuid ()), and then raise the signal again.
        !           288: Unfortunately the core dump has to wind up in a directory which is
        !           289: world writable, so that the process is able to create the core file,
        !           290: but is not world readable, since that would permit anybody to read the
        !           291: core dump file and extract private information from it.
        !           292: 
        !           293: 154.
        !           294: 
        !           295: Les Mikesell: write a new version of dial.o, with provisions for
        !           296: running a chat script.
        !           297: 
        !           298: 155.
        !           299: 
        !           300: Scott Blachowicz: perhaps there should be some way to telling uucico
        !           301: to not log certain errors.  This could get fairly complex, though.
        !           302: 
        !           303: 156.
        !           304: 
        !           305: Franc,ois Pinard: have uustat -m report the time of the last
        !           306: successful conversation when reporting a failure.
        !           307: 
        !           308: 158.
        !           309: 
        !           310: Thomas Fischer: should there be a way to completely disable an entry
        !           311: in the sys, port or dial file?  Such as a ``disable'' command?
        !           312: 
        !           313: 159.
        !           314: 
        !           315: Petri Helenius: when uuxqt -s is invoked, lock uuxqt for the system so
        !           316: that only one uuxqt is invoked per system.  If the -c option is used,
        !           317: don't lock on a per system basis, and ignore any per system locks
        !           318: (regardless of -s).  If neither option is used, respect existing
        !           319: system and command locks, and do any other type of file.
        !           320: 
        !           321: 161.
        !           322: 
        !           323: Scott Blachowicz: provide some sort of include mechanism for the
        !           324: configuration files.
        !           325: 
        !           326: 162.
        !           327: 
        !           328: Chris Lewis: add uuxqtpolicy command, probably in config, supporting
        !           329: the following values which determine when uuxqt should be run:
        !           330:        - never (let cron or something else worry about it)
        !           331:        - perinvocation (when uucico exits for good - current behaviour)
        !           332:        - persite (when uucico terminates a conversation - HDBish)
        !           333:        - periodic (per 5 or 10 incoming X. files - BSDish)
        !           334:        - perturnaround?
        !           335: 
        !           336: 163.
        !           337: 
        !           338: Sort jobs in the send queue by size.  Pretty easy.
        !           339: 
        !           340: 164.
        !           341: 
        !           342: Ed Carp: preserve files if uuxqt execution fails.
        !           343: 
        !           344: 165.
        !           345: 
        !           346: Marc Sheldon: use exit codes from <sysexits.h> in uux and uucp.
        !           347: 
        !           348: 166.
        !           349: 
        !           350: Chip Salzenberg: allow chat failure strings to specify a retry time.
        !           351: 
        !           352: 167.
        !           353: 
        !           354: Gregory Bond: allow a dialer sequence for a TCP port, so you can make
        !           355: a TCP connection to a modem and then dial out.
        !           356: 
        !           357: 168.
        !           358: 
        !           359: Jose A. Manas: allow a maximum connect time, after which we try to
        !           360: hang up the connection.  This requires a protocol extension, since
        !           361: there's no way to force the other side to hang up.  The best we can do
        !           362: without an extension is refuse to send any new jobs ourselves.  Of
        !           363: course, we could just drop the connection.
        !           364: 
        !           365: 169.
        !           366: 
        !           367: Franc,ois Pinard: when given uustat -k00FC, check each possible job ID
        !           368: and use it if there is an unambiguous one.
        !           369: 
        !           370: 170.
        !           371: 
        !           372: T. William Wells: if ! HAVE_SETREUID && ! HAVE_SAVED_SETUID, fork a
        !           373: subprocesses to revoke setuid and read the file over a pipe.
        !           374: 
        !           375: 171.
        !           376: 
        !           377: Provide some option to have the internal uuconf functions not start
        !           378: with an underscore.
        !           379: 
        !           380: 172.
        !           381: 
        !           382: T. William Wells: have some way to configure the parity for cu.
        !           383: 
        !           384: 173.
        !           385: 
        !           386: Gert Doering: uuchk should display unknown system information.
        !           387: 
        !           388: 175.
        !           389: 
        !           390: T. William Wells:
        !           391: Cu will not let itself be interrupted before the connection is
        !           392: established. If the chat script doesn't write something, cu does
        !           393: something odd, I've forgotten exactly what. Cu takes an
        !           394: inordinate amount of time after the line drops to exit. Somebody,
        !           395: cu, I think, but maybe uucico, drops dtr twice sometimes. Again,
        !           396: somebody will attempt to write after a hangup signal has been
        !           397: received. Once a hangup has been received, I/O should not be
        !           398: attempted. Among other things this will save the bacon of those
        !           399: who have brain damaged serial drivers (FAS, sigh, is among them)
        !           400: that don't handle output properly on a dropped line.
        !           401: 
        !           402: Me:
        !           403: Note that sometimes you do want to write to a line after receiving a
        !           404: hangup signal.  For example, you might want to use ATZ to reset a
        !           405: modem.
        !           406: 
        !           407: 176.
        !           408: 
        !           409: Hans-Dieter Doll: provide some way (another escape sequence) to pass
        !           410: the protocol to a chat-program.  Or, allow the protocol as an argument
        !           411: to the chat script command, which is more general, but maybe a bit too
        !           412: fancy.
        !           413: 
        !           414: 177.
        !           415: 
        !           416: Nickolay Saukh: use a default port for cu, you can just do ``cu
        !           417: number''.
        !           418: 
        !           419: 178.
        !           420: 
        !           421: Don Phillips: should there be some way to restrict of grade of
        !           422: transfers even when the other system places the call?
        !           423: 
        !           424: 179.
        !           425: 
        !           426: Nickolay Saukh: add something to chat scripts to specify the timeout
        !           427: for an expect string, e.g. AT\c OK\W3 to wait for 3 seconds.  Except
        !           428: that perhaps the unit should not be seconds.  Berkeley apparently uses
        !           429: ~number, not \W number, but I don't see any reason to prevent use of
        !           430: the ~ character in an expect string.
        !           431: 
        !           432: 180.
        !           433: 
        !           434: Nickolay Saukh: if we have received a partial file, request the remote
        !           435: system to start sending from that point.  We currently accept SVR4
        !           436: style remote file positioning requests, but we do not generate them.
        !           437: 
        !           438: 181.
        !           439: 
        !           440: Mark Powell: provide some way to restrict file transfer by size as
        !           441: well as grade?  One way would be to let uux select the grade based on
        !           442: the file size.
        !           443: 
        !           444: 182.
        !           445: 
        !           446: Mark Powell: permit using multiple timetables in a single time
        !           447: statement.
        !           448: 
        !           449: 183.
        !           450: 
        !           451: Optionally check for interrupts in fcopy_file, since it can take a
        !           452: long time to copy a file named in a uucp request.
        !           453: 
        !           454: 184.
        !           455: 
        !           456: Ian Moran: if an attempt is made to a copy a file to a directory which
        !           457: denies write permission, perhaps the file should be saved somewhere.
        !           458: It must be saved in a private location, though.
        !           459: 
        !           460: 185.
        !           461: 
        !           462: A syntax error in a command received from the remote system should not
        !           463: hold up the queue.  Unfortunately, I don't know what can be done
        !           464: except deny the command and report it.  Reporting a garbled command
        !           465: error should report the command correctly, rather than just the first
        !           466: character.
        !           467: 
        !           468: 186.
        !           469: 
        !           470: Franc,ois Pinard: have an option to control nostop vs. stop on the cu
        !           471: command line.
        !           472: 
        !           473: 187.
        !           474: 
        !           475: Fix the notion of %nostop to be SVID compatible.
        !           476: 
        !           477: 188.
        !           478: 
        !           479: Frank Conrad: provide a means to set the strip mode for a port, to
        !           480: make it easy to use it from cu.
        !           481: 
        !           482: 189.
        !           483: 
        !           484: Marc Unangst: there should be a way to specify that a system should
        !           485: only be called if there are jobs of a certain grade, but if the system
        !           486: is called then jobs of any grade should be transferred.  This
        !           487: basically means splitting the ``timegrade'' command into two commands:
        !           488: ``place-call-timegrade'' and ``transfer-timegrade''.  Or maybe another
        !           489: optional argument to ``timegrade'':
        !           490:     timegrade grade time-string [retry] [transfer-any]
        !           491: not to mention
        !           492:     time time-string [retry] [transfer-any]
        !           493: Or maybe a separate command for a system or port like
        !           494:     transfer-any BOOL
        !           495: 
        !           496: 190.
        !           497: 
        !           498: Chip Salzenberg: it would be really nice if uucico could automatically
        !           499: figure out when it could use an E command, so that uux didn't have to
        !           500: generate it and so that uucico could use with other versions of uux.
        !           501: Unfortunately, it would require uucico to read the execution file to
        !           502: see if it were suitable; this would be complex, but it would probably
        !           503: be worth it since normally the execution file would wind up not being
        !           504: sent.  Of course, the current method works too; it's just harder to
        !           505: combine with other versions of UUCP.
        !           506: 
        !           507: 191.
        !           508: 
        !           509: Brian J. Murrell: should there be a way to cu a specific alternate?
        !           510: 
        !           511: 192.
        !           512: 
        !           513: Andrew A. Chernov: Perhaps cu -pport system should be able to try
        !           514: different alternates for the system, because there might be different
        !           515: phone numbers to try.
        !           516: 
        !           517: 193.
        !           518: 
        !           519: Brian J. Murrell: it would be nice to be able to ^C a cu chat script
        !           520: if you know it's going to fail.  Right now you have to use ^\.
        !           521: 
        !           522: 194.
        !           523: 
        !           524: Steven S. Dick: have some way to force uucico off the phone at a
        !           525: certain time.  If that is done, it might be cool to have some way to
        !           526: predict how long a file transfer will take, and not do it if it will
        !           527: take too long.  But, if doing file restart, you can just quit and then
        !           528: pick it up later.
        !           529: 
        !           530: 195.
        !           531: 
        !           532: Franc,ois Pinard: if the disk fills up, or some other error occurs,
        !           533: while receiving a file, perhaps it would make sense to turn the
        !           534: connection around immediately and see if the other side had anything
        !           535: to do, and then try again later.  This would require a protocol
        !           536: extension.  I don't know if it's worth it.  The code should be checked
        !           537: to see how well it handles a disk full situation.
        !           538: 
        !           539: 196.
        !           540: 
        !           541: For real adjustability, provide some mechanism for picking the lead
        !           542: characters to use for the shell scripts, between : and #!.
        !           543: 
        !           544: 197.
        !           545: 
        !           546: Try alternate IP addresses if there are any.
        !           547: 
        !           548: 198.
        !           549: 
        !           550: Lele Gaifax: mention the device in Stats, and provide some way to
        !           551: associate the entry in Log with the entry in Stats.
        !           552: 
        !           553: 199.
        !           554: 
        !           555: Michael Richardson: provide some way to turn on parity for the login
        !           556: chat, since some systems apparently require it.  Provide some way for
        !           557: cu to control parity after connecting.
        !           558: 
        !           559: 200.
        !           560: 
        !           561: Chip Salzenberg: add max-remote-debug to config.
        !           562: 
        !           563: 201.
        !           564: 
        !           565: Gert Doering: change the timeout message in chat scripts to reflect
        !           566: which chat script timed out (dialer or login).
        !           567: 
        !           568: 202.
        !           569: 
        !           570: Bill Foote: have uuchk check whether a system is defined more than
        !           571: once.
        !           572: 
        !           573: 203.

unix.superglobalmegacorp.com

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