home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / misc / volume1 / 8709 / alex / 1 next >
Encoding:
Internet Message Format  |  1990-07-13  |  39.8 KB

  1. Path: uunet!seismo!sundc!pitstop!sun!amdcad!ames!ucbcad!ucbvax!decvax!ima!necntc!ncoast!allbery
  2. From: kvancamp@ARDEC.arpa (Kenneth Van Camp -FSAC-)
  3. Newsgroups: comp.sources.misc
  4. Subject: ALEX part 1/2 (MS-DOS file exchange program)
  5. Message-ID: <4767@ncoast.UUCP>
  6. Date: 29 Sep 87 20:27:32 GMT
  7. Sender: allbery@ncoast.UUCP
  8. Lines: 1182
  9. Approved: allbery@ncoast.UUCP
  10. X-Archive: comp.sources.misc/8709/alex/1
  11.  
  12. [I have rewrapped this into two archives, as it arrived as a monolithic 120K
  13. message.  I have also removed compress from the distribution, as it is avail-
  14. able in its complete form from many UUCP and FTP sites as well as in the
  15. Usenet news distribution itself.  Please note that this is not my normal
  16. function, and that I may respond to such submissions by asking the poster to
  17. resubmit his article differently.  ++bsa]
  18.  
  19. #--------------------------------CUT HERE-------------------------------------
  20. #! /bin/sh
  21. #
  22. # This is a shell archive.  Save this into a file, edit it
  23. # and delete all lines above this comment.  Then give this
  24. # file to sh by executing the command "sh file".  The files
  25. # will be extracted into the current directory owned by
  26. # you with default permissions.
  27. #
  28. # The files contained herein are:
  29. #
  30. # -rw-rw-rw-   1 allbery  System      1738 Sep 29 16:16 READ_ME
  31. # -rw-r--r--   1 allbery  System       499 Sep 29 16:10 Makefile
  32. # -rwxr-xr-x   1 allbery  System     26067 Sep 29 16:11 alex
  33. # -rw-r--r--   1 allbery  System      8550 Sep 29 16:11 alex.1
  34. #
  35. echo 'x - READ_ME'
  36. if test -f READ_ME; then echo 'shar: not overwriting READ_ME'; else
  37. sed 's/^X//' << '________This_Is_The_END________' > READ_ME
  38. X    ALEX (Automatic Library EXchange) is being released to the public 
  39. Xdomain for the first time.  It is a Unix utility (mostly shell script) which 
  40. Xwe have found very useful here at ARDEC.  It allows for the easy transfer of 
  41. Xfiles or groups of files, either ASCII or binary, between users of personal 
  42. Xcomputers.  It assumes that the user has his PC connected to a Unix host 
  43. Xcomputer, using communications software that supports the Kermit file 
  44. Xtransfer protocol.  It further assumes that the user has some type of 
  45. Xelectronic mail access on the Unix host.  The standard Alex release comes 
  46. Xconfigured for the mmdf (msg) mail system, but is easily adapted for 
  47. Xstandard Unix mail or other mail systems.  
  48. X    Alex was designed for the PC user who knows little about Unix, so
  49. Xthe complete manual, included in the distribution (alex.doc), provides very
  50. Xbasic instructions.  Since Crosstalk and public domain Kermit are the two
  51. Xmost popular PC communications programs used here at ARDEC, detailed 
  52. Xinstructions are provided for those two types of users.
  53. X    Alex was inspired by the public domain Tarmail program, and uses a 
  54. Xformat similar to Tarmail.  However, compatibility with Tarmail was not 
  55. Xmaintained for reasons that are discussed in the manual.  Its format is 
  56. Xpurposely simple and has proven very reliable during the year or so that it 
  57. Xhas been in use at ARDEC.  It also includes some advanced options that allow
  58. XAlex to act as a total replacement for Tarmail.  I encourage anyone who
  59. Xadministers a Unix system frequented by PC users to try out Alex.
  60. X
  61. X            --Ken Van Camp <kvancamp@ARDEC.ARPA>
  62. X    U.S. Army Armament Research Development & Engineering Center
  63. X                SMCAR-FSA-E  Building 329
  64. X            Picatinny Arsenal, NJ  07806-5000
  65. ________This_Is_The_END________
  66. if test `wc -l < READ_ME` -ne 27; then
  67.     echo 'shar: READ_ME was damaged during transit (should have been 27 bytes)'
  68. fi
  69. fi        ; : end of overwriting check
  70. echo 'x - Makefile'
  71. if test -f Makefile; then echo 'shar: not overwriting Makefile'; else
  72. sed 's/^X//' << '________This_Is_The_END________' > Makefile
  73. XINSDIR =    /usr/pica/bin
  74. XMANDIR =    /usr/man
  75. XPROGRAMS=    undigest compress atob btoa 
  76. X
  77. X
  78. Xall: undigest compress btoa atob
  79. X
  80. Xundigest:    undigest.o
  81. X    $(CC) $(LDFLAGS) -o undigest undigest.o
  82. X
  83. Xcompress:    compress.o
  84. X    $(CC) $(LDFLAGS) -o compress compress.o
  85. X    ln compress uncompress
  86. X
  87. Xbtoa:    btoa.o
  88. X    $(CC) $(LDFLAGS) -o btoa btoa.o
  89. X    
  90. Xatob:    atob.o
  91. X    $(CC) $(LDFLAGS) -o atob atob.o
  92. X
  93. Xinstall:     
  94. X        $(INSDIR)/$(PROGRAMS)
  95. X        ln $(INSDIR)/compress $(INSDIR)/uncompress
  96. X        rm uncompress
  97. X
  98. Xclean:
  99. X    rm -f *.o $(PROGRAMS) uncompress
  100. ________This_Is_The_END________
  101. if test `wc -l < Makefile` -ne 27; then
  102.     echo 'shar: Makefile was damaged during transit (should have been 27 bytes)'
  103. fi
  104. fi        ; : end of overwriting check
  105. echo 'x - alex'
  106. if test -f alex; then echo 'shar: not overwriting alex'; else
  107. sed 's/^X//' << '________This_Is_The_END________' > alex
  108. X#!/bin/sh
  109. X#
  110. X#                               ALEX version 1.22
  111. X#
  112. X# ALEX: Automatic Library EXchange program for sending and receiving groups
  113. X#    of files (either binary or ascii) via electronic mail. 
  114. X#
  115. Xusage="\
  116. Xusage: alex [options]\n\
  117. XAll arguments are optional.  Default mode is Download, to download the\n\
  118. X  entire contents of the library (from standard input) to the PC.\n\
  119. XAlex options include:\n\
  120. X -tac\t\t    (for use over the TAC)\n\
  121. X -u\t\t        (to upload files and send out via e-mail)\n\
  122. X -u libname\t    (to upload files and keep in file libname)\n\
  123. X -l\t\t        (to list all files in the archive on stdin)\n\
  124. X -q\t\t        (to give a quick list of all files in the archive on stdin)\n\
  125. X -h\t\t        (to print this help listing)\n\
  126. X\t    REMAINING COMMANDS ARE FOR ADVANCED USERS ONLY:\n\
  127. X -a\t\t        (specify all files as ASCII)\n\
  128. X -d\t\t        (decode an Alex library without downloading)\n\
  129. X -e files\t    (encode listed files into Alex library on stdout)"
  130. X#
  131. X#    Alex uses Compress to optimize storage space, Btoa to convert files 
  132. X#    to ASCII, then separates them by a line starting with several dashes. 
  133. X#    Alex-created files can therefore be decoded easily using the '@' 
  134. X#    (undigestify) option of the msg (mmdf) electronic mail system, then 
  135. X#    using the 'l' (list) option to: |atob -f and uncompress *.Z. 
  136. X#    Alternatively, the single command of 'l' to: |alex will undigestify, 
  137. X#    decode, uncompress and start up a kermit file transfer to the user's PC.
  138. X#
  139. X#    The -u option (alex -u) can be used for the reverse process, to
  140. X#    upload files to the mainframe from the PC via kermit, encode them,
  141. X#    digestify all the files and send it out via electronic mail.
  142. X#    If a file name is supplied after the -u option, then the library
  143. X#    is stored in the named file, rather than sent out automatically
  144. X#    thru e-mail.
  145. X#
  146. X#    If the -tac option is specified, then all Kermit file transfers
  147. X#    are done in 40-byte packets with even parity, to accomodate the
  148. X#    Picatinny TAC.
  149. X#
  150. X#    If the -a option is specified, then all files will be uploaded and
  151. X#    stored as ASCII files; all control characters will be stripped.
  152. X#
  153. X#    The -d and -e options provide lower-level commands to decode and
  154. X#    encode Alex libraries without uploading or downloading files.
  155. X#
  156. X#    The -l option merely provides a listing of all files and their sizes
  157. X#    in the Alex library on standard input.
  158. X#
  159. X#    The -q option is the same as -l but is much quicker because the
  160. X#    archive is not actually decoded to determine the file names.  It
  161. X#    also does not list file sizes.
  162. X#
  163. X#    Programmed by Ken Van Camp and Jim Steiner, Picatinny Arsenal, ARDEC.
  164. X#    Version 1.0  June 1986.
  165. X#    Version 1.1  June 1987.
  166. X#    Version 1.2  July 1987.
  167. X#    Version 1.21 July 1987.
  168. X#    Version 1.22 August 1987.
  169. X#
  170. X# Insert the name of your system's mailer in the statement below:
  171. X#   If unsure, use:  mailer=mail
  172. Xmailer=/usr/mmdf/v6mail
  173. X# Insert below your system's echo command with the option so it
  174. X#   does not perform a linefeed at the end of the line (like 'echo -n').
  175. X#   If your system does  not support such a feature, then just use:  
  176. X#   echocmmd=echo
  177. Xechocmmd='echo -n'
  178. X# Insert below your system's head command.
  179. Xheadcmmd='head'
  180. X# Insert below your system's command to remove a directory without giving
  181. X#   error messages (like 'rmdir -f').  If your system does not support this
  182. X#   option, then just use: rmdircmmd=rmdir
  183. Xrmdircmmd=rmdir
  184. X#
  185. X# Stop writes and messages
  186. Xmesg n
  187. X#
  188. Xecho "ALEX: Automatic Library EXchange program (version 1.22)"
  189. X#
  190. X# Set the default mode to download, no TAC option, file type binary.
  191. X#
  192. Xalexmode=download
  193. Xtac=n
  194. Xfiletype=binary
  195. Xabort=n
  196. Xopterr="ALEX: Cannot specify more than one of -u, -d, -e, -l and -q."
  197. X#
  198. X# Parse the command line
  199. Xfor i in $*
  200. Xdo
  201. X  case x$i in
  202. X  x-tac)
  203. X    tac=y
  204. X    ;;
  205. X  x-u)
  206. X    if test ! $alexmode = download
  207. X    then
  208. X      echo $opterr
  209. X      echo $usage
  210. X      exit
  211. X    else
  212. X      alexmode=upload
  213. X    fi
  214. X    ;;
  215. X  x-a)
  216. X    filetype=ascii
  217. X    ;;
  218. X  x-h)
  219. X    echo $usage
  220. X    exit
  221. X    ;;
  222. X  x-d)
  223. X    if test ! $alexmode = download
  224. X    then
  225. X      echo $opterr
  226. X      echo $usage
  227. X      exit
  228. X    else
  229. X      alexmode=decode
  230. X    fi
  231. X    ;;
  232. X  x-e)
  233. X    if test ! $alexmode = download
  234. X    then
  235. X      echo $opterr
  236. X      echo $usage
  237. X      exit
  238. X    else
  239. X      alexmode=encode
  240. X      files=""
  241. X    fi
  242. X    ;;
  243. X  x-l)
  244. X    if test ! $alexmode = download
  245. X    then
  246. X      echo $opterr
  247. X      echo $usage
  248. X      exit
  249. X    else
  250. X      alexmode=list
  251. X    fi
  252. X    ;;
  253. X  x-q)
  254. X    if test ! $alexmode = download
  255. X    then
  256. X      echo $opterr
  257. X      echo $usage
  258. X      exit
  259. X    else
  260. X      alexmode=quick
  261. X    fi
  262. X    ;;
  263. X  *)
  264. X    # Unknown argument assumed to be a filename if upload or encode mode.
  265. X    case $alexmode in
  266. X    upload)
  267. X      libname=$i
  268. X      ;;
  269. X    encode)
  270. X      files="$files $i"
  271. X      ;;
  272. X    *)
  273. X      echo "Alex: Illegal option $i"
  274. X      echo $usage
  275. X      exit
  276. X    esac
  277. X    ;;
  278. X  esac
  279. Xdone
  280. Xcase $alexmode in
  281. Xupload)
  282. X#****************************************************************************
  283. X#*                              Upload Option                               *
  284. X#****************************************************************************
  285. X#
  286. X  # Trap interrupts: Remove the temporary files and allow messages.
  287. X  trap 'trap : 1 2 3 ; 
  288. X    rm -f /tmp/inst$$ /tmp/$USER$$/* /tmp/$USER$$/.[0-z]* /tmp/alex$$.ba ;
  289. X    $rmdircmmd /tmp/$USER$$ ; mesg y ; exit' 1 2 3
  290. X  #
  291. X  pwd=`pwd`
  292. X  if test $libname
  293. X  then
  294. X    if test $filetype = binary
  295. X    then
  296. X      echo "ALEX: Uploading binary to file $libname"
  297. X    else
  298. X      echo "ALEX: Uploading ASCII to file $libname"
  299. X      echo "  WARNING: ASCII transfers must ONLY be done with pure text!"
  300. X    fi
  301. X  else
  302. X    if test $filetype = binary
  303. X    then
  304. X      echo "ALEX: Uploading binary files for e-mail transfer"
  305. X    else
  306. X      echo "ALEX: Uploading ASCII files for e-mail transfer"
  307. X      echo "  WARNING: ASCII transfers must ONLY be done with pure text!"
  308. X    fi
  309. X    echo You have selected the Alex Upload option. 
  310. X    echo "The following information is needed for electronic mail purposes:"
  311. X    $echocmmd "To: "
  312. X    read to
  313. X    $echocmmd "cc: "
  314. X    read cc
  315. X    $echocmmd "Subject: "
  316. X    read subj
  317. X      echo "
  318. X          A library of files is being sent to you using the Alex 
  319. X      exchange program.  The instructions below will tell you how 
  320. X      to transfer the files from the mainframe to your personal 
  321. X      computer.  They assume you are using either the Msg or Mailx 
  322. X      electronic mail programs, and that you are currently logged 
  323. X      in from a personal computer, using some communications 
  324. X      software that supports the Kermit file transfer protocol 
  325. X      (this is the case with the latest version of the popular 
  326. X      Crosstalk XVI program).  
  327. X          The library is being sent in a separate message from 
  328. X      this one.  Before you can download the library to your PC, 
  329. X      you must find the message number containing the library.  It 
  330. X      is probably in the following message.  If you are using the 
  331. X      Msg electronic mail program, you may now type the letter 'h' 
  332. X      (minus the quote marks, of course), followed by the letter 
  333. X      'a' (headers all, in msg parlance).  If you are using Mailx, 
  334. X      just type 'h'.  The library message should have the same 
  335. X      subject header as this one.  
  336. X          When you have located the message, you must then 'pipe' 
  337. X      the message to Alex.  To do this in Msg, type the letter 'l' 
  338. X      (lower-case L), followed by the message number you just 
  339. X      found.  You should get the response: 
  340. X          To file/pipe:
  341. X      At this time you should type in:
  342. X          |alex
  343. X      Note that the vertical bar (|) is a 'pipe' symbol; not the 
  344. X      letter 'I'.  
  345. X          If you are using Mailx, then just type '|<message #> alex'
  346. X      (without the quotes). For instance:  |2 alex
  347. X      would pipe message number 2 to Alex.
  348. X          You will receive a message that Alex has started.  When 
  349. X      you are told to start up the Receive Kermit, you should do 
  350. X      the following, depending upon whether you are using the 
  351. X      Kermit program or Crosstalk.  (If you have problems, send 
  352. X      electronic mail to msdos-request.) 
  353. X                          CROSSTALK USERS:
  354. X          Type your Attention key (PgUp, or Escape, or whatever 
  355. X      else you have defined it to be), then the letters RK and 
  356. X      <Enter> (short for 'Receive Kermit').  
  357. X                            KERMIT USERS:
  358. X          Hit the <ctrl>] (control right-bracket) then the letter 
  359. X      'c'.  Then type in the word 'receive' and <Enter>.  When the 
  360. X      transfer has completed, type the letter 'c' and <Enter>." >/tmp/inst$$ 
  361. X      #
  362. X      #
  363. X      echo
  364. X      echo "A cover letter may be sent separate from your Alex library."
  365. X      echo "Your options are:"
  366. X      echo "  (1) Send no cover letter."
  367. X      echo "  (2) Send standard Alex instruction file"
  368. X      echo "  (3) Send your own cover letter that you have already saved in a file"
  369. X      echo "  (4) Edit the standard cover letter"
  370. X      select=bad
  371. X      while test $select = bad
  372. X      do
  373. X    $echocmmd "Type 1, 2, 3 or 4: "
  374. X    read select
  375. X    case x$select in
  376. X    x1) ;;
  377. X    x2) ;;
  378. X    x3) flnm=err$$
  379. X       while test ! -f $flnm
  380. X       do
  381. X         flnm=""
  382. X         while test x$flnm = x
  383. X         do
  384. X           $echocmmd "Enter the filename of your cover letter: "
  385. X           read flnm
  386. X         done
  387. X         if test ! -f $flnm
  388. X         then
  389. X           echo "File $flnm does not exist."
  390. X         fi
  391. X       done
  392. X       cp $flnm /tmp/inst$$
  393. X       ;;
  394. X    x4) if test $EDITOR
  395. X        then
  396. X          $EDITOR /tmp/inst$$
  397. X        else
  398. X          editor=""
  399. X          while test x$editor = x
  400. X          do
  401. X        echo "Please enter the name of your favorite editor."
  402. X        $echocmmd "(For instance, if you use vi, just type 'vi'): "
  403. X        read editor
  404. X          done
  405. X          echo "Editing file /tmp/inst$$ ..."
  406. X          $editor /tmp/inst$$
  407. X        fi
  408. X       ;;
  409. X    *) echo "Illegal option $select"
  410. X       select=bad
  411. X       ;;
  412. X    esac
  413. X      done  # while test $select = bad
  414. X  fi # if test $libname
  415. X  mkdir /tmp/$USER$$
  416. X  cd /tmp/$USER$$
  417. X  #
  418. X  # Special for TAC users: Make a .kermrc file that sets the parity to even
  419. X  # (7 bits) and packet sizes to 40.
  420. X  #
  421. X  if test $tac = y
  422. X  then
  423. X    echo "set receive packet 40" > .kermrc
  424. X    echo "set send packet 40" >>.kermrc
  425. X    echo "set parity even" >>.kermrc
  426. X  fi
  427. X  i=Y
  428. X  first=y
  429. X  # Here is the general loop to upload as many files as the user wants.
  430. X  while test $i = y -o $i = Y
  431. X  do
  432. X    echo
  433. X    echo "Please start up the Send Kermit on your PC (XK in Crosstalk)."
  434. X    if test $first = y
  435. X    then
  436. X      # Pause the first time to allow a CTRL-C before the Kermit starts up.
  437. X      sleep 5
  438. X    fi
  439. X    first=n
  440. X    echo
  441. X    if test $filetype = "binary"
  442. X    then
  443. X      kermit -ir
  444. X    else
  445. X      kermit -r
  446. X    fi
  447. X    # Give Kermit users a chance to reconnect
  448. X    sleep 5
  449. X    i=""
  450. X    while test x$i = x
  451. X    do
  452. X      $echocmmd "Do you want to send more files (y/n)? "
  453. X      read i
  454. X    done
  455. X  done
  456. X  rm -f .kermrc
  457. X  #
  458. X  # Rename any files that start with a dot, to avoid Alex conflicts.
  459. X  #
  460. X  if test -f .[0-z]*
  461. X  then
  462. X    echo "WARNING: The following files are being renamed:"
  463. X    for i in .[0-z]*
  464. X    do
  465. X      echo "  File $i being renamed to 0$i"
  466. X      mv $i 0$i
  467. X    done
  468. X  fi
  469. X  # First compress all the files to save room (use 12-bit compression for
  470. X  # compatibility with the machines that don't have enough memory to compile
  471. X  # compress with full memory).
  472. X  if test $filetype = "binary"
  473. X  then
  474. X    # Binary file digest
  475. X    compress -q -b 12 * > /dev/null
  476. X    echo Alex library encoding starting: > /tmp/alex$$.ba
  477. X    for i in *
  478. X    do
  479. X      echo --------------------- CUT HERE ------------------- >>/tmp/alex$$.ba
  480. X      btoa $i < $i >>/tmp/alex$$.ba
  481. X    done
  482. X  else
  483. X    # ASCII file digest
  484. X    for i in *
  485. X    do
  486. X      echo >>/tmp/alex$$.ba
  487. X      echo --------------------- CUT HERE ------------------- >>/tmp/alex$$.ba
  488. X      echo 'ASCII '${i} >> /tmp/alex$$.ba
  489. X      # Take out any CTRL-Z's from the file, and add the file to the digest
  490. X      tr -d \\032 < $i >> /tmp/alex$$.ba
  491. X    done
  492. X  fi
  493. X  rm -f *
  494. X  cd $pwd
  495. X  $rmdircmmd /tmp/$USER$$
  496. X  if test $libname
  497. X  then
  498. X    # User specified a target filename, so he wants results saved in a file
  499. X    # instead of being e-mailed.
  500. X    mv /tmp/alex$$.ba $libname
  501. X  else
  502. X    redo=y
  503. X    # Loop to keep trying to mail Alex library until successful, or until
  504. X    # user gives Quit command.
  505. X    while test $redo = y
  506. X    do
  507. X      # If user wants to send a cover letter...
  508. X      if test ! $select = 1
  509. X      then
  510. X        echo Mailing cover letter to $to with cc: $cc and subject "$subj"
  511. X        if $mailer $to -c $cc -s "$subj" < /tmp/inst$$
  512. X        then
  513. X          # Message posted OK; no errors
  514. X          redo=n
  515. X        else
  516. X          # Error in message posting
  517. X          redo=y
  518. X        fi
  519. X      else
  520. X        redo=n
  521. X      fi
  522. X      # Now send out the regular library...
  523. X      if test $redo = n
  524. X      then
  525. X        echo Sending library to $to with cc: $cc and subject "$subj"
  526. X        if $mailer $to -c $cc -s "$subj" < /tmp/alex$$.ba
  527. X        then
  528. X          # Message posted OK; no errors
  529. X          redo=n
  530. X        else
  531. X          # Error in message posting
  532. X          redo=y
  533. X        fi
  534. X      fi
  535. X      # If there was an error in either message posting, let the user
  536. X      # correct the addresses.
  537. X      if test $redo = y
  538. X      then
  539. X        # Error in one of the message postings
  540. X    echo "Your options are:"
  541. X    echo "  (1) Retype electronic mail addresses"
  542. X    echo "  (2) Save Alex library in a local file"
  543. X    echo "  (3) Abort - no files saved"
  544. X    select2=bad
  545. X    while test $select2 = bad
  546. X    do
  547. X      $echocmmd "Type 1, 2 or 3: "
  548. X      read select2
  549. X      case x$select2 in
  550. X      x1) echo "Just hit <enter> to keep old addresses."
  551. X         echo 
  552. X         echo "To: $to"
  553. X         $echocmmd "To: "
  554. X         read totmp
  555. X         if test "$totmp"
  556. X         then
  557. X        to="$totmp"
  558. X         fi
  559. X         echo "cc: $cc"
  560. X         echo -n "cc: "
  561. X         read cctmp
  562. X         if test "$cctmp"
  563. X         then
  564. X           cc="$cctmp"
  565. X         fi
  566. X         ;;
  567. X      x2) redo=n
  568. X         while test ! "$flname"
  569. X         do
  570. X        $echocmmd "Enter local file name: "
  571. X        read flname
  572. X        if test "$flname"
  573. X        then
  574. X          mv /tmp/alex$$.ba $flname
  575. X        fi
  576. X         done
  577. X         ;;
  578. X      x3) redo=n
  579. X         echo ALEX: Aborted
  580. X         abort=y
  581. X         ;;
  582. X      *) echo "Illegal option $select2"
  583. X         select=bad
  584. X         ;;
  585. X       esac
  586. X    done
  587. X      fi
  588. X    done    # End while loop: Library sent to valid addresses.
  589. X    rm -f /tmp/inst$$ /tmp/alex$$.ba
  590. X  fi    # End if test $libname
  591. X  if test $abort = n
  592. X  then
  593. X    echo Alex upload successfully completed.
  594. X  fi
  595. X  mesg y
  596. X  # end case upload)
  597. X  ;;
  598. Xdownload)
  599. X#****************************************************************************
  600. X#*                       (Default) Download Option                          *
  601. X#****************************************************************************
  602. X#
  603. X  # Trap interrupts: Remove the temporary files and allow messages.
  604. X  trap 'trap : 1 2 3 ; 
  605. X    rm -f /tmp/undig$$/* /tmp/decbin$$/* /tmp/decbin$$/.[0-z]* /tmp/decasc$$/* /tmp/decasc$$/.[0-z]* /tmp/decall$$/* /tmp/decall$$/.[0-z]* ;
  606. X    $rmdircmmd /tmp/undig$$ /tmp/decall$$ /tmp/decbin$$ /tmp/decasc$$ ; 
  607. X    mesg y ; exit' 1 2 3
  608. X  #
  609. X  mkdir /tmp/undig$$
  610. X  cd /tmp/undig$$
  611. X  undigest tmp
  612. X  # Get rid of the junk file (header from e-mail)
  613. X  rm -f tmp0
  614. X  # This directory will hold all the binary files
  615. X  mkdir /tmp/decbin$$
  616. X  # This directory will hold all the ASCII files
  617. X  mkdir /tmp/decasc$$
  618. X  # Make the binary directory the current one
  619. X  cd /tmp/decbin$$
  620. X  for i in /tmp/undig$$/tmp*
  621. X  do
  622. X    # See if file is binary or ASCII
  623. X    ftype=`$headcmmd -1 $i | cut -d' ' -f1`
  624. X    # Get file name if ASCII
  625. X    fname=`$headcmmd -1 $i | cut -s -d' ' -f2`
  626. X    if test "${ftype}" != "ASCII" -a "${fname}"
  627. X    then
  628. X      # File is binary; this is the binary directory so leave it here
  629. X      atob -f < $i
  630. X    else
  631. X      # File is ASCII; put it in the ASCII directory
  632. X      tail +2 $i > /tmp/decasc$$/$fname
  633. X    fi
  634. X  done
  635. X  rm -f /tmp/undig$$/tmp*
  636. X  $rmdircmmd /tmp/undig$$
  637. X  #
  638. X  # Rename any files that start with a dot, to avoid Alex conflicts.
  639. X  #
  640. X  if test -f .[0-z]*
  641. X  then
  642. X    echo "WARNING: The following binary files are being renamed:"
  643. X    for i in .[0-z]*
  644. X    do
  645. X      echo "  File $i being renamed to 0$i"
  646. X      mv $i 0$i
  647. X    done
  648. X  fi
  649. X  # If any files compressed, uncompress them. Note that this shouldn't
  650. X  # cause any problems with files that happen to end in a .Z extension
  651. X  # unless Kermit is not converting all file names to lower case (as it
  652. X  # is supposed to).
  653. X  if test -f *.Z
  654. X  then
  655. X    uncompress -q *.Z > /dev/null
  656. X  fi
  657. X  cd /tmp/decasc$$
  658. X  if test -f .[0-z]*
  659. X  then
  660. X    echo "WARNING: The following ASCII files are being renamed:"
  661. X    for i in .[0-z]*
  662. X    do
  663. X      echo "  File $i being renamed to 0$i"
  664. X      mv $i 0$i
  665. X    done
  666. X  fi
  667. X  cd /tmp/decbin$$
  668. X  echo "The following files are ready for downloading."
  669. X  # Give the user a report on all the files that are ready for downloading
  670. X  # In order to include both binary and text files in one listing, link all
  671. X  # the files into another temporary directory:
  672. X  mkdir /tmp/decall$$
  673. X  if test -f *
  674. X  then
  675. X    for i in *
  676. X    do
  677. X      ln $i /tmp/decall$$/$i
  678. X    done
  679. X  fi
  680. X  cd /tmp/decasc$$
  681. X  if test -f *
  682. X  then
  683. X    for i in *
  684. X    do
  685. X      ln $i /tmp/decall$$/$i
  686. X    done
  687. X  fi
  688. X  # Now change to that directory to give the report
  689. X  cd /tmp/decall$$
  690. X  echo "Times given are estimated transmission times, in minutes, to send files"
  691. X  echo "to your PC.  If you are directly connected to the Sytek cable network,"
  692. X  echo "use the T9600 numbers.  If you are using a 1200 baud modem, use T1200."
  693. X  echo "If you are using a 4800 baud modem, use T4800, etc."
  694. X  echo
  695. X  echo " Filename            Size    T1200  T2400  T4800  T9600"
  696. X  echo " ======================================================"
  697. X  # The transmission times below have a fudge factor of 2.5 multiplied in
  698. X  # to account for various communications effects that slow it down.
  699. X  wc -c * | awk '
  700. X  $2=="total"{printf" ------------------------------------------------------\n"}
  701. X  {printf " %-15s %8d   %6.1f %6.1f %6.1f %6.1f\n", \
  702. X  $2, $1, $1 / 3600, $1 / 7200, $1 / 14400, $1 / 28800 }'
  703. X  # Here are the "pure" calculated times, without the fudge factor:
  704. X  # $2, $1, $1 / 9000, $1 / 18000, $1 / 36000, $1 / 72000 }'
  705. X  #
  706. X  # Now get rid of the linked files and change back to the binary directory
  707. X  cd /tmp/decbin$$
  708. X  rm -f /tmp/decall$$/*
  709. X  $rmdircmmd /tmp/decall$$
  710. X  #
  711. X  # Special for TAC users: Make a .kermrc file that sets the parity to even
  712. X  # (7 bits) and packet sizes to 40.
  713. X  #
  714. X  if test $tac = y
  715. X  then
  716. X    echo "set receive packet 40" > .kermrc
  717. X    echo "set send packet 40" >>.kermrc
  718. X    echo "set parity even" >>.kermrc
  719. X    ln .kermrc /tmp/decasc$$/.kermrc
  720. X  fi
  721. X  echo
  722. X  echo In a moment, you will see a few meaningless characters at the bottom
  723. X  echo of your screen. When this happens, start the Receive Kermit on your PC.
  724. X  echo
  725. X  # Pause to allow a CTRL-C before the Kermit starts up.
  726. X  sleep 5
  727. X  if test -f *
  728. X  then
  729. X    # Download the binary files
  730. X    kermit -is *
  731. X    cd /tmp/decasc$$
  732. X    if test -f *
  733. X    then
  734. X      # There are ASCII files, as well as binary.
  735. X      # Pause to allow Kermit users to reconnect
  736. X      sleep 5
  737. X      echo
  738. X      echo Binary file transfers complete. There are also ASCII files ready,
  739. X      echo so you must start up the Receive Kermit again to get these files.
  740. X      kermit -s *
  741. X    fi
  742. X  else
  743. X    # Only ASCII files to download
  744. X    cd /tmp/decasc$$
  745. X    if test -f *
  746. X    then
  747. X      kermit -s *
  748. X    else
  749. X      echo "ALEX: Error: No files for downloading!"
  750. X    fi
  751. X  fi
  752. X  rm -f /tmp/decbin$$/* /tmp/decasc$$/* /tmp/decbin$$/.kermrc /tmp/decasc$$/.kermrc
  753. X  cd
  754. X  $rmdircmmd /tmp/decbin$$ /tmp/decasc$$
  755. X  echo
  756. X  echo Alex download successfully completed.
  757. X  echo
  758. X  # end case download)
  759. X  ;;
  760. Xencode)
  761. X#****************************************************************************
  762. X#*                              Encode Option                               *
  763. X#****************************************************************************
  764. X# Encode Option: Just encode an Alex library onto standard output
  765. X# from all the files listed on the command line.
  766. X#
  767. X  # Trap interrupts: Remove the temporary files and allow messages.
  768. X  trap 'trap : 1 2 3 ; 
  769. X    rm -f /tmp/$USER$$/* /tmp/$USER$$/.[0-z]* ;
  770. X    $rmdircmmd /tmp/$USER$$ ;
  771. X    mesg y ; exit' 1 2 3
  772. X  #
  773. X  mkdir /tmp/$USER$$
  774. X  for i in $files
  775. X  do
  776. X    cp $i /tmp/$USER$$
  777. X  done
  778. X  cd /tmp/$USER$$
  779. X  #
  780. X  # Rename any files that start with a dot, to avoid Alex conflicts.
  781. X  #
  782. X  if test -f .[0-z]*
  783. X  then
  784. X    echo "WARNING: The following binary files are being renamed:"
  785. X    for i in .[0-z]*
  786. X    do
  787. X      echo "  File $i being renamed to 0$i"
  788. X      mv $i 0$i
  789. X    done
  790. X  fi
  791. X  # First compress all the files to save room (use 12-bit compression for
  792. X  # compatibility with the machines that don't have enough memory to compile
  793. X  # compress with default USERMEM -- this works with #define USERMEM 300000).
  794. X  if test $filetype = "binary"
  795. X  then
  796. X    # Binary file digest
  797. X    compress -q -b 12 * >/dev/null
  798. X    echo Alex library encoding starting:
  799. X    for i in *
  800. X    do
  801. X      echo --------------------- CUT HERE -------------------
  802. X      btoa $i < $i
  803. X    done
  804. X  else
  805. X    # ASCII file digest
  806. X    for i in *
  807. X    do
  808. X      echo
  809. X      echo --------------------- CUT HERE -------------------
  810. X      echo 'ASCII '${i}
  811. X      # Take out any CTRL-Z's from the file, and add the file to the digest
  812. X      tr -d \\032 < $i
  813. X    done
  814. X  fi
  815. X  rm -f * .[0-z]*
  816. X  cd
  817. X  $rmdircmmd /tmp/$USER$$
  818. X  # end case encode)
  819. X  ;;
  820. Xdecode)
  821. X#****************************************************************************
  822. X#*                              Decode Option                               *
  823. X#****************************************************************************
  824. X# Decode Option: Just decode an Alex library from standard input,
  825. X# and leave the files in the current directory.
  826. X#
  827. X  # Trap interrupts: Remove the temporary files and allow messages.
  828. X  trap 'trap : 1 2 3 ; 
  829. X    rm -f /tmp/undig$$/* /tmp/decod$$/* /tmp/decod$$/.[0-z]* ;
  830. X    $rmdircmmd /tmp/undig$$ /tmp/decod$$ ;
  831. X    mesg y ; exit' 1 2 3
  832. X  #
  833. X  echo "ALEX: Decode option selected"
  834. X  pwd=`pwd`
  835. X  mkdir /tmp/undig$$
  836. X  undigest /tmp/undig$$/tmp
  837. X  # Get rid of the junk file (header from e-mail)
  838. X  rm -f /tmp/undig$$/tmp0
  839. X  # Copy the files to another directory, so they can be decoded if necessary.
  840. X  mkdir /tmp/decod$$
  841. X  cd /tmp/decod$$
  842. X  for i in /tmp/undig$$/tmp*
  843. X  do
  844. X    # See if file is binary or ASCII
  845. X    ftype=`$headcmmd -1 $i | cut -d' ' -f1`
  846. X    # Get file name if ASCII
  847. X    fname=`$headcmmd -1 $i | cut -s -d' ' -f2`
  848. X    if test "${ftype}" != "ASCII" -a "${fname}"
  849. X    then
  850. X      # File is binary
  851. X      atob -f < $i
  852. X    else
  853. X      # File is ASCII: strip off all occurences of CTRL-M (carriage return)
  854. X      #   and CTRL-Z (MSDOS EOF) from the file.
  855. X      tail +2 $i |tr -d \\015 |tr -d \\032 > $fname
  856. X    fi
  857. X  done
  858. X  rm -f /tmp/undig$$/*
  859. X  $rmdircmmd /tmp/undig$$
  860. X  # Now uncompress any compressed files
  861. X  if test -f *.Z
  862. X  then
  863. X    uncompress -q *.Z >/dev/null
  864. X  fi
  865. X  # And finally move them all back to the user's original directory
  866. X  cd $pwd
  867. X  mv /tmp/decod$$/* .
  868. X  $rmdircmmd /tmp/decod$$
  869. X  # end case decode)
  870. X  ;;
  871. Xlist)
  872. X#****************************************************************************
  873. X#*                              List Option                                 *
  874. X#****************************************************************************
  875. X# List Option: List all files in an Alex library (from standard input).
  876. X#
  877. X  # Trap interrupts: Remove the temporary files and allow messages.
  878. X  trap 'trap : 1 2 3 ; 
  879. X    rm -f /tmp/undig$$/* /tmp/decod$$/* /tmp/decod$$/.[0-z]* ;
  880. X    $rmdircmmd /tmp/undig$$ /tmp/decod$$ ;
  881. X    mesg y ; exit' 1 2 3
  882. X  #
  883. X  echo "ALEX: List option selected"
  884. X  mkdir /tmp/undig$$
  885. X  undigest /tmp/undig$$/tmp
  886. X  # Get rid of the junk file (header from e-mail)
  887. X  rm -f /tmp/undig$$/tmp0
  888. X  # Copy the files to another directory, so they can be decoded if necessary.
  889. X  mkdir /tmp/decod$$
  890. X  cd /tmp/decod$$
  891. X  for i in /tmp/undig$$/tmp*
  892. X  do
  893. X    # See if file is binary or ASCII
  894. X    ftype=`$headcmmd -1 $i | cut -d' ' -f1`
  895. X    # Get file name if ASCII
  896. X    fname=`$headcmmd -1 $i | cut -s -d' ' -f2`
  897. X    if test "${ftype}" != "ASCII" -a "${fname}"
  898. X    then
  899. X      # File is binary
  900. X      atob -f < $i
  901. X    else
  902. X      # File is ASCII
  903. X      tail +2 $i > $fname
  904. X    fi
  905. X  done
  906. X  rm -f /tmp/undig$$/*
  907. X  $rmdircmmd /tmp/undig$$
  908. X  # Now uncompress any compressed files
  909. X  if test -f *.Z
  910. X  then
  911. X    uncompress -q *.Z >/dev/null
  912. X  fi
  913. X  # And finally give the user a listing.
  914. X  echo "Times given are estimated transmission times, in minutes, to send files"
  915. X  echo "to your PC.  If you are directly connected to the Sytek cable network,"
  916. X  echo "use the T9600 numbers.  If you are using a 1200 baud modem, use T1200."
  917. X  echo "If you are using a 4800 baud modem, use T4800, etc."
  918. X  echo
  919. X  echo " Filename            Size    T1200  T2400  T4800  T9600"
  920. X  echo " ======================================================"
  921. X  # The transmission times below have a fudge factor of 2.5 multiplied in
  922. X  # to account for various communications effects that slow it down.
  923. X  wc -c * | awk '
  924. X  $2=="total"{printf" ------------------------------------------------------\n"}
  925. X  {printf " %-15s %8d   %6.1f %6.1f %6.1f %6.1f\n", \
  926. X  $2, $1, $1 / 3600, $1 / 7200, $1 / 14400, $1 / 28800 }'
  927. X  # Here are the "pure" calculated times, without the fudge factor:
  928. X  # $2, $1, $1 / 9000, $1 / 18000, $1 / 36000, $1 / 72000 }'
  929. X  #
  930. X  rm -f *
  931. X  cd
  932. X  $rmdircmmd /tmp/decod$$
  933. X  # end case list)
  934. X  ;;
  935. Xquick)
  936. X#****************************************************************************
  937. X#*                              Quick Option                                *
  938. X#****************************************************************************
  939. X# Quick Option: Give a quick listing of all files in an Alex library
  940. X#   (from standard input).
  941. X  echo "ALEX: Quick list option selected"
  942. X  awk '
  943. X  BEGIN { dsh1=99999; dsh2=99999 }
  944. X  /------/ { if ($2=="CUT" && $3=="HERE") dsh1=NR+1 }
  945. X  dsh1==NR && $1=="ASCII" { printf "%-15s (ASCII)\n", $2; dsh1=99999 }
  946. X  dsh1==NR && $1!="ASCII" { dsh2=NR+1; dsh1=99999 }
  947. X  dsh2==NR { dsh2=99999; x=index($1,".Z"); 
  948. X         if (x>0) printf ("%-15s (BINARY)\n", substr($1,1,x-1));
  949. X        else printf "%-15s (BINARY)\n", $1 }'
  950. X  ;;
  951. Xesac
  952. X#
  953. Xmesg y
  954. ________This_Is_The_END________
  955. if test `wc -l < alex` -ne 846; then
  956.     echo 'shar: alex was damaged during transit (should have been 846 bytes)'
  957. fi
  958. fi        ; : end of overwriting check
  959. echo 'x - alex.1'
  960. if test -f alex.1; then echo 'shar: not overwriting alex.1'; else
  961. sed 's/^X//' << '________This_Is_The_END________' > alex.1
  962. X.TH ALEX 1C LOCAL
  963. X.SH NAME
  964. Xalex, undigest \- automatic library exchange for PC-to-PC and PC-to-Unix
  965. Xfile transfers
  966. X.SH SYNOPSIS
  967. X.B alex
  968. X[options]
  969. X.br
  970. X.B undigest
  971. Xfilemask
  972. X.SH DESCRIPTION
  973. X.I Alex
  974. Xis a program that allows automatic transfer of groups of files
  975. X(either ASCII or binary)
  976. Xbetween personal computer users, using the Kermit file
  977. Xtransfer protocol and electronic mail.
  978. X.PP
  979. XArguments are optional. The easiest way to use
  980. X.I Alex
  981. Xis from within one of the electronic mail programs, Msg or Mailx. 
  982. XWhen a message created by
  983. X.I Alex
  984. Xis received in Msg, the user may type 'l' (list), followed by the message
  985. Xnumber. When the query 'To file/pipe:' is received, the user should
  986. Xrespond: |alex
  987. X.PP
  988. XIn Mailx, the user may simply type: '|<message #> alex' (without
  989. Xthe quotes).  For instance:  |2 alex
  990. X.PP
  991. XThe user will be presented with a list of all the files ready to be sent
  992. Xto the PC, together with the file sizes and an estimate of the number of
  993. Xminutes required to send each file (and a total, if there is more than
  994. Xone file).  There are four columns
  995. Xof times, labeled T1200, T2400, T4800 and T9600, corresponding 
  996. Xrespectively to times for 1200, 2400, 4800 and 9600 baud communications.
  997. XIf an ARDEC user is unsure of his computer's baud rate, it is probably
  998. Xoperating at 9600 baud.  
  999. X.PP
  1000. XFollowing the table of file transfer times, the user will be asked
  1001. Xto start up the Receive Kermit transfer on his personal computer.
  1002. X.I Alex
  1003. Xoptions include:
  1004. X.TP 8
  1005. X.B \-tac
  1006. XThis option tells Alex to use Kermit with 40-byte packets, even parity,
  1007. Xand seven data bits, for compatibility with the Picatinny TAC.  TAC users
  1008. Xare required to use this option; others should not.  (Normally, Alex
  1009. Xuses the default Unix Kermit parameters, which are 90 byte packets, no
  1010. Xparity, and eight data bits.)
  1011. X.TP
  1012. X.B \-u
  1013. XUpload a file or set of files and send via electronic mail.
  1014. XThe user is presented with a menu for including an optional cover letter
  1015. Xwith his 
  1016. X.I Alex 
  1017. Xlibrary transmission.  Options are (1) Send no cover letter, (2) Send standard 
  1018. X.I Alex 
  1019. Xinstruction file (a general message explaining how to download an 
  1020. X.I Alex 
  1021. Xlibrary from Mailx or Msg, using either the Crosstalk
  1022. Xor Kermit communications programs on a PC), (3) Send your own cover letter
  1023. Xthat you have already saved in a file, or (4) Edit the standard cover
  1024. Xletter.  If item 4 is selected, 
  1025. X.I Alex 
  1026. Xchecks for the existence of the 
  1027. Xenvironment variable EDITOR, and executes it if it exists.  If no EDITOR
  1028. Xenvironment variable has been defined, 
  1029. X.I Alex
  1030. Xprompts the user for the name of his favorite editor.
  1031. XFollowing cover letter selection, the
  1032. Xuser is prompted to begin sending files via Kermit.
  1033. X.TP
  1034. X.B \-u libname
  1035. XUpload a file or set of files and store the encoded library in a file
  1036. Xcalled libname. (This is generally only used by a file archive maintainer,
  1037. Xto keep copies of an
  1038. X.I Alex
  1039. Xlibrary on the Unix system for later transmission.)  Naturally, no cover
  1040. Xletter is sent for this option.
  1041. X.TP
  1042. X.B \-l
  1043. XList the contents of an
  1044. X.I Alex
  1045. Xlibrary.  The library should be supplied on the standard input.  Output
  1046. Xis just like the table produced prior to downloading.
  1047. X.TP
  1048. X.B \-q
  1049. XQuick listing of the contents of an
  1050. X.I Alex
  1051. Xlibrary.  This is just like the -l option, but much faster.  However,
  1052. Xit does not give file sizes or transmission times.
  1053. X.TP
  1054. X.B \-h
  1055. XGives a quick "help" summary of the
  1056. X.I Alex
  1057. Xoptions.
  1058. X.SS FOR ADVANCED USERS:
  1059. XThe remainder of this manual entry is for advanced users only.  These
  1060. Xoptions should not be used
  1061. Xby anyone who does not have a thorough understanding of file formats and
  1062. Xthe ASCII codes.  Other users who require a more detailed explanation of the
  1063. X.I Alex
  1064. Xoptions (either basic or advanced) should consult the complete
  1065. X.I Alex
  1066. XUser's Guide (available by electronic mail from <msdos-request@ARDEC>).
  1067. X.TP 8
  1068. X.B \-a
  1069. XThis option is provided for users who wish to upload plain text (ASCII) files
  1070. Xand send them out in a form that is readable on the Unix system.  
  1071. XThis option is not necessary for the average user, since plain text files
  1072. Xare automatically treated properly by 
  1073. X.I Alex 
  1074. Xfor transfer between PC's.
  1075. XIt is only provided for advanced users who wish to be able to read their 
  1076. X.I Alex
  1077. Xlibraries on the Unix system.  This option is ignored if used in
  1078. X.I Alex
  1079. Xdownload mode (the default), since
  1080. X.I Alex
  1081. Xautomatically recognizes whether a file was uploaded in ASCII mode or
  1082. Ximage mode, and sends it properly.  Since this is done on
  1083. Xa file-by-file basis, users may even construct
  1084. X.I Alex
  1085. Xlibraries that contain a mixture of ASCII and binary files.
  1086. XWARNING: If a text file happens to contain a line that begins with several
  1087. Xdashes, it will be undigested at that line and an error will result.
  1088. X.TP
  1089. X.B \-d
  1090. XThis is a "low-level" command to decode an
  1091. X.I Alex
  1092. Xlibrary (from standard input) and leave the files in the user's current
  1093. Xdirectory.  No file transfers or electronic mail are supported.  
  1094. XIt should be noted
  1095. Xthat text files which originated on a PC will be unreadable on the Unix
  1096. Xsystem, unless they were uploaded with the ASCII option.
  1097. XThis option may not be used in conjunction with any other option.
  1098. X.TP
  1099. X.B \-e file1 [file2 ...]
  1100. XThis is the inverse function of decode, allowing the user to encode an
  1101. X.I Alex
  1102. Xlibrary from files that already exist on the Unix system.  No file transfers
  1103. Xor electronic mail are supported.  The named file (or files) are read,
  1104. Xencoded into
  1105. X.I Alex
  1106. Xformat, and placed on the standard output.  It is the responsibility of the
  1107. Xuser to redirect this output to a file, for example:
  1108. X.sp 1
  1109. X.ti +6
  1110. Xalex -e foo1 foo2 > foo.lib
  1111. X.sp 1
  1112. Xwill encode the files foo1 and foo2, and place the encoded library in
  1113. Xfoo.lib.  This option may not be used
  1114. Xin conjunction with any other option except ASCII.
  1115. X.PP
  1116. X.I Undigest
  1117. Xreads a "digested" message (one message that contains any number of files
  1118. Xwithin it, which need to be separated) from the
  1119. Xstandard input, and breaks the message into files. 
  1120. X.PP
  1121. XFile names are assigned using the filemask provided on the command line to
  1122. X.I Undigest.
  1123. XA file number is appended to the filemask. For instance, if the filemask is
  1124. X"foo", and the digested message contains three files within it, the three
  1125. Xfiles will be given the names "foo0", "foo1", and "foo2".
  1126. X.PP
  1127. XThe separator between files in a digestified message is a line beginning
  1128. Xwith at least five dashes.
  1129. X.PP
  1130. X.I Alex
  1131. Xworks in download mode by first Undigesting its input, then decoding the
  1132. Xundigested binary files using Atob, Uncompressing the files if they end in
  1133. Xa .Z extension, and finally sending the files to the PC via Kermit.  The
  1134. Xupload mode does the reverse process, receiving files from the PC via 
  1135. XKermit, Compressing them (if binary mode is used), encoding them using Btoa
  1136. X(again, only if binary), digestifying the
  1137. Xfiles by concatenating them into one large file separated by a line of
  1138. Xdashes, and optionally sending them out through the system mailer.
  1139. X.SH DIAGNOSTICS
  1140. X.TP 8
  1141. X.B bad format or Csum to atob
  1142. XThis message occurs when a file has been corrupted in the
  1143. X.I Alex
  1144. Xlibrary, usually by the electronic mail system.  The originator should
  1145. Xresend the library.
  1146. X.TP
  1147. X.B ALEX: Cannot specify more than one of...
  1148. XUpload, Decode, Encode, List and Quick List are distinct options that 
  1149. Xcannot be used together.
  1150. X.TP
  1151. X.B (USER) Unknown user name in "username"
  1152. X.B Message posting aborted
  1153. XThis message occurs when an illegal electronic mail address is specified.
  1154. X.TP
  1155. X.B -- file unchanged
  1156. XThis message (issued by Compress) merely tells the user that compression
  1157. Xwas not necessary on one of his files.  It can be ignored.
  1158. X.SH FILES
  1159. X.TP 8
  1160. X.B /tmp/$USER$$, /tmp/undig$$, /tmp/decall$$, /tmp/decbin$$, 
  1161. X.B /tmp/decasc$$
  1162. X(where $$ is the process id and $USER is the user 
  1163. Xname) - temporary directories to store intermediate files in the transfer
  1164. X.TP
  1165. X.B /tmp/alex$$.ba
  1166. X- temporary file for the final encoded library
  1167. X.TP
  1168. X.B /tmp/inst$$
  1169. X- temporary file to hold instructions for use of
  1170. X.I Alex.
  1171. X.TP
  1172. X.B /tmp/$USER$$/.kermrc
  1173. X- the Kermit initialization instructions for TAC users.
  1174. X.SH SEE ALSO
  1175. Xkermit(1), btoa(1C), compress(1C), msg(1), mailx(1), v6mail(1)
  1176. X.SH AUTHORS
  1177. XKen Van Camp, Jim Steiner
  1178. X.SH BUGS
  1179. XFile transmission times have been increased by a fudge factor of 2.5
  1180. Xover the standard calculated times, to account for actual times
  1181. Xexperienced using Kermit.
  1182. X.PP
  1183. XNo more than one address can be specified on either the To: or cc:
  1184. Xlines when using the Alex upload option, due to a quirk in the v6mail
  1185. Xprogram.  Consequently, an Alex library cannot be sent to more than two 
  1186. Xpeople (unless it is first uploaded to a file, then included in a
  1187. Xmessage through Msg or Send).
  1188. ________This_Is_The_END________
  1189. if test `wc -l < alex.1` -ne 226; then
  1190.     echo 'shar: alex.1 was damaged during transit (should have been 226 bytes)'
  1191. fi
  1192. fi        ; : end of overwriting check
  1193. exit 0
  1194.