home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume35 / mbox / part12 < prev    next >
Text File  |  1993-02-05  |  56KB  |  1,982 lines

  1. Newsgroups: comp.sources.misc
  2. From: Volker.Schuermann@unnet.w.open.de (Volker Schuermann)
  3. Subject: v35i047:  mbox - ix/Mbox, A BBS for UNIX and MINIX v1.6 PL10j7, Part12/15
  4. Message-ID: <1993Feb5.185924.10723@sparky.imd.sterling.com>
  5. X-Md4-Signature: 7efb0bf7e626b95e31085c80df1ce32b
  6. Date: Fri, 5 Feb 1993 18:59:24 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: Volker.Schuermann@unnet.w.open.de (Volker Schuermann)
  10. Posting-number: Volume 35, Issue 47
  11. Archive-name: mbox/part12
  12. Environment: MINIX, ISC, ESIX, SVR3
  13. Supersedes: mbox: Volume 31, Issue 16-27
  14.  
  15. #! /bin/sh
  16. # This is a shell archive.  Remove anything before this line, then feed it
  17. # into a shell via "sh file" or similar.  To overwrite existing files,
  18. # type "sh file -c".
  19. # Contents:  etc/deutsch.s.U etc/help.s.U src/control.c src/getline.c
  20. #   src/main.c wendy/misc.c wendy/wendy.c
  21. # Wrapped by kent@sparky on Fri Feb  5 12:18:15 1993
  22. PATH=/bin:/usr/bin:/usr/ucb:/usr/local/bin:/usr/lbin ; export PATH
  23. echo If this archive is complete, you will see the following message:
  24. echo '          "shar: End of archive 12 (of 15)."'
  25. if test -f 'etc/deutsch.s.U' -a "${1}" != "-c" ; then 
  26.   echo shar: Will not clobber existing file \"'etc/deutsch.s.U'\"
  27. else
  28.   echo shar: Extracting \"'etc/deutsch.s.U'\" \(7113 characters\)
  29.   sed "s/^X//" >'etc/deutsch.s.U' <<'END_OF_FILE'
  30. Xbegin 644 etc/deutsch.shorth
  31. XM/R @(" @(" @(" @(" @(" @(" @(" @(" @0F5F96AL<X%B97)S:6-H=" H
  32. XM;&5V96QA8FB$;F=I9RD*/R J(" @(" @(" @(" @(" @(" @(" @(" @0F5F
  33. XM96AL<X%B97)S:6-H=" H86QL92!"969E:&QE*0I"969E:&P@/R @(" @(" @
  34. XM(" @(" @(" @("!);F9O<FUA=&EO;F5N('IU(")"969E:&PB"@HP(" @(" @
  35. XM(" @(" @(" @(" @(" @(" @("!);FAA;'0@9&5S($)E9F5H;'-P=69F97)S
  36. XM"C$M.2 @(" @(" @(" @(" @(" @(" @(" @($)E9F5H;"!A=7,@9&5M(%!U
  37. XM9F9E<B!A8G)U9F5N"@HK(" @(" @(" @(" @(" @(" @(" @(" @("!796-H
  38. XM<V5L;B!I;G,@;H1C:'-T92!"<F5T="!M:70@;F5U96X@07)T:6ME;&X*"BT@
  39. XM(" @(" @(" @(" @(" @(" @(" @(" @(%=E8VAS96QN(&EN<R!V;W)H97)I
  40. XM9V4@0G)E='0@;6ET(&YE=65N($%R=&EK96QN"@I!3E)51D52(" @(" @(" @
  41. XM(" @(" @(" @("!!;G)U9F5R<')O=&]K;VQL"D%.4E5&15(@*B @(" @(" @
  42. XM(" @(" @(" @($%N<G5F97)P<F]T;VMO;&P@*&MO;7!L971T*0I!3E)51D52
  43. XM(",@(" @(" @(" @(" @(" @("!3=&%T:7-T:6L@9&5R($%N<G5F90I!3E)5
  44. XM1D52("4@(" @(" @(" @(" @(" @("!3=&%T:7-T:6L@9&5R($%N<G5F97(@
  45. XM*$AI=&QI<W1E*0H*04Y304=%(" @(" @(" @(" @(" @(" @(" @36ET=&5I
  46. XM;'5N9W-T97AT(&%N>F5I9V5N+X1N9&5R;@H*0E)%5%0@(" @(" @(" @(" @
  47. XM(" @(" @(" @0G)E='1E<B!M:70@86MT=65L;&5N($%R=&EK96QN(&%N>F5I
  48. XM9V5N"D)21514("H@(" @(" @(" @(" @(" @(" @($%L;&4@0G)E='1E<B!A
  49. XM;GIE:6=E;B H;&5V96QA8FB$;F=I9RD*0E)%5%0@*BH@(" @(" @(" @(" @
  50. XM(" @(" @04Q,12!"<F5T=&5R(&%N>F5I9V5N"D)21514("L@(" @(" @(" @
  51. XM(" @(" @(" @(%=E8VAS96QN(&EN<R!NA&-H<W1E($)R971T"D)21514("T@
  52. XM(" @(" @(" @(" @(" @(" @(%=E8VAS96QN(&EN<R!V;W)H97)I9V4@0G)E
  53. XM='0*0E)%5%0@(2 @(" @(" @(" @(" @(" @(" @06MT=65L;&5N($)R971T
  54. XM;F%M96X@875S9V5B96X*0E)%5%0@(R @(" @(" @(" @(" @(" @(" @1W)U
  55. XM<'!E;B H07)E87,I(&%U<V=E8F5N"D)21514("XN(" @(" @(" @(" @(" @
  56. XM(" @($EN;F5R:&%L8B!E:6YE<B!'<G5P<&4@:6YS('9O<FAE<FEG92!"<F5T
  57. XM="!W96-H<V5L;@I"4D545"!"<F5T=&YA;64@(" @(" @(" @("!);G,@0G)E
  58. XM='0@(D)R971T;F%M92(@=V5C:'-E;&X*"D)2245&(%5S97(@(" @(" @(" @
  59. XM(" @(" @(%!E<G.4;FQI8VAE($YA8VAR:6-H="!A;B B57-E<B(@<V5N9&5N
  60. XM"D)2245&($AO<W0A57-E<B @(" @(" @(" @(%!E<G.4;FQI8VAE($YA8VAR
  61. XM:6-H="!A;B B57-E<B(@875F(")(;W-T(@H*0TA!5" @(" @(" @(" @(" @
  62. XM(" @(" @(" @375L=&EP;W)T($-H871S>7-T96T*"D1)4TM54U-)3TX@*B @
  63. XM(" @(" @(" @(" @($%N('=E;&-H96X@1&ES:W5S<VEO;F5N(&)I;B!I8V@@
  64. XM8F5T96EL:6=T/PI$25-+55-324].(" @(" @(" @(" @(" @("!$96T@5&AE
  65. XM;6$@96EN97(@1&ES:W5S<VEO;B!D=7)C:"!E:6YE($=R=7!P92!F;VQG96X*
  66. XM"D1/5TY,3T%$(" @(" @(" @(" @(" @(" @($1I97-E($9U;FMT:6]N(&5R
  67. XM;&%U8G0@97,L($%R=&EK96P@=6YD(%!R;V=R86UM90H@(" @(" @(" @(" @
  68. XM(" @(" @(" @(" @("!U;G1E<B!0<F]T;VMO;&PM2V]N=')O;&QE;B!Z=2!E
  69. XM;7!F86YG96X*"D5$250@07)T:6ME;" @(" @(" @(" @(" @($1E<B!!<G1I
  70. XM:V5L(&UI="!D97(@3G5M;65R(")!<G1I:V5L(B!K86YN"B @(" @(" @(" @
  71. XM(" @(" @(" @(" @(" @(&YA8VAT<H1G;&EC:"!E9&ET:65R="!W97)D96X*
  72. XM"D5.1$4@(" @(" @(" @(" @(" @(" @(" @($UA:6QB;W@@=F5R;&%S<V5N
  73. XM"D5.1$4@*B @(" @(" @(" @(" @(" @(" @($UA:6QB;W@@=F5R;&%S<V5N
  74. XM("A38V%N;F5R(&YI8VAT(&%K='5A;&QI<VEE<F5N*0H*1U)54%!%("L@(" @
  75. XM(" @(" @(" @(" @(" @6G5R(&YE>'1E;B!'<G5P<&4@96EN97(@56YT97)G
  76. XM<G5P<&4*1U)54%!%("LK(" @(" @(" @(" @(" @(" @6G5R(&YE>'1E;B!'
  77. XM<G5P<&4*1U)54%!%("T@(" @(" @(" @(" @(" @(" @6G5R('9O<FAE<FEG
  78. XM96X@1W)U<'!E(&5I;F5R(%5N=&5R9W)U<'!E"D=255!012 M+2 @(" @(" @
  79. XM(" @(" @(" @(%IU<B!V;W)H97)I9V5N($=R=7!P90H*2$E,1D4@(" @(" @
  80. XM(" @(" @(" @(" @(" @1&EE<V4@2W5R>FAI;&9E(&%N>F5I9V5N"DA)3$9%
  81. XM("H@(" @(" @(" @(" @(" @(" @($AI;&9S=&5X=&4@:V]M<&QE='0@875S
  82. XM9V5B96X*2$E,1D4@0F5F96AL(" @(" @(" @(" @(" @2&EL9G-T97AT('IU
  83. XM;2!"969E:&P@(D)E9F5H;"(@>F5I9V5N"@I)3DA!3%0@(" @(" @(" @(" @
  84. XM(" @(" @("!);F1E>"!D97(@86MT=65L;&5N($%R=&EK96P@875S9V5B96X*
  85. XM24Y(04Q4("H@(" @(" @(" @(" @(" @(" @06QL92!!<G1I:V5L(&5I;F5S
  86. XM($)R971T97,@86YZ96EG96X*"DQ%4T5.(" @(" @(" @(" @(" @(" @(" @
  87. XM($YE=64@07)T:6ME;"!L:7-T96X*3$5314X@*B @(" @(" @(" @(" @(" @
  88. XM(" @06QL92!!<G1I:V5L(&QI<W1E;@I,15-%3B!!<G1I:V5L(" @(" @(" @
  89. XM(" @("!!<G1I:V5L(&UI="!D97(@3G5M;65R(")!<G1I:V5L(B!A=7-G96)E
  90. XM;@I,15-%3B!!<G1I:V5L+4%R=&EK96P@(" @("!!<G1I:V5L('9O;B!.=6UM
  91. XM97(@(D%R=&EK96PB(&)I<R B07)T:6ME;"(@>F5I9V5N"@I,3T530TA%3B!!
  92. XM<G1I:V5L(" @(" @(" @("!!<G1I:V5L($YU;6UE<B B07)T:6ME;"(@;)1S
  93. XM8VAE;@I,3T530TA%3B!!<G1I:V5L+4%R=&EK96P@("!,E'-C:&5N('9O;B B
  94. XM07)T:6ME;"(@8FES(")!<G1I:V5L(@I,3T530TA%3B ^(" @(" @(" @(" @
  95. XM(" @("!!;&QE($MO<&EE;B H(2D@96EG96YE<B!-86EL<R!LE'-C:&5N"@I-
  96. XM04M23R @(" @(" @(" @(" @(" @(" @("!-86MR;W9E<F5I;F)A<G5N9V5N
  97. XM('IE:6=E;B^$;F1E<FX*"DU)3DE8(%-H96QL+4)E9F5H;" @(" @(" @($5X
  98. XM=&5R;F5S($MO;6UA;F1O(")3:&5L;"U"969E:&PB(&%U<V:!:')E;@H*3U54
  99. XM1$E!3" @(" @(" @(" @(" @(" @(" @5F5R8FEN9'5N9R!Z=2!E>'1E<FYE
  100. XM;B!(;W-T<R!V:6$@1&%T97@M4 H*4$T@(" @(" @(" @(" @(" @(" @(" @
  101. XM(" @26YS('!E<G.4;FQI8VAE(%9E<GIE:6-H;FES('=E8VAS96QN"@I03U)4
  102. XM24Y&3R @(" @(" @(" @(" @(" @("!!:W1I=FETA'1E;B!D97(@=F5R<V-H
  103. XM:65D96YE;B!497)M:6YA;',@>F5I9V5N"@I03U-41D%#2" @(" @(" @(" @
  104. XM(" @(" @("!0;W-T9F%C:"!E:6YR:6-H=&5N"@I224-(5%5.1R @(" @(" @
  105. XM(" @(" @(" @("!,97-E<FEC:'1U;F<@*&%L=" \+3X@;F5U*2"$;F1E<FX*
  106. XM"E-#2%)%24)%3B @(" @(" @(" @(" @(" @($%R=&EK96P@97)F87-S96X@
  107. XM=6YD('-P96EC:&5R;@H*4T5455 @(" @(" @(" @(" @(" @(" @(" @4&5R
  108. XM<Y1N;&EC:&4@06YP87-S=6YG96X*"E-0245,12 @(" @(" @(" @(" @(" @
  109. XM(" @(%9E<G-C:&EE9&5N92!3<&EE;&4@=V5R9&5N(&%U9F=E;&ES=&5T+V%U
  110. XM9F=E<G5F96X*"E-405154R @(" @(" @(" @(" @(" @(" @($%U<V=A8F4@
  111. XM9&5R(&5I9V5N96X@06YP87-S=6YG96X*"E-4051)4U1)2R @(" @(" @(" @
  112. XM(" @(" @($1A=&5I+5-T871I<W1I:R!D97(@=F5R<V-H+B!"<F5T=&5R(&%N
  113. XM>F5I9V5N"E-4051)4U1)2R J(" @(" @(" @(" @(" @(%-T871I<W1I:R!K
  114. XM;VUP;&5T="!A=7-G96)E;@I35$%425-424L@)" @(" @(" @(" @(" @("":
  115. XM8F5R<VEC:'0@9&5R(%550U M1V5B@6AR96X*4U1!5$E35$E+(",@(" @(" @
  116. XM(" @(" @(" @4')O=&]K;VQL(&1E<B!$;W=N;&]A9',@*%!$+4)R971T97(I
  117. XM"E-4051)4U1)2R E(" @(" @(" @(" @(" @(%!R;W1O:V]L;"!D97(@1&]W
  118. XM;FQO861S("A(251,25-412D*4U1!5$E35$E+(#X@(" @(" @(" @(" @(" @
  119. XM4')O=&]K;VQL(&1E<R!8340@*$UA:6QE<BD*"E-50TA%3B!-=7-T97(@(" @
  120. XM(" @(" @(" @($%R=&EK96P@96EN97,@0G)E='1E<R!N86-H(")-=7-T97(B
  121. XM(&1U<F-H<W5C:&5N"@I365-)3D9/(" @(" @(" @(" @(" @(" @("!!;&QG
  122. XM96UE:6YE($EN9F]R;6%T:6]N96X@>G5R($UA:6QB;W@*"E5.5$524T-(4DE&
  123. XM5" @(" @(" @(" @(" @(%5N=&5R<V-H<FEF="!A;GIE:6=E;B^$;F1E<FX*
  124. XM"E503$]!1" @(" @(" @(" @(" @(" @(" @($1I97-E($9U;FMT:6]N('=I
  125. XM<F0@=65B97(@9&5N($)E9F5H;"!30TA214E"14X*(" @(" @(" @(" @(" @
  126. XM(" @(" @(" @(" @875T;VUA=&ES8V@@875F9V5R=69E;@H*55-%4B @(" @
  127. XM(" @(" @(" @(" @(" @(" @57-E<FQI<W1E(&%U<V=E8F5N"E5315(@*B @
  128. XM(" @(" @(" @(" @(" @(" @(%5S97)L:7-T92!M:70@97)W96ET97)E;B!)
  129. XM;F9O<FUA=&EO;F5N"E5315(@(R @(" @(" @(" @(" @(" @(" @(%5S97)L
  130. XM:7-T92!M:70@57 M+T1O=VYL;V%D(%9E<FB$;'1N:7,*55-%4B E(" @(" @
  131. XM(" @(" @(" @(" @(" @57-E<FQI<W1E(&UI="!!;F=A8F4@9&5R($=R=7!P
  132. XM96XO3F5W<V=R;W5P<PI54T52("0@(" @(" @(" @(" @(" @(" @("!5<V5R
  133. XM;&ES=&4@>G5R($=E8H%H<F5N86)R96-H;G5N9PI54T52($YA;64@(" @(" @
  134. XM(" @(" @(" @("!);F9O<FUA=&EO;F5N((%B97(@9&5N(%1E:6QN96AM97)N
  135. XM(").86UE(@H*54U,0554(" @(" @(" @(" @(" @(" @(" @56UL875T+4MO
  136. XM;G9E<G1I97)U;F<@96EN+2!U;F0@875S<V-H86QT96X*"E9%4E-)3TX@(" @
  137. XM(" @(" @(" @(" @(" @(%9E<G-I;VYS;G5M;65R(&%U<V=E8F5N"E9%4E-)
  138. XM3TX@*B @(" @(" @(" @(" @(" @(%9E<G-I;VYS;G5M;65R('5N9"!$969I
  139. XM;FET:6]N96X@875S9V5B96X*5D524TE/3B C(" @(" @(" @(" @(" @(" @
  140. XM5F5R<VEO;G-N=6UM97(@=6YD(")(86QL(&]F($9A;64B(&%U<V=E8F5N"@I7
  141. XM14E415),14E414X@(" @(" @(" @(" @("!796ET97)L96ET8F%R92!037,@
  142. XM86YZ96EG96X*5T5)5$523$5)5$5.(%5S97(@(" @(" @(" @5V5I=&5R;&5I
  143. XM=&)A<F4@4$T@86X@(E5S97(B('-E;F1E;@I714E415),14E414X@07)T:6ME
  144. XM;"!5<V5R("!!<G1I:V5L($YU;6UE<B B07)T:6ME;"(@86X@(E5S97(B('-E
  145. X%;F1E;@IR
  146. Xend
  147. END_OF_FILE
  148.   if test 7113 -ne `wc -c <'etc/deutsch.s.U'`; then
  149.     echo shar: \"'etc/deutsch.s.U'\" unpacked with wrong size!
  150.   else
  151.     echo shar: Uudecoding \"'etc/deutsch.shorth'\" \(5135 characters\)
  152.     cat etc/deutsch.s.U | uudecode
  153.     if test 5135 -ne `wc -c <'etc/deutsch.shorth'`; then
  154.       echo shar: \"'etc/deutsch.shorth'\" uudecoded with wrong size!
  155.     else
  156.       rm etc/deutsch.s.U
  157.     fi
  158.   fi
  159.   # end of 'etc/deutsch.s.U'
  160. fi
  161. if test -f 'etc/help.s.U' -a "${1}" != "-c" ; then 
  162.   echo shar: Will not clobber existing file \"'etc/help.s.U'\"
  163. else
  164.   echo shar: Extracting \"'etc/help.s.U'\" \(7113 characters\)
  165.   sed "s/^X//" >'etc/help.s.U' <<'END_OF_FILE'
  166. Xbegin 644 etc/help.shorthelp
  167. XM/R @(" @(" @(" @(" @(" @(" @(" @(" @0F5F96AL<X%B97)S:6-H=" H
  168. XM;&5V96QA8FB$;F=I9RD*/R J(" @(" @(" @(" @(" @(" @(" @(" @0F5F
  169. XM96AL<X%B97)S:6-H=" H86QL92!"969E:&QE*0I"969E:&P@/R @(" @(" @
  170. XM(" @(" @(" @("!);F9O<FUA=&EO;F5N('IU(")"969E:&PB"@HP(" @(" @
  171. XM(" @(" @(" @(" @(" @(" @("!);FAA;'0@9&5S($)E9F5H;'-P=69F97)S
  172. XM"C$M.2 @(" @(" @(" @(" @(" @(" @(" @($)E9F5H;"!A=7,@9&5M(%!U
  173. XM9F9E<B!A8G)U9F5N"@HK(" @(" @(" @(" @(" @(" @(" @(" @("!796-H
  174. XM<V5L;B!I;G,@;H1C:'-T92!"<F5T="!M:70@;F5U96X@07)T:6ME;&X*"BT@
  175. XM(" @(" @(" @(" @(" @(" @(" @(" @(%=E8VAS96QN(&EN<R!V;W)H97)I
  176. XM9V4@0G)E='0@;6ET(&YE=65N($%R=&EK96QN"@I!3E)51D52(" @(" @(" @
  177. XM(" @(" @(" @("!!;G)U9F5R<')O=&]K;VQL"D%.4E5&15(@*B @(" @(" @
  178. XM(" @(" @(" @($%N<G5F97)P<F]T;VMO;&P@*&MO;7!L971T*0I!3E)51D52
  179. XM(",@(" @(" @(" @(" @(" @("!3=&%T:7-T:6L@9&5R($%N<G5F90I!3E)5
  180. XM1D52("4@(" @(" @(" @(" @(" @("!3=&%T:7-T:6L@9&5R($%N<G5F97(@
  181. XM*$AI=&QI<W1E*0H*04Y304=%(" @(" @(" @(" @(" @(" @(" @36ET=&5I
  182. XM;'5N9W-T97AT(&%N>F5I9V5N+X1N9&5R;@H*0E)%5%0@(" @(" @(" @(" @
  183. XM(" @(" @(" @0G)E='1E<B!M:70@86MT=65L;&5N($%R=&EK96QN(&%N>F5I
  184. XM9V5N"D)21514("H@(" @(" @(" @(" @(" @(" @($%L;&4@0G)E='1E<B!A
  185. XM;GIE:6=E;B H;&5V96QA8FB$;F=I9RD*0E)%5%0@*BH@(" @(" @(" @(" @
  186. XM(" @(" @04Q,12!"<F5T=&5R(&%N>F5I9V5N"D)21514("L@(" @(" @(" @
  187. XM(" @(" @(" @(%=E8VAS96QN(&EN<R!NA&-H<W1E($)R971T"D)21514("T@
  188. XM(" @(" @(" @(" @(" @(" @(%=E8VAS96QN(&EN<R!V;W)H97)I9V4@0G)E
  189. XM='0*0E)%5%0@(2 @(" @(" @(" @(" @(" @(" @06MT=65L;&5N($)R971T
  190. XM;F%M96X@875S9V5B96X*0E)%5%0@(R @(" @(" @(" @(" @(" @(" @1W)U
  191. XM<'!E;B H07)E87,I(&%U<V=E8F5N"D)21514("XN(" @(" @(" @(" @(" @
  192. XM(" @($EN;F5R:&%L8B!E:6YE<B!'<G5P<&4@:6YS('9O<FAE<FEG92!"<F5T
  193. XM="!W96-H<V5L;@I"4D545"!"<F5T=&YA;64@(" @(" @(" @("!);G,@0G)E
  194. XM='0@(D)R971T;F%M92(@=V5C:'-E;&X*"D)2245&(%5S97(@(" @(" @(" @
  195. XM(" @(" @(%!E<G.4;FQI8VAE($YA8VAR:6-H="!A;B B57-E<B(@<V5N9&5N
  196. XM"D)2245&($AO<W0A57-E<B @(" @(" @(" @(%!E<G.4;FQI8VAE($YA8VAR
  197. XM:6-H="!A;B B57-E<B(@875F(")(;W-T(@H*0TA!5" @(" @(" @(" @(" @
  198. XM(" @(" @(" @375L=&EP;W)T($-H871S>7-T96T*"D1)4TM54U-)3TX@*B @
  199. XM(" @(" @(" @(" @($%N('=E;&-H96X@1&ES:W5S<VEO;F5N(&)I;B!I8V@@
  200. XM8F5T96EL:6=T/PI$25-+55-324].(" @(" @(" @(" @(" @("!$96T@5&AE
  201. XM;6$@96EN97(@1&ES:W5S<VEO;B!D=7)C:"!E:6YE($=R=7!P92!F;VQG96X*
  202. XM"D1/5TY,3T%$(" @(" @(" @(" @(" @(" @($1I97-E($9U;FMT:6]N(&5R
  203. XM;&%U8G0@97,L($%R=&EK96P@=6YD(%!R;V=R86UM90H@(" @(" @(" @(" @
  204. XM(" @(" @(" @(" @("!U;G1E<B!0<F]T;VMO;&PM2V]N=')O;&QE;B!Z=2!E
  205. XM;7!F86YG96X*"D5$250@07)T:6ME;" @(" @(" @(" @(" @($1E<B!!<G1I
  206. XM:V5L(&UI="!D97(@3G5M;65R(")!<G1I:V5L(B!K86YN"B @(" @(" @(" @
  207. XM(" @(" @(" @(" @(" @(&YA8VAT<H1G;&EC:"!E9&ET:65R="!W97)D96X*
  208. XM"D5.1$4@(" @(" @(" @(" @(" @(" @(" @($UA:6QB;W@@=F5R;&%S<V5N
  209. XM"D5.1$4@*B @(" @(" @(" @(" @(" @(" @($UA:6QB;W@@=F5R;&%S<V5N
  210. XM("A38V%N;F5R(&YI8VAT(&%K='5A;&QI<VEE<F5N*0H*1U)54%!%("L@(" @
  211. XM(" @(" @(" @(" @(" @6G5R(&YE>'1E;B!'<G5P<&4@96EN97(@56YT97)G
  212. XM<G5P<&4*1U)54%!%("LK(" @(" @(" @(" @(" @(" @6G5R(&YE>'1E;B!'
  213. XM<G5P<&4*1U)54%!%("T@(" @(" @(" @(" @(" @(" @6G5R('9O<FAE<FEG
  214. XM96X@1W)U<'!E(&5I;F5R(%5N=&5R9W)U<'!E"D=255!012 M+2 @(" @(" @
  215. XM(" @(" @(" @(%IU<B!V;W)H97)I9V5N($=R=7!P90H*2$E,1D4@(" @(" @
  216. XM(" @(" @(" @(" @(" @1&EE<V4@2W5R>FAI;&9E(&%N>F5I9V5N"DA)3$9%
  217. XM("H@(" @(" @(" @(" @(" @(" @($AI;&9S=&5X=&4@:V]M<&QE='0@875S
  218. XM9V5B96X*2$E,1D4@0F5F96AL(" @(" @(" @(" @(" @2&EL9G-T97AT('IU
  219. XM;2!"969E:&P@(D)E9F5H;"(@>F5I9V5N"@I)3DA!3%0@(" @(" @(" @(" @
  220. XM(" @(" @("!);F1E>"!D97(@86MT=65L;&5N($%R=&EK96P@875S9V5B96X*
  221. XM24Y(04Q4("H@(" @(" @(" @(" @(" @(" @06QL92!!<G1I:V5L(&5I;F5S
  222. XM($)R971T97,@86YZ96EG96X*"DQ%4T5.(" @(" @(" @(" @(" @(" @(" @
  223. XM($YE=64@07)T:6ME;"!L:7-T96X*3$5314X@*B @(" @(" @(" @(" @(" @
  224. XM(" @06QL92!!<G1I:V5L(&QI<W1E;@I,15-%3B!!<G1I:V5L(" @(" @(" @
  225. XM(" @("!!<G1I:V5L(&UI="!D97(@3G5M;65R(")!<G1I:V5L(B!A=7-G96)E
  226. XM;@I,15-%3B!!<G1I:V5L+4%R=&EK96P@(" @("!!<G1I:V5L('9O;B!.=6UM
  227. XM97(@(D%R=&EK96PB(&)I<R B07)T:6ME;"(@>F5I9V5N"@I,3T530TA%3B!!
  228. XM<G1I:V5L(" @(" @(" @("!!<G1I:V5L($YU;6UE<B B07)T:6ME;"(@;)1S
  229. XM8VAE;@I,3T530TA%3B!!<G1I:V5L+4%R=&EK96P@("!,E'-C:&5N('9O;B B
  230. XM07)T:6ME;"(@8FES(")!<G1I:V5L(@I,3T530TA%3B ^(" @(" @(" @(" @
  231. XM(" @("!!;&QE($MO<&EE;B H(2D@96EG96YE<B!-86EL<R!LE'-C:&5N"@I-
  232. XM04M23R @(" @(" @(" @(" @(" @(" @("!-86MR;W9E<F5I;F)A<G5N9V5N
  233. XM('IE:6=E;B^$;F1E<FX*"DU)3DE8(%-H96QL+4)E9F5H;" @(" @(" @($5X
  234. XM=&5R;F5S($MO;6UA;F1O(")3:&5L;"U"969E:&PB(&%U<V:!:')E;@H*3U54
  235. XM1$E!3" @(" @(" @(" @(" @(" @(" @5F5R8FEN9'5N9R!Z=2!E>'1E<FYE
  236. XM;B!(;W-T<R!V:6$@1&%T97@M4 H*4$T@(" @(" @(" @(" @(" @(" @(" @
  237. XM(" @26YS('!E<G.4;FQI8VAE(%9E<GIE:6-H;FES('=E8VAS96QN"@I03U)4
  238. XM24Y&3R @(" @(" @(" @(" @(" @("!!:W1I=FETA'1E;B!D97(@=F5R<V-H
  239. XM:65D96YE;B!497)M:6YA;',@>F5I9V5N"@I03U-41D%#2" @(" @(" @(" @
  240. XM(" @(" @("!0;W-T9F%C:"!E:6YR:6-H=&5N"@I224-(5%5.1R @(" @(" @
  241. XM(" @(" @(" @("!,97-E<FEC:'1U;F<@*&%L=" \+3X@;F5U*2"$;F1E<FX*
  242. XM"E-#2%)%24)%3B @(" @(" @(" @(" @(" @($%R=&EK96P@97)F87-S96X@
  243. XM=6YD('-P96EC:&5R;@H*4T5455 @(" @(" @(" @(" @(" @(" @(" @4&5R
  244. XM<Y1N;&EC:&4@06YP87-S=6YG96X*"E-0245,12 @(" @(" @(" @(" @(" @
  245. XM(" @(%9E<G-C:&EE9&5N92!3<&EE;&4@=V5R9&5N(&%U9F=E;&ES=&5T+V%U
  246. XM9F=E<G5F96X*"E-405154R @(" @(" @(" @(" @(" @(" @($%U<V=A8F4@
  247. XM9&5R(&5I9V5N96X@06YP87-S=6YG96X*"E-4051)4U1)2R @(" @(" @(" @
  248. XM(" @(" @($1A=&5I+5-T871I<W1I:R!D97(@=F5R<V-H+B!"<F5T=&5R(&%N
  249. XM>F5I9V5N"E-4051)4U1)2R J(" @(" @(" @(" @(" @(%-T871I<W1I:R!K
  250. XM;VUP;&5T="!A=7-G96)E;@I35$%425-424L@)" @(" @(" @(" @(" @("":
  251. XM8F5R<VEC:'0@9&5R(%550U M1V5B@6AR96X*4U1!5$E35$E+(",@(" @(" @
  252. XM(" @(" @(" @4')O=&]K;VQL(&1E<B!$;W=N;&]A9',@*%!$+4)R971T97(I
  253. XM"E-4051)4U1)2R E(" @(" @(" @(" @(" @(%!R;W1O:V]L;"!D97(@1&]W
  254. XM;FQO861S("A(251,25-412D*4U1!5$E35$E+(#X@(" @(" @(" @(" @(" @
  255. XM4')O=&]K;VQL(&1E<R!8340@*$UA:6QE<BD*"E-50TA%3B!-=7-T97(@(" @
  256. XM(" @(" @(" @($%R=&EK96P@96EN97,@0G)E='1E<R!N86-H(")-=7-T97(B
  257. XM(&1U<F-H<W5C:&5N"@I365-)3D9/(" @(" @(" @(" @(" @(" @("!!;&QG
  258. XM96UE:6YE($EN9F]R;6%T:6]N96X@>G5R($UA:6QB;W@*"E5.5$524T-(4DE&
  259. XM5" @(" @(" @(" @(" @(%5N=&5R<V-H<FEF="!A;GIE:6=E;B^$;F1E<FX*
  260. XM"E503$]!1" @(" @(" @(" @(" @(" @(" @($1I97-E($9U;FMT:6]N('=I
  261. XM<F0@=65B97(@9&5N($)E9F5H;"!30TA214E"14X*(" @(" @(" @(" @(" @
  262. XM(" @(" @(" @(" @875T;VUA=&ES8V@@875F9V5R=69E;@H*55-%4B @(" @
  263. XM(" @(" @(" @(" @(" @(" @57-E<FQI<W1E(&%U<V=E8F5N"E5315(@*B @
  264. XM(" @(" @(" @(" @(" @(" @(%5S97)L:7-T92!M:70@97)W96ET97)E;B!)
  265. XM;F9O<FUA=&EO;F5N"E5315(@(R @(" @(" @(" @(" @(" @(" @(%5S97)L
  266. XM:7-T92!M:70@57 M+T1O=VYL;V%D(%9E<FB$;'1N:7,*55-%4B E(" @(" @
  267. XM(" @(" @(" @(" @(" @57-E<FQI<W1E(&UI="!!;F=A8F4@9&5R($=R=7!P
  268. XM96XO3F5W<V=R;W5P<PI54T52("0@(" @(" @(" @(" @(" @(" @("!5<V5R
  269. XM;&ES=&4@>G5R($=E8H%H<F5N86)R96-H;G5N9PI54T52($YA;64@(" @(" @
  270. XM(" @(" @(" @("!);F9O<FUA=&EO;F5N((%B97(@9&5N(%1E:6QN96AM97)N
  271. XM(").86UE(@H*54U,0554(" @(" @(" @(" @(" @(" @(" @56UL875T+4MO
  272. XM;G9E<G1I97)U;F<@96EN+2!U;F0@875S<V-H86QT96X*"E9%4E-)3TX@(" @
  273. XM(" @(" @(" @(" @(" @(%9E<G-I;VYS;G5M;65R(&%U<V=E8F5N"E9%4E-)
  274. XM3TX@*B @(" @(" @(" @(" @(" @(%9E<G-I;VYS;G5M;65R('5N9"!$969I
  275. XM;FET:6]N96X@875S9V5B96X*5D524TE/3B C(" @(" @(" @(" @(" @(" @
  276. XM5F5R<VEO;G-N=6UM97(@=6YD(")(86QL(&]F($9A;64B(&%U<V=E8F5N"@I7
  277. XM14E415),14E414X@(" @(" @(" @(" @("!796ET97)L96ET8F%R92!037,@
  278. XM86YZ96EG96X*5T5)5$523$5)5$5.(%5S97(@(" @(" @(" @5V5I=&5R;&5I
  279. XM=&)A<F4@4$T@86X@(E5S97(B('-E;F1E;@I714E415),14E414X@07)T:6ME
  280. XM;"!5<V5R("!!<G1I:V5L($YU;6UE<B B07)T:6ME;"(@86X@(E5S97(B('-E
  281. X%;F1E;@IR
  282. Xend
  283. END_OF_FILE
  284.   if test 7113 -ne `wc -c <'etc/help.s.U'`; then
  285.     echo shar: \"'etc/help.s.U'\" unpacked with wrong size!
  286.   else
  287.     echo shar: Uudecoding \"'etc/help.shorthelp'\" \(5135 characters\)
  288.     cat etc/help.s.U | uudecode
  289.     if test 5135 -ne `wc -c <'etc/help.shorthelp'`; then
  290.       echo shar: \"'etc/help.shorthelp'\" uudecoded with wrong size!
  291.     else
  292.       rm etc/help.s.U
  293.     fi
  294.   fi
  295.   # end of 'etc/help.s.U'
  296. fi
  297. if test -f 'src/control.c' -a "${1}" != "-c" ; then 
  298.   echo shar: Will not clobber existing file \"'src/control.c'\"
  299. else
  300.   echo shar: Extracting \"'src/control.c'\" \(2626 characters\)
  301.   sed "s/^X//" >'src/control.c' <<'END_OF_FILE'
  302. X/***************************************************************************/
  303. X/*        PROGRAMM  ix/Mbox                           */
  304. X/*             DATEI  control.c                           */
  305. X/*        FUNKTIONEN  control(), whodo()                   */
  306. X/*             AUTOR  vs (Volker Schuermann/MINIX-Version)           */
  307. X/*  LETZTE AENDERUNG  24.11.1991                       */
  308. X/***************************************************************************/
  309. X
  310. X#include <stdio.h>
  311. X
  312. X#include "mbox.h"
  313. X
  314. X
  315. X
  316. X/***************************************************************************/
  317. X/*      FUNKTION  control()                           */
  318. X/*  BESCHREIBUNG  Fuehrt ein "Logbuch" in zwei versch. Dateien/auf zwei    */
  319. X/*          versch. Geraeten (CONSOLE & CPRN).                       */
  320. X/*     PARAMETER  text  =  Ansage-Text                                     */
  321. X/*          mode  =  '< 99'  =  Ausgabe auf CONSOLE                  */
  322. X/*          mode  =  '= 99'  =  Ausgabe auf CPRN                     */
  323. X/*     RUECKGABE  keine                                                       */
  324. X/***************************************************************************/
  325. X
  326. XFILE *contfp = NULL;
  327. X
  328. Xvoid control(text, mode)
  329. Xunsigned char text[];
  330. Xint mode;
  331. X{
  332. X  if (mode < 99) {
  333. X
  334. X#ifdef _MINIX
  335. X    if(tty() >= FIRST_EX_TTY){
  336. X#endif
  337. X        contfp = fopen(CONSOLE_REDIRECT, "a");
  338. X        if (contfp == NULL) {
  339. X            printf("\n\n%s [%s]\n\n", CTL01_MSG, CONSOLE_REDIRECT);
  340. X            exit(-1);
  341. X        }
  342. X#ifdef _DATESTAMP
  343. X        fprintf(contfp, "%s %s <%s>  %s\n", mydate(1), mytime(1), ttyna(), text);
  344. X#else
  345. X        fprintf(contfp, "MBOX: (%s:) %s\n", ttyna(), text);
  346. X#endif
  347. X        fflush(contfp);
  348. X        fclose(contfp);
  349. X#ifdef _MINIX
  350. X    }
  351. X#endif
  352. X
  353. X  }
  354. X  if (mode == 99) {
  355. X    contfp = fopen(CPRN, "a");
  356. X    if (contfp == NULL) {
  357. X        printf("\n\n%s [%s]\n\n", CTL01_MSG, CPRN);
  358. X        exit(-1);
  359. X    }
  360. X    fprintf(contfp, "\n%s  -  %s\n", mydate(1), mytime(1));
  361. X    fprintf(contfp, "MBOX: (%s:) %s\n", ttyna(), text);
  362. X    fflush(contfp);
  363. X    fclose(contfp);
  364. X  }
  365. X}
  366. X
  367. X
  368. X
  369. X/***************************************************************************/
  370. X/*      FUNKTION  whodo()                           */
  371. X/*  BESCHREIBUNG  Erstellt eine Datei fuer die "portinfo()"-Routine.       */
  372. X/*     PARAMETER  text = Ansage-Text (aktiver Befehl etc.)                 */
  373. X/*     RUECKGABE  keine                                                       */
  374. X/***************************************************************************/
  375. X
  376. Xvoid whodo(text)
  377. Xunsigned char text[];
  378. X{
  379. X  FILE *fp;
  380. X  unsigned char s[STRING];
  381. X
  382. X  s[0] = '\0'; strcat(s, HOME); strcat(s, "/etc/");
  383. X  strcat(s, (unsigned char *) ttyna()); strcat(s, ".");
  384. X
  385. X  fp = fopen(s, "w");
  386. X  if (fp == NULL) {
  387. X    nerror("control.c", 44, "whodo", "Datei-Schreibfehler", s);
  388. X  }
  389. X  fputs(text, fp);
  390. X  fclose(fp);
  391. X}
  392. END_OF_FILE
  393.   if test 2626 -ne `wc -c <'src/control.c'`; then
  394.     echo shar: \"'src/control.c'\" unpacked with wrong size!
  395.   fi
  396.   # end of 'src/control.c'
  397. fi
  398. if test -f 'src/getline.c' -a "${1}" != "-c" ; then 
  399.   echo shar: Will not clobber existing file \"'src/getline.c'\"
  400. else
  401.   echo shar: Extracting \"'src/getline.c'\" \(8445 characters\)
  402.   sed "s/^X//" >'src/getline.c' <<'END_OF_FILE'
  403. X/***************************************************************************/
  404. X/*        PROGRAMM  ix/Mbox                           */
  405. X/*             DATEI  getline.c                           */
  406. X/*        FUNKTIONEN  getline(), getint(), yesno()               */
  407. X/*             AUTOR  vs (Volker Schuermann/MINIX-Version)           */
  408. X/*  LETZTE AENDERUNG  17.11.1992                       */
  409. X/***************************************************************************/
  410. X
  411. X#include <stdio.h>
  412. X
  413. X#ifdef _MBOX
  414. X#include "mbox.h"
  415. X#else
  416. X#define BS        8
  417. X#define CR        13
  418. X#define LF        10
  419. X#define CTRL_X        24
  420. X#define CTRL_D        4
  421. X#define BELL        7
  422. X#define ESC        27
  423. X#define DEL        127
  424. X#define GBL06_MSG    'J'     
  425. X#define GBL07_MSG    'N'    
  426. X
  427. Xint UMLAUT = 0;
  428. X
  429. X#ifdef _SYS7
  430. X#define ENTER        13
  431. X#else
  432. X#define ENTER         10
  433. X#endif
  434. X#endif
  435. X
  436. X#ifndef STRING
  437. X#define STRING 85
  438. X#endif
  439. X
  440. X/***************************************************************************/
  441. X/*      FUNKTION  getline()                           */
  442. X/*  BESCHREIBUNG  Eine Zeile (STRING) einlesen. Beendet wird mit ENTER,       */
  443. X/*          oder wenn die max. zulaessige Anzahl von Zeichen er-     */
  444. X/*          reicht ist.                                               */
  445. X/*     PARAMETER  siehe unten                                              */
  446. X/*     RUECKGABE  Eingelesene Zeile (STRING)                   */
  447. X/*  ---------------------------------------------------------------------  */
  448. X/*  len     -> Anzahl der max. einzulesenden Zeichen                */
  449. X/*                                       */
  450. X/*  mode    ->      >0 = 7BIT                           */
  451. X/*             0 = Kein Echo                       */
  452. X/*                1 = Mit Echo                           */
  453. X/*                2 = '*' als Echo                           */
  454. X/*             3 = ':' als drittes & sechstes Zeichen (Uhrzeit)      */
  455. X/*                 4 = '.' als drittes & sechstes Zeichen (Datum)        */
  456. X/*              5 = Ausschliesslich BUCHSTABEN               */
  457. X/*            10 = "bsc" vor der Eingabe "len"-mal ausgeben          */
  458. X/*           100 = nur Zahlen (und '.', ':')                         */
  459. X/*           1000 = String "deftext" + "bsc" ausgeben                 */
  460. X/*         10000 = bei "0-9" als erstes Zeichen -> sofort zurueck    */
  461. X/*                                           */
  462. X/*  bsc     -> Mit diesem Zeichen wird geloescht               */
  463. X/*                                           */
  464. X/*  deftext -> Text-Vorgabe                                                */
  465. X/*                                                               */
  466. X/***************************************************************************/
  467. X
  468. Xstatic int endless;
  469. X
  470. Xunsigned char *getline(len, mode, bsc, deftext)
  471. Xint len, mode;
  472. Xint bsc;
  473. Xunsigned char deftext[];
  474. X{
  475. X  static unsigned char gls[STRING];
  476. X  int c;
  477. X  int gli, gll;
  478. X  int delim = '\0';
  479. X  int matrix = 0;
  480. X  int echo = 1, numerics = 0, defmode = 0, letters = 0;
  481. X  int escape = 0;
  482. X  int lenmem = len;
  483. X  int lastwasblank = 0;
  484. X  int siebenbit = 0;
  485. X  
  486. X  if (mode < 0) {
  487. X    siebenbit++;
  488. X    mode *= -1;
  489. X  }
  490. X  if (mode > 10000) {
  491. X    escape++;
  492. X    mode -= 10000;
  493. X  }
  494. X  if (mode > 1000) {
  495. X    mode -= 1000;
  496. X    defmode++;
  497. X  }
  498. X  if (mode > 100) {
  499. X    mode -= 100;
  500. X    numerics++;
  501. X  }
  502. X  if (mode > 10) {
  503. X    mode -= 10;
  504. X    matrix++;
  505. X  }
  506. X  if (mode > 2) {
  507. X    switch(mode){
  508. X        case 3    : delim = ':';
  509. X              break;
  510. X        case 4  : delim = '.';        
  511. X              break;
  512. X         case 5  : letters++;
  513. X              break;
  514. X    }
  515. X    mode = 1;
  516. X  }
  517. X  echo = mode;
  518. X
  519. X  if (defmode != 0) {
  520. X    if((deftext[0] < 32) || (deftext[0] > 126)) deftext[0] = '\0';
  521. X    gll = length(deftext);
  522. X    lenmem = len - gll;
  523. X    if(deftext[0] != '\0'){
  524. X        sprintf(gls, "%s", deftext);
  525. X        printf("%s", deftext);
  526. X    }
  527. X    else gls[0] = '\0';
  528. X  }
  529. X  else {
  530. X    gll = 0;
  531. X    strcpy(gls, (unsigned char *) "OOPS");
  532. X  }
  533. X
  534. X  if (matrix != 0) {
  535. X    for (gli = 0; gli < lenmem; gli++) {
  536. X        if (((gli == 2) || (gli == 5)) && (delim != '\0') && (gli != len)) {
  537. X            printf("%c", delim);
  538. X        }
  539. X        else {
  540. X            printf("%c", bsc);
  541. X        }
  542. X    }
  543. X    for (gli = 0; gli < lenmem; gli++) printf("%c", BS);
  544. X  }
  545. X
  546. X  do {
  547. X
  548. X    if (delim != '\0') {
  549. X        if (((gll == 2) || (gll == 5)) && (gll < len)){
  550. X            c = delim;
  551. X        }
  552. X        else {
  553. X            c = getint();  
  554. X        }
  555. X    }
  556. X    else {
  557. X        c = getint();  
  558. X    }        
  559. X
  560. X    if(siebenbit != 0){
  561. X        if(c > 127) c = 0;
  562. X    }
  563. X
  564. X    if (c == ESC) {
  565. X        c = getint();  
  566. X        c = getint();  
  567. X        if ((c == 'A') || (c == 'B')) {
  568. X            if (c == 'A') endless++;
  569. X            if (c == 'B') endless--;
  570. X            if (endless < 1) endless = 9;
  571. X            if (endless > 9) endless = 1;
  572. X            sprintf(gls, "%d", endless);
  573. X            return (unsigned char *) gls;
  574. X        }
  575. X        if (c == 'D') c = BS;
  576. X        if (c == 'C') c = ENTER;
  577. X    }
  578. X    if ((c == CTRL_X) || (c == CTRL_D) || (c == DEL)) {
  579. X        return("<BREAK>");
  580. X    }
  581. X    if (c != ENTER) {
  582. X        if ((c == BS) && (gll > 0)) {
  583. X            if (((gll == 3) || (gll == 6)) && (delim != '\0')) {
  584. X                gll -= 2;
  585. X                printf("%c%c%c%c", BS, BS, bsc, BS);
  586. X            } else {
  587. X                gll--;
  588. X                printf("%c%c%c", BS, bsc, BS);
  589. X            }
  590. X        }
  591. X        if (numerics == 0) {
  592. X            if (c >= 32) {
  593. X                if(letters != 0){
  594. X                    if((c < 'A') && (c != ' ')) c = 0;
  595. X                    if(c > 'z') c = 0;
  596. X                    if((c > 'Z') && (c < 'a')) c = 0;
  597. X
  598. X                    if(c == ' '){
  599. X                        if(lastwasblank != 0) c = 0;
  600. X                        lastwasblank++;
  601. X                    }
  602. X                    else{
  603. X                        if(c != 0) lastwasblank = 0;
  604. X                    }                
  605. X
  606. X                    /*
  607. X                    if((c == 0) && (USER.bell == 1))
  608. X                        printf("%c", BELL);
  609. X                    */
  610. X                    if(c == 0)
  611. X                        printf("%c", BELL);
  612. X                }
  613. X                if(c != 0){
  614. X                    gls[gll] = c;
  615. X                    gll++;
  616. X                }
  617. X            }
  618. X            else {
  619. X                c = 0;
  620. X            }
  621. X        }
  622. X        else {
  623. X            if ((c == '.') || (c == ':') || ((c >= '0') && (c <= '9'))) {
  624. X                if (((delim != '\0') && ((c == '.') || (c == ':'))) &&
  625. X                    ((gll != 2) && (gll != 5))) {
  626. X                    printf("%c", BELL);
  627. X                    c = 0;
  628. X                }
  629. X                else {
  630. X                    gls[gll] = c;
  631. X                    gll++;
  632. X                    gls[gll] = '\0';
  633. X                }
  634. X            }
  635. X            else {
  636. X                if (c != BS) printf("%c", BELL);
  637. X                c = 0;
  638. X            }
  639. X        }
  640. X        if (c != 0) {
  641. X            if (echo == 1) printf("%c", c);
  642. X            if (echo == 2) printf("*");
  643. X        }
  644. X    }
  645. X    if (gll == 1) {
  646. X        if ((escape != 0) && ((c > 47) && (c < 58))) {
  647. X            gls[gll] = '\0';
  648. X            return (unsigned char *) gls;
  649. X        }
  650. X    }
  651. X
  652. X  } while ((c != ENTER) && (gll < len));
  653. X
  654. X  gls[gll] = '\0';
  655. X
  656. X  return (unsigned char *) gls;
  657. X}
  658. X
  659. X
  660. X
  661. X
  662. X
  663. X/***************************************************************************/
  664. X/*      FUNKTION  getint()                            */
  665. X/*  BESCHREIBUNG  Ein Zeichen wird mit Hilfe der "getch"-Funktion einge-   */
  666. X/*          lesen. Es wird gewartet bis ein Zeichen erfasst ist.     */
  667. X/*     PARAMETER  keine                                                    */
  668. X/*     RUECKGABE  Eingelesenes Zeichen (INT)                   */
  669. X/***************************************************************************/
  670. X
  671. X
  672. Xint getint()
  673. X{
  674. X  int c;
  675. X
  676. X
  677. X  if(UMLAUT != 0){
  678. X    c = UMLAUT;
  679. X    UMLAUT = 0;
  680. X    return (int) c;
  681. X  }
  682. X
  683. X  do{
  684. X    c = (int) getch();
  685. X
  686. X#ifndef _UMLAUT
  687. X
  688. X    if(c > 127){
  689. X
  690. X        UMLAUT = 'e';
  691. X
  692. X        switch(c){
  693. X            case 142 : c = 'A'; /* IBM 'Ae' */
  694. X                   break;
  695. X            case 153 : c = 'O'; /* IBM 'Oe' */
  696. X                   break;
  697. X            case 154 : c = 'U'; /* IBM 'Ue' */
  698. X                   break;
  699. X            case 132 : c = 'a'; /* IBM 'ae' */
  700. X                   break;
  701. X            case 148 : c = 'o'; /* IBM 'oe' */
  702. X                   break;
  703. X            case 129 : c = 'u'; /* IBM 'ue' */
  704. X                   break;
  705. X            case 225 : c = 's'; /* IBM 'ss' */
  706. X                   UMLAUT = 's';
  707. X                   break;
  708. X
  709. X            case 196 : c = 'A'; /* AMIGA 'Ae' */
  710. X                   break;
  711. X            case 214 : c = 'O'; /* AMIGA 'Oe' */
  712. X                   break;
  713. X            case 220 : c = 'U'; /* AMIGA 'Ue' */
  714. X                   break;
  715. X            case 228 : c = 'a'; /* AMIGA 'ae' */
  716. X                   break;
  717. X            case 246 : c = 'o'; /* AMIGA 'oe' */
  718. X                   break;
  719. X            case 252 : c = 'u'; /* AMIGA 'ue' */
  720. X                   break;
  721. X            case 223 : c = 's'; /* AMIGA 'ss' */
  722. X                   UMLAUT = 's';
  723. X                   break;
  724. X
  725. X#ifdef I_LIKE_CONFUSIONS
  726. X                case 128 : c = 'A'; /* APPLE 'Ae' */
  727. X                   break;
  728. X            case 133 : c = 'O'; /* APPLE 'Oe' */
  729. X                   break;
  730. X            case 134 : c = 'U'; /* APPLE 'Ue' */
  731. X                   break;
  732. X            case 138 : c = 'a'; /* APPLE 'ae' */
  733. X                   break;
  734. X            case 154 : c = 'o'; /* APPLE 'oe' */
  735. X                   break;
  736. X            case 159 : c = 'u'; /* APPLE 'ue' */
  737. X                   break;
  738. X            case 167 : c = 's'; /* APPLE 'ss' */
  739. X                   UMLAUT = 's';
  740. X                   break;
  741. X#endif /* _CONFUSION */
  742. X            default  : UMLAUT = 0;
  743. X        }        
  744. X        }
  745. X
  746. X  }while((c == 0) || (c > 127));
  747. X
  748. X#else /* _UMLAUT */
  749. X
  750. X  }while(c == 0);
  751. X
  752. X#endif /* _UMLAUT */
  753. X
  754. X
  755. X  return (int) c;
  756. X}
  757. X
  758. X
  759. X
  760. X
  761. X/***************************************************************************/
  762. X/*      FUNKTION  yesno()                           */
  763. X/*  BESCHREIBUNG  Die Zeichen "j", "J", "n" oder "N" werden ausschliess-   */
  764. X/*          lich eingelesen und zurueckgegeben.                       */
  765. X/*     PARAMETER  keine                                                       */
  766. X/*     RUECKGABE  Eines der Zeichen (siehe oben) (INT)               */
  767. X/***************************************************************************/
  768. X
  769. Xint yesno()
  770. X{
  771. X  int c;
  772. X
  773. X  do {
  774. X    c = getint();
  775. X    if (c >= 97) c -= 32;
  776. X    if ((c != GBL06_MSG) && (c != GBL07_MSG)) c = 0;
  777. X  } while (c == 0);
  778. X
  779. X  printf("%c", c);
  780. X
  781. X  return (int) c;
  782. X}
  783. X
  784. X
  785. END_OF_FILE
  786.   if test 8445 -ne `wc -c <'src/getline.c'`; then
  787.     echo shar: \"'src/getline.c'\" unpacked with wrong size!
  788.   fi
  789.   # end of 'src/getline.c'
  790. fi
  791. if test -f 'src/main.c' -a "${1}" != "-c" ; then 
  792.   echo shar: Will not clobber existing file \"'src/main.c'\"
  793. else
  794.   echo shar: Extracting \"'src/main.c'\" \(7181 characters\)
  795.   sed "s/^X//" >'src/main.c' <<'END_OF_FILE'
  796. X/***************************************************************************/
  797. X/*        PROGRAMM  ix/Mbox                           */
  798. X/*             DATEI  main.c                           */
  799. X/*        FUNKTIONEN  logout(), init(), fixoutput(), main()           */
  800. X/*             AUTOR  vs (Volker Schuermann/MINIX-Version)           */
  801. X/*  LETZTE AENDERUNG  13.06.1992                       */
  802. X/***************************************************************************/
  803. X   
  804. X#include <sys/types.h>
  805. X#include <unistd.h>
  806. X#include <stdio.h>
  807. X#include <time.h>
  808. X#include <fcntl.h>
  809. X
  810. X#include "mbox.h"
  811. X
  812. Xextern time_t time_start, time_now;
  813. X
  814. X
  815. X
  816. X/***************************************************************************/
  817. X/*      FUNKTION  logout()                           */
  818. X/*  BESCHREIBUNG  Entfernt den User aus "WHO" und reorganisiert seine      */
  819. X/*          Teilnehmerdaten.                                         */
  820. X/*     PARAMETER  keine                                                       */
  821. X/*     RUECKGABE  keine                               */
  822. X/***************************************************************************/
  823. X
  824. Xvoid logout()
  825. X{
  826. X  FILE *fp;
  827. X  FILE *ff;
  828. X  unsigned char s[STRING];
  829. X  unsigned char t[STRING];
  830. X  unsigned char u[STRING];
  831. X  unsigned char f[STRING];
  832. X  long ll;
  833. X  int a, b;
  834. X  int fd;
  835. X  struct tm *timeptr;
  836. X  struct userdaten DUMMY;
  837. X  int dummy = sizeof(DUMMY);
  838. X
  839. X  printf("\n");
  840. X
  841. X
  842. X  time(&time_now);
  843. X  USER.elapsed += (long) (time_now - time_start);
  844. X
  845. X  sprintf(f, "%s/who%d", TMP, getpid());
  846. X  maybe_locked(WHO, "r"); mblock(WHO);
  847. X  fp = fopen(WHO, "r");
  848. X  if (fp == NULL) {
  849. X    nerror("main.c", 34, "logout", "Datei-Lesefehler", WHO);
  850. X  }
  851. X  strcpy(t, (unsigned char *) ttyna()); t[9] = '\0';
  852. X
  853. X  ff = fopen(f, "w");
  854. X  if (ff == NULL) {
  855. X    nerror("main.c", 38, "logout", "Datei-Schreibfehler", f);
  856. X  }
  857. X  while (fgets(s, 80, fp) != NULL) {
  858. X    if(strcomp(t, s) != 0) fputs(s, ff);
  859. X  }
  860. X  fclose(ff);
  861. X  fclose(fp);
  862. X  sprintf(s, "cp %s %s", f, WHO);
  863. X  system(s);
  864. X  unlink(f);
  865. X  mbunlock(WHO);
  866. X
  867. X  strcpy(s, HOME); strcat(s, "/etc/");
  868. X  strcat(s, (unsigned char *) ttyna()); strcat(s, ".");
  869. X  unlink( s );
  870. X
  871. X  sprintf(USER.abused, "%ld", IDX_SIZE);
  872. X
  873. X  USER.seq--;        
  874. X  printf("\n");
  875. X  init_user( MAI01_MSG );
  876. X
  877. X#ifdef _NOINDEX
  878. X  sprintf(s, "%s/inhalt.%d", TMP, getpid());
  879. X  unlink(s);
  880. X#endif
  881. X
  882. X  control(MAI02_MSG, 3);
  883. X}
  884. X
  885. X
  886. X
  887. X/***************************************************************************/
  888. X/*      FUNKTION  init()                           */
  889. X/*  BESCHREIBUNG  Liest die Befehle aus "BEFEHLE", fuellt die Befehl-      */
  890. X/*          Stuktur und verteilt die Level-Vorgaben.                 */
  891. X/*     PARAMETER  keine                                                       */
  892. X/*     RUECKGABE  keine                               */
  893. X/***************************************************************************/
  894. X
  895. Xvoid init()
  896. X{
  897. X  FILE *fp;
  898. X  FILE *ff;
  899. X  unsigned char s[STRING];
  900. X  unsigned char t[STRING];
  901. X  unsigned char udcc[STRING];
  902. X  int udcl;
  903. X  unsigned char udcp[STRING];
  904. X  int b = 0;
  905. X  int ok = 0;
  906. X
  907. X  ff = fopen(UDCS, "r");
  908. X  if (ff == NULL) {
  909. X    nerror("main.c", 115, "init", "Datei-Lesefehler", "./etc/mbox.udc");
  910. X    exit(0);
  911. X  }  
  912. X  while((fgets(s, 80, ff) != NULL) && (s[0] == '/'));
  913. X  if(fgets(s, 80, ff) != NULL) ok = 1;
  914. X  sscanf(s, "%s %d %s %s", udcc, &udcl, udcp, t);
  915. X  if(udcc[0] > 96) udcc[0] -= 32;
  916. X  strcat(udcp, " "); strcat(udcp, t);
  917. X
  918. X  fp = fopen(BEFEHLE, "r");
  919. X  if (fp == NULL) {
  920. X    nerror("main.c", 68, "init", "Datei-Lesefehler", BEFEHLE);
  921. X  }
  922. X  while((fgets(s, 80, fp) != NULL) && (s[0] == '/'));
  923. X  
  924. X  fgets(s, 80, fp); /* 3 Zeilen nach dem Kommentar (exakt 3 Zeilen !!!) */
  925. X  fgets(s, 80, fp);
  926. X
  927. X  while (fscanf(fp, "%d %d %d %d %s", &BEF[b].id, &BEF[b].in, &BEF[b].ex, &BEF[b].prototyp, BEF[b].befehl) > 0) {
  928. X
  929. X    if (BEF[b].id == 160) MAILOUT_LEV = BEF[b].ex;
  930. X    if (BEF[b].id == 125) ADMIN_LEV = BEF[b].ex;
  931. X    if (BEF[b].id == 230) WRITE_EX_LEV = BEF[b].ex;
  932. X    if (BEF[b].id == 230) WRITE_IN_LEV = BEF[b].in;
  933. X    if (BEF[b].id == 998) WRITE_INTERNAT = BEF[b].in;
  934. X    if (BEF[b].id == 195) PD_D_LEV = BEF[b].in;
  935. X    if (BEF[b].id == 195) PD_U_LEV = BEF[b].ex;
  936. X    if (BEF[b].id == 240) EXE_LEV = BEF[b].ex;
  937. X    if (BEF[b].id == 320) GUEST_LEV = BEF[b].in;
  938. X    if (BEF[b].id == 130) BB1 = b;
  939. X    if (BEF[b].id == 150) BB2 = b;
  940. X    if (BEF[b].id == 160) BB3 = b;
  941. X    if (BEF[b].id == 170) BB4 = b;
  942. X    if (BEF[b].id == 210) BB5 = b;
  943. X    if (BEF[b].id == 180) BB6 = b;
  944. X    if (BEF[b].id == 190) BB7 = b;
  945. X    if (BEF[b].id == 200) BB8 = b;
  946. X    if (BEF[b].id == 270) BB9 = b;
  947. X
  948. X    if((ok == 1) && (BEF[b].prototyp == 1) && (udcc[0] < BEF[b].befehl[0])){
  949. X        BEF[(b+1)].id = BEF[b].id;
  950. X        BEF[(b+1)].in = BEF[b].in;
  951. X        BEF[(b+1)].ex = BEF[b].ex;
  952. X        BEF[(b+1)].prototyp = BEF[b].prototyp;
  953. X        strcpy(BEF[(b+1)].befehl, (unsigned char *) BEF[b].befehl);
  954. X        BEF[b].id = 1000;
  955. X        BEF[b].in = udcl;
  956. X        BEF[b].ex = udcl;
  957. X        BEF[b].prototyp = 1;
  958. X        strcpy(BEF[b].befehl, (unsigned char *) udcc);
  959. X        strcpy(BEF[b].pfad, (unsigned char *) udcp);
  960. X        b++;
  961. X        if(fgets(s, 80, ff) == NULL) ok = 0;
  962. X        sscanf(s, "%s %d %s %s", udcc, &udcl, udcp, t);
  963. X        if(udcc[0] > 96) udcc[0] -= 32;
  964. X        strcat(udcp, " "); strcat(udcp, t);
  965. X    }
  966. X
  967. X    b++;
  968. X    if (b >= MAX_BEF) {
  969. X        nerror("main.c", 85, "init", "MAX_BEF ueberschritten !!", "???");
  970. X    }
  971. X  }
  972. X  BEF[b].id = -1;
  973. X
  974. X  fclose(fp);
  975. X  fclose(ff);
  976. X}
  977. X
  978. X
  979. X
  980. X/***************************************************************************/
  981. X/*      FUNKTION  fixoutput()                           */
  982. X/*  BESCHREIBUNG  Legt fest an welches Geraet, oder in welche Datei, die   */
  983. X/*          Logbuch-Eintraege geschickt werden.               */
  984. X/*     PARAMETER  keine                                                       */
  985. X/*     RUECKGABE  keine                               */
  986. X/***************************************************************************/
  987. X
  988. Xvoid fixoutput()
  989. X{
  990. X  unsigned char s[STRING];
  991. X
  992. X  FILE *fp;
  993. X
  994. X  strcpy(s, CONSOLE); CONSOLE_REDIRECT[0] = '\0';
  995. X
  996. X  if(strcomp("REDIRECT", CONSOLE) == 0){
  997. X    fp = fopen( CDIRECTFL, "r" );
  998. X    if(fp != NULL){
  999. X        fgets(s, STRING, fp);
  1000. X        fclose(fp);
  1001. X        
  1002. X    }
  1003. X   }
  1004. X   strcat(CONSOLE_REDIRECT, (unsigned char *) stripped(s));
  1005. X}
  1006. X
  1007. X
  1008. X
  1009. X
  1010. X/***************************************************************************/
  1011. X/*      FUNKTION  main()                           */
  1012. X/*  BESCHREIBUNG  Hauptfunktion. Rettet UID/GID, initialisiert, startet    */
  1013. X/*          die MBox-Funktionen und terminiert.                      */
  1014. X/*     PARAMETER  keine                                                       */
  1015. X/*     RUECKGABE  "Exit-Status"                           */
  1016. X/***************************************************************************/
  1017. X
  1018. Xint main(argc, argv)
  1019. Xint argc;
  1020. Xunsigned char *argv[];
  1021. X{
  1022. X  FILE *fp;
  1023. X  int i;
  1024. X
  1025. X#if defined(_ESTDIO) || !defined(_SYS7)
  1026. X  setbuf(stdout, NULL);
  1027. X#endif
  1028. X
  1029. X
  1030. X  chdir(HOME);
  1031. X
  1032. X  OLDUID = getuid();
  1033. X  OLDGID = getgid();
  1034. X
  1035. X  sprintf(MYNAME, "%s", "J. Random Looser");
  1036. X
  1037. X  fp = fopen( UDBASE, "r" );
  1038. X  if(fp == NULL){
  1039. X    strcpy(TERMINAL, "ansi");
  1040. X    ansi("INIT");
  1041. X
  1042. X    headline( MAI03_MSG );
  1043. X    ansi("md");
  1044. X    printf("\n%s", MAI04_MSG);
  1045. X    printf("\n%s", MAI05_MSG);
  1046. X    printf("\n%s", MAI06_MSG);
  1047. X    printf("\n");
  1048. X    printf("\n%s", MAI07_MSG);
  1049. X    printf("\n%s", MAI08_MSG);
  1050. X    printf("\n%s\n\n", MAI09_MSG);
  1051. X    ansi("me");
  1052. X
  1053. X    postfach( "#1" );
  1054. X    postfach( "#2" );
  1055. X
  1056. X    ansi("md");
  1057. X    printf("\n%s\n\n", MAI10_MSG);
  1058. X    ansi("me");
  1059. X    return 0;
  1060. X  }
  1061. X  fclose(fp);
  1062. X
  1063. X  fixoutput();
  1064. X  init();  
  1065. X  intro();
  1066. X  get_makros();
  1067. X  ctrlx();
  1068. X
  1069. X  loop();
  1070. X
  1071. X  logout();
  1072. X  noctrlx();
  1073. X  ansi("md");
  1074. X  printf("\n\n%s\n\n", MAI11_MSG);
  1075. X  ansi("me");
  1076. X
  1077. X  return 0;
  1078. X}
  1079. END_OF_FILE
  1080.   if test 7181 -ne `wc -c <'src/main.c'`; then
  1081.     echo shar: \"'src/main.c'\" unpacked with wrong size!
  1082.   fi
  1083.   # end of 'src/main.c'
  1084. fi
  1085. if test -f 'wendy/misc.c' -a "${1}" != "-c" ; then 
  1086.   echo shar: Will not clobber existing file \"'wendy/misc.c'\"
  1087. else
  1088.   echo shar: Extracting \"'wendy/misc.c'\" \(8395 characters\)
  1089.   sed "s/^X//" >'wendy/misc.c' <<'END_OF_FILE'
  1090. X#include "wendy.h"
  1091. X
  1092. X
  1093. Xunsigned char *right_stripped();
  1094. X
  1095. X
  1096. X
  1097. X/*    Eingabe zeilenweise in Blocksatz umformen     */
  1098. X
  1099. Xblockset()
  1100. X{
  1101. X  FILE *fp;
  1102. X
  1103. X  unsigned char s[STRING];
  1104. X  unsigned char a[STRING];
  1105. X  unsigned char q[LONGSTRING];
  1106. X
  1107. X  int i, j = 0, l;
  1108. X  int WIDE = MAXX;
  1109. X  int whitespace = 1;
  1110. X
  1111. X  
  1112. X  strcpy(s, (unsigned char *) SCREEN[y]); l = strlen((unsigned char *) right_stripped(s));
  1113. X
  1114. X  if(l < ((WIDE / 10) * 8)) return;
  1115. X
  1116. X  while(l < WIDE){
  1117. X    i = 0; whitespace = 1;
  1118. X
  1119. X    while((l < WIDE) && (i < WIDE)){
  1120. X        if(SCREEN[y][i] != BLANK) whitespace = 0;
  1121. X        if(whitespace == 1){
  1122. X            i++;
  1123. X            continue;
  1124. X        }
  1125. X        strcpy(s, (unsigned char *) SCREEN[y]);
  1126. X        strcpy(a, (unsigned char *) ATTRIB[y]);
  1127. X
  1128. X        if(isin(".!?,;:", SCREEN[y][i]) != 0){
  1129. X            if((WIDE - l - 3) > 0){
  1130. X                i++;
  1131. X                SCREEN[y][i] = '\0';
  1132. X                strcat(SCREEN[y], (unsigned char *) "   ");
  1133. X                strcat(SCREEN[y], (unsigned char *) strcopy(s, i, l));
  1134. X                ATTRIB[y][i]   = ATTRIB[y][i-1];
  1135. X                ATTRIB[y][i+1] = ATTRIB[y][i-1];
  1136. X                ATTRIB[y][i+2] = ATTRIB[y][i-1];
  1137. X                ATTRIB[y][i+3] = '\0';
  1138. X                strcat(ATTRIB[y], (unsigned char *) strcopy(a, i, l));                
  1139. X                i += 2;
  1140. X            }
  1141. X        }
  1142. X        if(SCREEN[y][i] == BLANK){
  1143. X            i++;
  1144. X            SCREEN[y][i] = '\0';
  1145. X            strcat(SCREEN[y], (unsigned char *) " ");
  1146. X            strcat(SCREEN[y], (unsigned char *) strcopy(s, i, l));
  1147. X            ATTRIB[y][i] = ATTRIB[y][i-1];
  1148. X            ATTRIB[y][i+1] = '\0';
  1149. X            strcat(ATTRIB[y], (unsigned char *) strcopy(a, i, l));                
  1150. X        }
  1151. X        i++;
  1152. X        strcpy(q, (unsigned char *) SCREEN[y]);
  1153. X        l = strlen((unsigned char *) right_stripped(q));
  1154. X    }
  1155. X  }
  1156. X}
  1157. X
  1158. X
  1159. X
  1160. X/*    Datei einfuegen        */  
  1161. X
  1162. Xinsert_file( t )
  1163. Xunsigned char t[];
  1164. X{
  1165. X  unsigned char s[STRING];
  1166. X  unsigned char path[STRING];
  1167. X  unsigned char tmp[STRING];
  1168. X  int i = 0, ynow;
  1169. X
  1170. X  FILE *fp, *ff;  
  1171. X
  1172. X  while((t[i] != ' ') && (t[i] != '\0')) i++;
  1173. X  strcpy(path, (unsigned char *) strcopy(t, (i+1), strlen(t)));
  1174. X
  1175. X  fp = fopen( path, "r" );
  1176. X  if(fp == 0){
  1177. X#ifdef _LOCAL
  1178. X    sprintf(t, "Datei <%s> nicht gefunden.", path);
  1179. X#else
  1180. X    sprintf(t, "File <%s> not found.", path);
  1181. X#endif
  1182. X        return;
  1183. X  }
  1184. X
  1185. X  sprintf(tmp, "/tmp/wendy.%d", getpid());
  1186. X
  1187. X  ynow = ypos + y;
  1188. X
  1189. X  restore_screen( ypos );
  1190. X
  1191. X  ff = fopen( tmp, "w" );
  1192. X  for(i = ynow; i <= lastline; i++){
  1193. X    fprintf(ff, "%s\n", TEXT[i]);
  1194. X  }
  1195. X  fclose(ff);
  1196. X
  1197. X  lastline = ynow;
  1198. X
  1199. X  while(fgets(TEXT[lastline], LINELENGTH, fp) != 0) lastline++;
  1200. X  fclose(fp);   
  1201. X
  1202. X  fp = fopen( tmp, "r" );
  1203. X  while(fgets(TEXT[lastline], LINELENGTH, fp) != 0) lastline++;
  1204. X  fclose(fp);
  1205. X
  1206. X  unlink( tmp );
  1207. X  prep_screen( ypos );
  1208. X  show_screen( START );
  1209. X}
  1210. X
  1211. X
  1212. X
  1213. X/*    ASCII-Schrott (incl. BLANK ;-) auf der rechten Seite abschneiden    */
  1214. X
  1215. Xunsigned char *right_stripped( s )
  1216. Xunsigned char s[];
  1217. X{
  1218. X  int i;
  1219. X  
  1220. X  i = strlen( (unsigned char *) s);
  1221. X
  1222. X  while(((s[i] < 33) || (s[i] == BLANK)) && (i > -1)) i--;
  1223. X  i++;
  1224. X  s[i] = '\0';
  1225. X
  1226. X  return (unsigned char *) s;
  1227. X}
  1228. X
  1229. X
  1230. X
  1231. X/*    Hilfe!        */
  1232. X
  1233. Xhelp()
  1234. X{
  1235. X  FILE *fp;
  1236. X  unsigned char s[STRING];
  1237. X  int c, i;
  1238. X
  1239. X  restore_screen( ypos );
  1240. X
  1241. X  ansi( "cl" );
  1242. X  c = MAXY;
  1243. X  MAXY = 0;
  1244. X  show_status( VERSION ); /* !! */
  1245. X  MAXY = c;
  1246. X
  1247. X  i = START;
  1248. X
  1249. X  fp = fopen( HILFE, "r" );
  1250. X  if(fp == NULL){
  1251. X#ifdef _LOCAL
  1252. X    printf("\n\nDatei <%s> nicht gefunden!\n\n", HILFE);
  1253. X#else
  1254. X    printf("\n\nDatei <%s> not found!\n\n", HILFE);
  1255. X#endif
  1256. X  }
  1257. X  else{
  1258. X    while(fgets(s, STRING, fp) != 0){
  1259. X        ansi2( "cm", 1, i );
  1260. X        printf("%s\n", right_stripped(s));    
  1261. X        i++;
  1262. X    }
  1263. X    fclose(fp);
  1264. X  }
  1265. X
  1266. X  c = getch();
  1267. X
  1268. X  ansi( "cl" );
  1269. X
  1270. X  show_status( version );
  1271. X  prep_screen( ypos );
  1272. X  show_screen( START );
  1273. X}
  1274. X
  1275. X
  1276. X
  1277. X
  1278. X
  1279. X/*    Zeichen einfuegen    */
  1280. X
  1281. Xinsert( c )
  1282. Xunsigned char c;
  1283. X{
  1284. X  unsigned char s[STRING];
  1285. X  unsigned char q[LONGSTRING];
  1286. X
  1287. X  strcpy(q, (unsigned char *) SCREEN[y]);
  1288. X
  1289. X  if(strlen((unsigned char *) right_stripped(q)) >= MAXX){
  1290. X    printf("%c", 7);
  1291. X    if(x >= MAXX) x = MAXX;
  1292. X    ansi2( "cm", x, y );
  1293. X    return;
  1294. X  }
  1295. X
  1296. X  if(c == ' ') c = BLANK;
  1297. X
  1298. X  strcpy(s, (unsigned char *) SCREEN[y]);
  1299. X  s[x] = '\0'; 
  1300. X  s[(x-1)] = c; 
  1301. X  strcpy(q, (unsigned char *) SCREEN[y]);
  1302. X  strcat(s, (unsigned char *) right_stripped(strcopy(q, (x-1), strlen(q))));
  1303. X  strcat(s, " ");
  1304. X  s[MAXX] = '\0';    
  1305. X  strcpy(SCREEN[y], (unsigned char *) s);
  1306. X
  1307. X  strcpy(s, (unsigned char *) ATTRIB[y]);
  1308. X  s[x] = '\0';
  1309. X  s[(x-1)] = RTF_attrib;
  1310. X  strcpy(q, (unsigned char *) ATTRIB[y]);
  1311. X  strcat(s, (unsigned char *) right_stripped(strcopy(q, (x-1), strlen(q))));
  1312. X  strcat(s, "0");
  1313. X  s[MAXX] = '\0';    
  1314. X  strcpy(ATTRIB[y], (unsigned char *) s);
  1315. X
  1316. X  if(ansi( "ic") != 0){
  1317. X    show_line( SCREEN[y], ATTRIB[y], x );
  1318. X  }
  1319. X  else{
  1320. X    if(c == BLANK)
  1321. X        printf(" ");
  1322. X    else
  1323. X        printf("%c", c);        
  1324. X  }
  1325. X  x++;
  1326. X  ansi2( "cm", x, y );
  1327. X}
  1328. X
  1329. X
  1330. X
  1331. X/*    ENTER    */
  1332. X
  1333. Xenter()
  1334. X{
  1335. X  int i, j;
  1336. X  int memo;
  1337. X  int ymem = y;
  1338. X  
  1339. X      
  1340. X  if(FORMATTER == 'b'){
  1341. X    blockset();
  1342. X    ansi( "me" );
  1343. X    show_line( SCREEN[y], ATTRIB[y], 1 );  
  1344. X    activate( RTF_attrib );
  1345. X  }
  1346. X  if(INS_mode != 0){
  1347. X    memo = SCREEN[y][x]; 
  1348. X    SCREEN[y][x] = (126);
  1349. X    restore_screen( ypos );
  1350. X    j = ypos + y - 2;
  1351. X        for(i = lastline; i > j; i--){
  1352. X        strcpy(TEXT[i+1], (unsigned char *) TEXT[i]);
  1353. X        FLAG[i+1] = FLAG[i];
  1354. X    } 
  1355. X    lastline++;
  1356. X
  1357. X    i = 0; j++;
  1358. X    while((TEXT[j][i] != (126)) && (TEXT[j][i] != '\0')) i++;
  1359. X    TEXT[j][i] = memo;
  1360. X
  1361. X    strcpy(TEXT[(j+1)], (unsigned char *) strcopy(TEXT[j], (i-1), strlen(TEXT[j])));
  1362. X    TEXT[j][(i-1)] = '\0'; strcat(TEXT[j], (unsigned char *) "<nl>\n");
  1363. X
  1364. X    prep_screen( ypos );
  1365. X    ansi2( "cm", 1, MAXY );
  1366. X    ansi( "ce" );
  1367. X    ansi2( "cm", x, y );
  1368. X
  1369. X    if(ansi( "al" ) != 0){
  1370. X        show_screen( (y-1) );    
  1371. X    }
  1372. X    else{
  1373. X        show_line( SCREEN[y], ATTRIB[y], 1);
  1374. X        y++;
  1375. X        show_line( SCREEN[y], ATTRIB[y], 1);
  1376. X        y--;
  1377. X    }
  1378. X  }
  1379. X  if(y < MAXY){
  1380. X    lastline++;
  1381. X    ansi( "do" );
  1382. X    y++; 
  1383. X  }
  1384. X  else{
  1385. X    ctrlj();
  1386. X  }
  1387. X  x = 1;
  1388. X  ansi2( "cm", x, y );
  1389. X}
  1390. X
  1391. X
  1392. X
  1393. X/*    VI Kommando-Modus (SUBSET!)    */
  1394. X
  1395. Xint vi( f )
  1396. Xunsigned char f[];
  1397. X{
  1398. X  unsigned char s[STRING];
  1399. X  int mode = 0;
  1400. X  int newp = 0;
  1401. X
  1402. X  show_status( ":" );
  1403. X  ansi( "mr" );
  1404. X  strcpy(s, (unsigned char *) getline( 70, 1, 32, "" ));
  1405. X
  1406. X
  1407. X  newp = atoi(s);
  1408. X  if(newp > 0){
  1409. X    restore_screen( ypos );    
  1410. X
  1411. X    if(newp > (lastline - MAXY))
  1412. X        ypos = (lastline - MAXY);
  1413. X    else
  1414. X        ypos = newp;
  1415. X
  1416. X    y = START;
  1417. X
  1418. X    prep_screen( ypos );
  1419. X    show_screen( START );     
  1420. X  }
  1421. X
  1422. X  if((strcomp(s, "w")    == 0) || (strcomp(s, "w!") == 0)) ctrlw( f );
  1423. X  if(strcomp("set ", s)  == 0) ctrls();
  1424. X  if((strcomp(s, "q")    == 0) || (strcomp(s, "q!") == 0)){
  1425. X    ctrlx( f );
  1426. X    mode = CTRL_X;
  1427. X  }
  1428. X  if(strcomp(s, "i")    == 0) ctrlv();
  1429. X  if(strcomp("r ", s)    == 0) insert_file( s );
  1430. X
  1431. X  activate( RTF_attrib );
  1432. X  ansi2( "cm", x, y );
  1433. X
  1434. X  return mode;
  1435. X}
  1436. X
  1437. X
  1438. X
  1439. X/*    PGUP    */
  1440. X
  1441. Xpgup()
  1442. X{
  1443. X  int oldypos = ypos;
  1444. X  
  1445. X
  1446. X  if((ypos - (MAXY -1)) > 1) 
  1447. X    ypos -= (MAXY -1);
  1448. X  else
  1449. X    ypos = 1;
  1450. X
  1451. X  if(ypos == oldypos) return;
  1452. X
  1453. X  restore_screen( oldypos );
  1454. X  prep_screen( ypos );
  1455. X  show_screen( START );
  1456. X}
  1457. X
  1458. X
  1459. X
  1460. X/*    PGDN    */
  1461. X
  1462. Xpgdn()
  1463. X{
  1464. X  int oldypos = ypos;
  1465. X
  1466. X  if((ypos + (MAXY -1)) < (lastline - (MAXY -1))) 
  1467. X    ypos += (MAXY -1);
  1468. X  else
  1469. X    ypos = lastline - MAXY;
  1470. X  if(ypos < 1) ypos = 1;
  1471. X
  1472. X  if(ypos == oldypos) return;
  1473. X
  1474. X  restore_screen( oldypos );
  1475. X  prep_screen( ypos );
  1476. X  show_screen( START );
  1477. X}
  1478. X
  1479. X
  1480. X
  1481. X
  1482. X/*    Eingabe direkt zentriert ausgeben     */
  1483. X
  1484. Xcenter()
  1485. X{
  1486. X  int i, j = strlen((unsigned char *) stripped(SCREEN[y]));
  1487. X
  1488. X  unsigned char s[LONGSTRING];
  1489. X  unsigned char t[STRING];
  1490. X
  1491. X  i = (MAXX - j) / 2;
  1492. X  strcpy(s, (unsigned char *) "                                                    ");
  1493. X  s[i] = '\0'; strcat(s, (unsigned char *) stripped(SCREEN[y]));
  1494. X  strcat(s, (unsigned char *) "                                                    ");
  1495. X  s[MAXX] = '\0';
  1496. X  strcpy(SCREEN[y], (unsigned char *) s);
  1497. X  strcpy(ATTRIB[y], (unsigned char *) "00000000000000000000000000000000000000000000000000000000000000000000000000000000");
  1498. X  show_line( SCREEN[y], ATTRIB[y], 1 );
  1499. X  strcpy(s, (unsigned char *) SCREEN[y]);
  1500. X  x = strlen( (unsigned char *) right_stripped(s)) + 1;
  1501. X  FLAG[(ypos + y - 1)] |= is_centered;
  1502. X  ansi2( "cm", x, y );
  1503. X}
  1504. X
  1505. X
  1506. X/*    Cursor zum Zeilenende     */
  1507. X
  1508. Xlines_end()
  1509. X{
  1510. X  unsigned char s[STRING];
  1511. X
  1512. X  strcpy(s, (unsigned char *) SCREEN[y]);
  1513. X  x = strlen((unsigned char *) right_stripped(s)) + 1;
  1514. X  if(x > MAXX) x = MAXX;
  1515. X  ansi2( "cm", x, y );
  1516. X}
  1517. X
  1518. X
  1519. X
  1520. X/*    Wordwrap: Beim Schreiben ueber das Zeilenende hinaus     */
  1521. X
  1522. Xint wordwrap()
  1523. X{
  1524. X  unsigned char s[STRING];
  1525. X  int i = MAXX -1, j = 0;
  1526. X  int a = y;
  1527. X  int b = y + 1;
  1528. X
  1529. X  while((i > 1) && (j == 0)){
  1530. X     if((SCREEN[a][i] == BLANK) || (SCREEN[a][i] < 33)) j = i;
  1531. X    i--;
  1532. X  }
  1533. X
  1534. X  if(j == 0) return 1;
  1535. X
  1536. X  j++; x = 0;
  1537. X
  1538. X  for(i = j; i <= MAXX; i++){
  1539. X    SCREEN[b][x] = SCREEN[a][i];
  1540. X    SCREEN[a][i] = BLANK;
  1541. X
  1542. X    ATTRIB[b][x] = ATTRIB[a][i];
  1543. X    ATTRIB[a][i] = '0';
  1544. X
  1545. X    x++; 
  1546. X  } 
  1547. X  show_line( SCREEN[a], ATTRIB[a], 1 );
  1548. X  y++;
  1549. X  show_line( SCREEN[b], ATTRIB[b], 1 );  
  1550. X  y = a;
  1551. X
  1552. X  return x;
  1553. X}
  1554. END_OF_FILE
  1555.   if test 8395 -ne `wc -c <'wendy/misc.c'`; then
  1556.     echo shar: \"'wendy/misc.c'\" unpacked with wrong size!
  1557.   fi
  1558.   # end of 'wendy/misc.c'
  1559. fi
  1560. if test -f 'wendy/wendy.c' -a "${1}" != "-c" ; then 
  1561.   echo shar: Will not clobber existing file \"'wendy/wendy.c'\"
  1562. else
  1563.   echo shar: Extracting \"'wendy/wendy.c'\" \(8407 characters\)
  1564.   sed "s/^X//" >'wendy/wendy.c' <<'END_OF_FILE'
  1565. X#include "wendy.h"
  1566. X
  1567. X
  1568. X/*      Zeichen einlesen und bearbeiten         */
  1569. Xloop( f )
  1570. Xunsigned char f[];
  1571. X{
  1572. X  unsigned char s[STRING];
  1573. X  int c;
  1574. X  int oldy = -1;
  1575. X  ansi2( "cm", x, y );
  1576. X  do{
  1577. X    c = getch();
  1578. X    if(c == ESC){
  1579. X        c = getch();
  1580. X        if(c == ':'){
  1581. X                c = vi( f );
  1582. X                goto ENDLOOP;
  1583. X        }
  1584. X        else c *= 100;
  1585. X        c = c + getch();
  1586. X    }
  1587. X    /*
  1588. X    ansi2( "cm", 75, 1 );
  1589. X    ansi( "mr" );
  1590. X    printf("<%d> ", c);
  1591. X    ansi2( "cm", x, y );
  1592. X    activate( RTF_attrib );
  1593. X    */ 
  1594. X    switch(c){
  1595. X        case ENTER      :       enter();
  1596. X                                break;
  1597. X        case CTRL_K     :
  1598. X        case UP         :       ctrlk();
  1599. X                                break;
  1600. X        case CTRL_J     :
  1601. X        case DOWN       :       ctrlj();
  1602. X                                break;
  1603. X        case LEFT       :       if(x > 1){
  1604. X                                        ansi( "kl" );
  1605. X                                        x--;
  1606. X                                }
  1607. X                else{
  1608. X                    ctrlk();
  1609. X                    lines_end();
  1610. X                }
  1611. X                                break;
  1612. X        case RIGHT      :       if(x < MAXX){
  1613. X                                        ansi( "kr" );
  1614. X                                        x++;
  1615. X                                }
  1616. X                else{
  1617. X                    ctrlj();
  1618. X                    x = 1;
  1619. X                    ansi2( "cm", x, y );
  1620. X                }
  1621. X                                break;
  1622. X        case CTRL_B     :
  1623. X        case PGUP       :       pgup();
  1624. X                                break;
  1625. X        case CTRL_F     :
  1626. X        case PGDN       :       pgdn();
  1627. X                                break;
  1628. X        case CTRL_A     :
  1629. X        case HOME       :       x = 1;
  1630. X                ansi2( "cm", x, y );
  1631. X                                break;
  1632. X    case CTRL_E    :
  1633. X    case TLX_END    :
  1634. X        case CTRL_Z     :
  1635. X        case END        :       lines_end();
  1636. X                                break;
  1637. X        case BS         :       ctrlh();
  1638. X                                CHANGED++;
  1639. X                                break;
  1640. X    case TLX_DEL    :
  1641. X        case DEL        :       x++;
  1642. X                                CHANGED++;
  1643. X                                ctrlh();
  1644. X                                break;
  1645. X    case TAB    :     x = (int)((x+8)/8*8) + 1;
  1646. X                if(x > MAXX) x = MAXX; 
  1647. X                ansi2( "cm", x, y ); 
  1648. X                break;
  1649. X        case CTRL_O     :       help();
  1650. X                                break;
  1651. X        case CTRL_P     :       if(RULER == 0){
  1652. X                    strcpy(version, (unsigned char *) RULERLINE);
  1653. X                    RULER++;
  1654. X                    xruler = -1;
  1655. X                }
  1656. X                else{
  1657. X                    RULER = 0;
  1658. X                    strcpy(version, (unsigned char *) VERSION);
  1659. X                }
  1660. X                show_status( version );
  1661. X                STATUSM = 0;
  1662. X                ansi2( "cm", x, y );
  1663. X                break;
  1664. X        case CTRL_L     :       ansi( "me" );
  1665. X                ansi2( "cm", 1, y );
  1666. X                                show_line( SCREEN[y], ATTRIB[y], 1 );
  1667. X                activate( RTF_attrib );
  1668. X                ansi2( "cm", x, y );
  1669. X                                break;
  1670. X        case CTRL_R     :       show_status( version );
  1671. X                                show_screen( START );
  1672. X                                break;
  1673. X    case CTRL_X    :    ctrlx( f );
  1674. X                break;
  1675. X    case CTRL_W    :    ctrlw( f );
  1676. X                break;
  1677. X    case CTRL_N    :    ctrln();
  1678. X                break;
  1679. X    case CTRL_U    :    ctrlu();
  1680. X                break;
  1681. X    case CTRL_T    :    ctrlt();
  1682. X                break;
  1683. X    case CTRL_S    :    ctrls();
  1684. X                break;
  1685. X    case CTRL_Y    :    ctrly();
  1686. X                break;
  1687. X    case CTRL_Q    :    block_set();
  1688. X                break;
  1689. X    case TLX_INS    :    
  1690. X    case INS    :
  1691. X    case CTRL_V    :    ctrlv();
  1692. X                break;
  1693. X    case NUM5    :
  1694. X    case CTRL_G    :    ctrlg( f );
  1695. X                break;
  1696. X    default        :       if(c > 9100){
  1697. X#ifdef _LOCAL
  1698. X                    show_status( " WENDY: Unbekannte Taste " );
  1699. X#else
  1700. X                    show_status( " WENDY: Unknown key " );    
  1701. X#endif
  1702. X                    ansi( "mr" );
  1703. X                    printf("<%d>. ", c);
  1704. X                    ansi( "me" );
  1705. X                    ansi2( "cm", x, y );
  1706. X                }
  1707. X                if((c > 31) && (c < 9100)){
  1708. X                    CHANGED++;
  1709. X                    if(INS_mode == 0){
  1710. X                        printf("%c", c);    
  1711. X                        if(c == ' ') c = BLANK;    
  1712. X                        SCREEN[y][(x-1)] = c;
  1713. X                        ATTRIB[y][(x-1)] = RTF_attrib;
  1714. X                        x++;
  1715. X                        if(x > MAXX){
  1716. X                            if(FORMATTER != 'b')
  1717. X                                x = wordwrap();
  1718. X                            if((y < MAXY) && (y < lastline))
  1719. X                                y++;
  1720. X                            else
  1721. X                                ctrlj();
  1722. X                            ansi2( "cm", x, y );
  1723. X                        }
  1724. X                    }
  1725. X                    else{
  1726. X                        insert( c );
  1727. X                    }
  1728. X                    if(FORMATTER == 'c'){
  1729. X                        center();
  1730. X                    }
  1731. X                    if((ypos + y) > lastline)
  1732. X                    lastline = ypos + y;
  1733. X                }
  1734. X    }
  1735. X
  1736. X
  1737. X
  1738. X
  1739. X    ENDLOOP:
  1740. X
  1741. X    if(oldy != y){
  1742. X    if((FLAG[(ypos + y - 1)] & is_richtext) == is_richtext){
  1743. X#ifdef _LOCAL
  1744. X        show_status( "Der folgende Text ist klassifiziert als 'text/richtext'." );
  1745. X#else
  1746. X        show_status( "The following text is classified as 'text/richtext'.");
  1747. X#endif
  1748. X    }
  1749. X    if((FLAG[(ypos + y - 1)] & is_plain) == is_plain){
  1750. X#ifdef _LOCAL
  1751. X        show_status( "Der folgende Text ist klassifiziert als 'text/plain'." );
  1752. X#else
  1753. X        show_status( "The following text is classified as 'text/plain'.");
  1754. X#endif
  1755. X    }
  1756. X    ansi2( "cm", x, y );
  1757. X        /*
  1758. X    if(CHANGED != 0){
  1759. X        fprintf(ROLLBACK, "%05.5d %s\n", oldy, (unsigned char *) make_rtf( SCREEN[oldy], ATTRIB[oldy] ));
  1760. X    }
  1761. X    */
  1762. X    }
  1763. X    oldy = y;
  1764. X
  1765. X    if(RULER){
  1766. X    if(x != xruler){
  1767. X        if(STATUSM != 0) show_status( version );
  1768. X        if(xruler != -1){
  1769. X            ansi( "mr" );
  1770. X            ansi2( "cm", xruler, 1 );
  1771. X            printf("%c", version[(xruler - 1)]);
  1772. X        }
  1773. X        ansi( "me" );
  1774. X        xruler = x;
  1775. X        ansi2( "cm", xruler, 1 );
  1776. X        printf("%c", version[(xruler - 1)]);
  1777. X        ansi2( "cm", x, y );
  1778. X        STATUSM = 0;
  1779. X        activate( RTF_attrib );
  1780. X    }
  1781. X    }
  1782. X
  1783. X  }while(c != CTRL_X);
  1784. X}
  1785. X
  1786. X
  1787. X
  1788. X/*    MAIN    */
  1789. X
  1790. Xmain(argc, argv)
  1791. Xint argc;
  1792. Xunsigned char *argv[];
  1793. X{
  1794. X  FILE *fp;
  1795. X
  1796. X  unsigned char s[LONGSTRING];
  1797. X  unsigned char *home;
  1798. X  int i, j;
  1799. X  int RTF = 0;
  1800. X
  1801. X#if defined(_ESTDIO) || !defined(_SYS7)
  1802. X  setbuf(stdout, NULL);
  1803. X#endif
  1804. X
  1805. X  RTF_attrib = '0';
  1806. X
  1807. X  MAXX = 79;    /* Default Parameter */
  1808. X  MAXY = 24;
  1809. X  strcpy(terminal, (unsigned char *) "ansi" );
  1810. X  strcpy(umlaut, (unsigned char *) "ibm" );
  1811. X  
  1812. X  home = (unsigned char *) getenv( "HOME" );
  1813. X  sprintf(s, "%s/.wendy", home);
  1814. X
  1815. X  fp = fopen( s, "r" );
  1816. X  if(fp != NULL){
  1817. X    fgets(s, 80, fp); MAXY = atoi(s);
  1818. X    fgets(s, 80, fp); MAXX = atoi(s);
  1819. X    fgets(s, 80, fp); sscanf(s, "%s", &terminal);
  1820. X    fgets(s, 80, fp); sscanf(s, "%s", ¨aut);    
  1821. X    fclose(fp);
  1822. X  }
  1823. X  if(MAXY > 24) MAXY = 24;
  1824. X  if(MAXY <  4) MAXY =  4;
  1825. X  
  1826. X  if(MAXX < 10) MAXX = 80;
  1827. X
  1828. X
  1829. X  ansi2( terminal, -1, -1 );
  1830. X  i = ansi2( "cm" );
  1831. X  ansi( "cl" );
  1832. X#ifdef _LOCAL
  1833. X  printf("\n\nMein Name ist "); 
  1834. X#else
  1835. X  printf("\n\nMy name is ");
  1836. X#endif
  1837. X  ansi( "md" ); printf("Wendy");
  1838. X  ansi( "me" ); printf("!\n\n");
  1839. X
  1840. X
  1841. X  if((i == 1) || (i == -1)){
  1842. X#ifdef _LOCAL
  1843. X    printf("Und ich kann Dein Terminal nicht bedienen!\n\n");
  1844. X#else
  1845. X    printf("And I can't handle your terminal!\n\n");
  1846. X#endif
  1847. X    return;
  1848. X  }
  1849. X  if(argc < 2){
  1850. X#ifdef _LOCAL
  1851. X    printf("Und Du hast vergessen einen Dateinamen anzugeben!\n\n");
  1852. X#else
  1853. X    printf("And you've forgotten to mention a filename!\n\n");
  1854. X#endif
  1855. X    return;
  1856. X  }
  1857. X  /*
  1858. X  sprintf(s, "/usr/tmp/WENDY.%d", getpid());
  1859. X  ROLLBACK = fopen( s, "w" );
  1860. X  if(ROLLBACK == NULL){
  1861. X    printf("Rollback ???");
  1862. X  }
  1863. X  fprintf(ROLLBACK, "00000 %s, %s [%s] on %s\n\n", mydate( 0 ), mytime( 0 ), whoami(), ttyna());
  1864. X  */
  1865. X  lastline = 2;
  1866. X  NEU = 0;
  1867. X  RTF_toggle = 0;
  1868. X
  1869. X  i = LINELENGTH -2;
  1870. X
  1871. X  fp = fopen( argv[1], "r" );
  1872. X  if(fp != NULL){
  1873. X    FLAG[lastline] = 0;
  1874. X    while(fgets(TEXT[lastline], i, fp) != 0){
  1875. X        FLAG[lastline+1] = 0;
  1876. X        if(strcomp("Content-Type: text/richtext", TEXT[lastline]) == 0){
  1877. X            FLAG[lastline] |= is_richtext;
  1878. X            lastline--;
  1879. X        }
  1880. X        if(strcomp("Content-Type: text/plain", TEXT[lastline]) == 0){
  1881. X            FLAG[lastline] |= is_plain;
  1882. X            lastline--;
  1883. X        }
  1884. X        lastline++;
  1885. X        if(lastline > MAXLINES){
  1886. X#ifdef _LOCAL
  1887. X            printf("Und die Datei <%s> ist zu gross fuer mich!\n\n", argv[1]);
  1888. X#else
  1889. X            printf("And the file <%s> is much to big for me!\n\n", argv[1]);
  1890. X#endif
  1891. X            fclose(fp);
  1892. X            return;
  1893. X        }
  1894. X    }
  1895. X      fclose(fp);
  1896. X  }
  1897. X  else{
  1898. X    NEU++;
  1899. X    RTF_toggle++;
  1900. X    for(i = 0; i < 25; i++){
  1901. X        strcpy(TEXT[i], (unsigned char *) "\n");
  1902. X        FLAG[i] = 0;
  1903. X    }
  1904. X    lastline += 25;
  1905. X  }
  1906. X  strcpy(TEXT[lastline], (unsigned char *) "\n");
  1907. X
  1908. X  signal(SIGINT,  SIG_IGN);
  1909. X  signal(SIGQUIT, SIG_IGN);
  1910. X  signal(SIGHUP,  SIG_IGN);
  1911. X  signal(SIGABRT, SIG_IGN);
  1912. X  signal(SIGTERM, SIG_IGN);
  1913. X
  1914. X  strcpy(version, (unsigned char *) VERSION);
  1915. X  show_status( version );
  1916. X  INS_mode     = 0;
  1917. X  CHANGED      = 0;
  1918. X  REALLY       = 0;
  1919. X  MARK           = 0;
  1920. X  START           = 2;
  1921. X  RULER           = 0;
  1922. X  STATUSM      = 0;
  1923. X  FORMATTER    = 0;
  1924. X  BLOCK.status = 0;
  1925. X
  1926. X  x = 1; y = START; ypos = 1;
  1927. X  
  1928. X  prep_screen( ypos );
  1929. X  show_screen( START );
  1930. X  echo( 0 );
  1931. X  loop( argv[1] );
  1932. X  echo( 1 );
  1933. X  /*
  1934. X  fclose( ROLLBACK );
  1935. X  */
  1936. X  ansi( "me" );
  1937. X  ansi2( "cm", 1, MAXY );
  1938. X  ansi( "ce" );
  1939. X}
  1940. END_OF_FILE
  1941.   if test 8407 -ne `wc -c <'wendy/wendy.c'`; then
  1942.     echo shar: \"'wendy/wendy.c'\" unpacked with wrong size!
  1943.   fi
  1944.   # end of 'wendy/wendy.c'
  1945. fi
  1946. echo shar: End of archive 12 \(of 15\).
  1947. cp /dev/null ark12isdone
  1948. MISSING=""
  1949. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ; do
  1950.     if test ! -f ark${I}isdone ; then
  1951.     MISSING="${MISSING} ${I}"
  1952.     fi
  1953. done
  1954. if test "${MISSING}" = "" ; then
  1955.     echo You have unpacked all 15 archives.
  1956.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1957. else
  1958.     echo You still must unpack the following archives:
  1959.     echo "        " ${MISSING}
  1960. fi
  1961. exit 0
  1962. exit 0 # Just in case...
  1963.