home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / unix / volume26 / xinetd21 / part02 < prev    next >
Encoding:
Text File  |  1993-06-26  |  34.4 KB  |  1,106 lines

  1. Newsgroups: comp.sources.unix
  2. From: panos@cs.colorado.edu (Panos Tsirigotis)
  3. Subject: v26i246: xinetd-2.1.1 - inetd replacement with access control and logging, Part02/31
  4. Sender: unix-sources-moderator@gw.home.vix.com
  5. Approved: vixie@gw.home.vix.com
  6.  
  7. Submitted-By: panos@cs.colorado.edu (Panos Tsirigotis)
  8. Posting-Number: Volume 26, Issue 246
  9. Archive-Name: xinetd-2.1.1/part02
  10.  
  11. #! /bin/sh
  12. # This is a shell archive.  Remove anything before this line, then unpack
  13. # it by saving it into a file and typing "sh file".  To overwrite existing
  14. # files, type "sh file -c".  You can also feed this as standard input via
  15. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  16. # will see the following message at the end:
  17. #        "End of archive 2 (of 31)."
  18. # Contents:  libs/src/misc/COPYRIGHT libs/src/misc/env.h
  19. #   libs/src/pq/COPYRIGHT libs/src/pset/COPYRIGHT
  20. #   libs/src/sio/COPYRIGHT libs/src/sio/suite/fdtest.c
  21. #   libs/src/sio/suite/sprint_test libs/src/str/COPYRIGHT
  22. #   libs/src/str/ss_bf.c libs/src/str/strutil.3
  23. #   libs/src/timer/COPYRIGHT libs/src/timer/defs.h
  24. #   libs/src/xlog/COPYRIGHT libs/src/xlog/filelog.h
  25. #   libs/src/xlog/util.c xinetd/COPYRIGHT xinetd/access.h xinetd/log.h
  26. #   xinetd/options.h
  27. # Wrapped by panos@mystique on Mon Jun 21 14:51:20 1993
  28. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  29. if test -f 'libs/src/misc/COPYRIGHT' -a "${1}" != "-c" ; then 
  30.   echo shar: Will not clobber existing file \"'libs/src/misc/COPYRIGHT'\"
  31. else
  32. echo shar: Extracting \"'libs/src/misc/COPYRIGHT'\" \(1336 characters\)
  33. sed "s/^X//" >'libs/src/misc/COPYRIGHT' <<'END_OF_FILE'
  34. XThis software is
  35. X
  36. X(c) Copyright 1992 by Panagiotis Tsirigotis
  37. X
  38. XThe author (Panagiotis Tsirigotis) grants permission to use, copy,
  39. Xand distribute this software and its documentation for any purpose 
  40. Xand without fee, provided that the above copyright notice extant in
  41. Xfiles in this distribution is not removed from files included in any
  42. Xredistribution and that this copyright notice is also included in any 
  43. Xredistribution.
  44. X
  45. XModifications to this software may be distributed, either by distributing
  46. Xthe modified software or by distributing patches to the original software,
  47. Xunder the following additional terms:
  48. X
  49. X1. The version number will be modified as follows:
  50. X      a. The first 3 components of the version number
  51. X         (i.e <number>.<number>.<number>) will remain unchanged.
  52. X      b. A new component will be appended to the version number to indicate
  53. X         the modification level. The form of this component is up to the 
  54. X         author of the modifications.
  55. X
  56. X2. The author of the modifications will include his/her name by appending it 
  57. X   along with the new version number to this file and will be responsible for 
  58. X   any wrong behavior of the modified software.
  59. X
  60. XThe author makes no representations about the suitability of this 
  61. Xsoftware for any purpose.  It is provided "as is" without any express 
  62. Xor implied warranty.
  63. X
  64. END_OF_FILE
  65. if test 1336 -ne `wc -c <'libs/src/misc/COPYRIGHT'`; then
  66.     echo shar: \"'libs/src/misc/COPYRIGHT'\" unpacked with wrong size!
  67. fi
  68. # end of 'libs/src/misc/COPYRIGHT'
  69. fi
  70. if test -f 'libs/src/misc/env.h' -a "${1}" != "-c" ; then 
  71.   echo shar: Will not clobber existing file \"'libs/src/misc/env.h'\"
  72. else
  73. echo shar: Extracting \"'libs/src/misc/env.h'\" \(1147 characters\)
  74. sed "s/^X//" >'libs/src/misc/env.h' <<'END_OF_FILE'
  75. X/*
  76. X * (c) Copyright 1992 by Panagiotis Tsirigotis
  77. X * All rights reserved.  The file named COPYRIGHT specifies the terms 
  78. X * and conditions for redistribution.
  79. X */
  80. X
  81. X#ifndef __ENV_H
  82. X#define __ENV_H
  83. X
  84. X/*
  85. X * $Id: env.h,v 1.2 1992/10/31 03:09:33 panos Exp $
  86. X */
  87. X
  88. Xstruct __env
  89. X{
  90. X    unsigned max_vars ;
  91. X    unsigned n_vars ;
  92. X    char **vars ;
  93. X} ;
  94. X
  95. Xtypedef struct __env *env_h ;
  96. X
  97. X#define ENV_NULL                        ((env_h)0)
  98. X
  99. X/*
  100. X * Return values
  101. X */
  102. X#define ENV_ERR                        (-1)
  103. X#define ENV_OK                            0
  104. X
  105. X/*
  106. X * Error codes
  107. X */
  108. X#define ENV_ENOMEM                    1
  109. X#define ENV_EBADVAR                    2
  110. X#define ENV_EBADSTRING                3
  111. X
  112. X
  113. X#ifdef __ARGS
  114. X#undef __ARGS
  115. X#endif
  116. X
  117. X#ifdef PROTOTYPES
  118. X#  define __ARGS( s )               s
  119. X#else
  120. X#  define __ARGS( s )               ()
  121. X#endif
  122. X
  123. Xenv_h env_create __ARGS( ( env_h ) ) ;
  124. Xvoid env_destroy __ARGS( ( env_h ) ) ;
  125. Xenv_h env_make __ARGS( ( char **env_strings ) ) ;
  126. Xint env_addvar __ARGS( ( env_h, env_h from_env, char *var ) ) ;
  127. Xint env_addstr __ARGS( ( env_h, char *str ) ) ;
  128. Xint env_remvar __ARGS( ( env_h, char *var ) ) ;
  129. Xchar *env_lookup __ARGS( ( env_h, char *var ) ) ;
  130. X
  131. X#define env_getvars( env )                (env)->vars
  132. X
  133. Xextern int env_errno ;
  134. X
  135. X#endif    /* __ENV_H */
  136. X
  137. END_OF_FILE
  138. if test 1147 -ne `wc -c <'libs/src/misc/env.h'`; then
  139.     echo shar: \"'libs/src/misc/env.h'\" unpacked with wrong size!
  140. fi
  141. # end of 'libs/src/misc/env.h'
  142. fi
  143. if test -f 'libs/src/pq/COPYRIGHT' -a "${1}" != "-c" ; then 
  144.   echo shar: Will not clobber existing file \"'libs/src/pq/COPYRIGHT'\"
  145. else
  146. echo shar: Extracting \"'libs/src/pq/COPYRIGHT'\" \(1336 characters\)
  147. sed "s/^X//" >'libs/src/pq/COPYRIGHT' <<'END_OF_FILE'
  148. XThis software is
  149. X
  150. X(c) Copyright 1993 by Panagiotis Tsirigotis
  151. X
  152. XThe author (Panagiotis Tsirigotis) grants permission to use, copy,
  153. Xand distribute this software and its documentation for any purpose 
  154. Xand without fee, provided that the above copyright notice extant in
  155. Xfiles in this distribution is not removed from files included in any
  156. Xredistribution and that this copyright notice is also included in any 
  157. Xredistribution.
  158. X
  159. XModifications to this software may be distributed, either by distributing
  160. Xthe modified software or by distributing patches to the original software,
  161. Xunder the following additional terms:
  162. X
  163. X1. The version number will be modified as follows:
  164. X      a. The first 3 components of the version number
  165. X         (i.e <number>.<number>.<number>) will remain unchanged.
  166. X      b. A new component will be appended to the version number to indicate
  167. X         the modification level. The form of this component is up to the 
  168. X         author of the modifications.
  169. X
  170. X2. The author of the modifications will include his/her name by appending it 
  171. X   along with the new version number to this file and will be responsible for 
  172. X   any wrong behavior of the modified software.
  173. X
  174. XThe author makes no representations about the suitability of this 
  175. Xsoftware for any purpose.  It is provided "as is" without any express 
  176. Xor implied warranty.
  177. X
  178. END_OF_FILE
  179. if test 1336 -ne `wc -c <'libs/src/pq/COPYRIGHT'`; then
  180.     echo shar: \"'libs/src/pq/COPYRIGHT'\" unpacked with wrong size!
  181. fi
  182. # end of 'libs/src/pq/COPYRIGHT'
  183. fi
  184. if test -f 'libs/src/pset/COPYRIGHT' -a "${1}" != "-c" ; then 
  185.   echo shar: Will not clobber existing file \"'libs/src/pset/COPYRIGHT'\"
  186. else
  187. echo shar: Extracting \"'libs/src/pset/COPYRIGHT'\" \(1342 characters\)
  188. sed "s/^X//" >'libs/src/pset/COPYRIGHT' <<'END_OF_FILE'
  189. XThis software is
  190. X
  191. X(c) Copyright 1992, 1993 by Panagiotis Tsirigotis
  192. X
  193. XThe author (Panagiotis Tsirigotis) grants permission to use, copy,
  194. Xand distribute this software and its documentation for any purpose 
  195. Xand without fee, provided that the above copyright notice extant in
  196. Xfiles in this distribution is not removed from files included in any
  197. Xredistribution and that this copyright notice is also included in any 
  198. Xredistribution.
  199. X
  200. XModifications to this software may be distributed, either by distributing
  201. Xthe modified software or by distributing patches to the original software,
  202. Xunder the following additional terms:
  203. X
  204. X1. The version number will be modified as follows:
  205. X      a. The first 3 components of the version number
  206. X         (i.e <number>.<number>.<number>) will remain unchanged.
  207. X      b. A new component will be appended to the version number to indicate
  208. X         the modification level. The form of this component is up to the 
  209. X         author of the modifications.
  210. X
  211. X2. The author of the modifications will include his/her name by appending it 
  212. X   along with the new version number to this file and will be responsible for 
  213. X   any wrong behavior of the modified software.
  214. X
  215. XThe author makes no representations about the suitability of this 
  216. Xsoftware for any purpose.  It is provided "as is" without any express 
  217. Xor implied warranty.
  218. X
  219. END_OF_FILE
  220. if test 1342 -ne `wc -c <'libs/src/pset/COPYRIGHT'`; then
  221.     echo shar: \"'libs/src/pset/COPYRIGHT'\" unpacked with wrong size!
  222. fi
  223. # end of 'libs/src/pset/COPYRIGHT'
  224. fi
  225. if test -f 'libs/src/sio/COPYRIGHT' -a "${1}" != "-c" ; then 
  226.   echo shar: Will not clobber existing file \"'libs/src/sio/COPYRIGHT'\"
  227. else
  228. echo shar: Extracting \"'libs/src/sio/COPYRIGHT'\" \(1332 characters\)
  229. sed "s/^X//" >'libs/src/sio/COPYRIGHT' <<'END_OF_FILE'
  230. XThis software is
  231. X
  232. X(c) Copyright 1992, 1993 by Panagiotis Tsirigotis
  233. X
  234. XThe author (Panagiotis Tsirigotis) grants permission to use, copy,
  235. Xand distribute this software and its documentation for any purpose 
  236. Xand without fee, provided that a) the above copyright notice extant in
  237. Xfiles in this distribution is not removed from files included in any
  238. Xredistribution, and b) this file is also included in any redistribution.
  239. X
  240. XModifications to this software may be distributed, either by distributing
  241. Xthe modified software or by distributing patches to the original software,
  242. Xunder the following additional terms:
  243. X
  244. X1. The version number will be modified as follows:
  245. X      a. The first 3 components of the version number
  246. X         (i.e. <number>.<number>.<number>) will remain unchanged.
  247. X      b. A new component will be appended to the version number to indicate
  248. X         the modification level. The form of this component is up to the 
  249. X         author of the modifications.
  250. X
  251. X2. The author of the modifications will include his/her name by appending it 
  252. X   along with the new version number to this file and will be responsible for 
  253. X   any wrong behavior of the modified software.
  254. X
  255. XThe author makes no representations about the suitability of this 
  256. Xsoftware for any purpose.  It is provided "as is" without any express 
  257. Xor implied warranty.
  258. X
  259. END_OF_FILE
  260. if test 1332 -ne `wc -c <'libs/src/sio/COPYRIGHT'`; then
  261.     echo shar: \"'libs/src/sio/COPYRIGHT'\" unpacked with wrong size!
  262. fi
  263. # end of 'libs/src/sio/COPYRIGHT'
  264. fi
  265. if test -f 'libs/src/sio/suite/fdtest.c' -a "${1}" != "-c" ; then 
  266.   echo shar: Will not clobber existing file \"'libs/src/sio/suite/fdtest.c'\"
  267. else
  268. echo shar: Extracting \"'libs/src/sio/suite/fdtest.c'\" \(1150 characters\)
  269. sed "s/^X//" >'libs/src/sio/suite/fdtest.c' <<'END_OF_FILE'
  270. X/*
  271. X * (c) Copyright 1992, 1993 by Panagiotis Tsirigotis
  272. X * All rights reserved.  The file named COPYRIGHT specifies the terms 
  273. X * and conditions for redistribution.
  274. X */
  275. X
  276. X
  277. X#include <sys/time.h>
  278. X#include <sys/resource.h>
  279. X
  280. X#include "sio.h"
  281. X
  282. X#ifndef NULL
  283. X#define NULL 0
  284. X#endif
  285. X
  286. Xint main( argc, argv )
  287. X    int argc ;
  288. X    char *argv[] ;
  289. X{
  290. X#ifdef RLIMIT_NOFILE
  291. X    struct rlimit rl ;
  292. X    int fd ;
  293. X    int duped_fd ;
  294. X    char *s ;
  295. X
  296. X    if ( getrlimit( RLIMIT_NOFILE, &rl ) == -1 )
  297. X    {
  298. X        perror( "getrlimit" ) ;
  299. X        exit( 1 ) ;
  300. X    }
  301. X    if ( rl.rlim_cur != getdtablesize() )
  302. X    {
  303. X        printf( "rl.rlim_cur != getdtablesize()\n" ) ;
  304. X        exit( 1 ) ;
  305. X    }
  306. X    if ( rl.rlim_cur == rl.rlim_max )
  307. X        exit( 0 ) ;
  308. X
  309. X    rl.rlim_cur++ ;
  310. X    if ( setrlimit( RLIMIT_NOFILE, &rl ) == -1 )
  311. X    {
  312. X        perror( "setrlimit" ) ;
  313. X        exit( 1 ) ;
  314. X    }
  315. X    if ( Smorefds() == SIO_ERR )
  316. X    {
  317. X        perror( "Smorefds" ) ;
  318. X        exit( 1 ) ;
  319. X    }
  320. X    fd = open( "/etc/passwd", 0 ) ;
  321. X    if ( fd == -1 )
  322. X    {
  323. X        perror( "open" ) ;
  324. X        exit( 1 ) ;
  325. X    }
  326. X    duped_fd = getdtablesize()-1 ;
  327. X    if ( dup2( fd, duped_fd ) == -1 )
  328. X    {
  329. X        perror( "dup2" ) ;
  330. X        exit( 1 ) ;
  331. X    }
  332. X    s = Srdline( duped_fd ) ;
  333. X    if ( s == NULL )
  334. X    {
  335. X        perror( "Srdline" ) ;
  336. X        exit( 1 ) ;
  337. X    }
  338. X#endif
  339. X    exit( 0 ) ;
  340. X}
  341. END_OF_FILE
  342. if test 1150 -ne `wc -c <'libs/src/sio/suite/fdtest.c'`; then
  343.     echo shar: \"'libs/src/sio/suite/fdtest.c'\" unpacked with wrong size!
  344. fi
  345. # end of 'libs/src/sio/suite/fdtest.c'
  346. fi
  347. if test -f 'libs/src/sio/suite/sprint_test' -a "${1}" != "-c" ; then 
  348.   echo shar: Will not clobber existing file \"'libs/src/sio/suite/sprint_test'\"
  349. else
  350. echo shar: Extracting \"'libs/src/sio/suite/sprint_test'\" \(1146 characters\)
  351. sed "s/^X//" >'libs/src/sio/suite/sprint_test' <<'END_OF_FILE'
  352. X#!/bin/sh
  353. X
  354. X# (c) Copyright 1992, 1993 by Panagiotis Tsirigotis
  355. X# All rights reserved.  The file named COPYRIGHT specifies the terms 
  356. X# and conditions for redistribution.
  357. X
  358. X
  359. X#
  360. X# $Id: sprint_test,v 8.1 1993/03/13 01:21:48 panos Exp $
  361. X#
  362. X
  363. Xcompare()
  364. X{
  365. X    cmp -s PRINTF.DATA SPRINT.DATA
  366. X    if [ $? -ne 0 ]
  367. X    then
  368. X        echo TEST $1 FAILED
  369. X        echo Check files PRINTF.DATA and SPRINT.DATA for differences
  370. X        exit 1
  371. X    else
  372. X        echo TEST $1 PASSED
  373. X        rm -f PRINTF.DATA SPRINT.DATA
  374. X    fi
  375. X}
  376. X
  377. Xformat_test()
  378. X{
  379. X    Sprint $@ 1>PRINTF.DATA 2>SPRINT.DATA
  380. X    compare "$*"
  381. X}
  382. X
  383. Xformat_test ALL
  384. X
  385. Xformat_test -W10 -F0 -c
  386. Xformat_test -W10 -F- -c
  387. X
  388. Xecho
  389. Xecho PRECISION TEST
  390. Xi=13
  391. Xwhile test $i -ne 0
  392. Xdo
  393. X    format_test -P$i -F# -X
  394. X    i=`expr $i - 1`
  395. Xdone
  396. Xecho END OF PRECISION TEST
  397. Xecho
  398. X
  399. Xformat_test -Vi -4 4 1 -o "-F#"
  400. X
  401. Xformat_test -Vf -1.0 1.0 0.3 -W30 -P13 -F+ -f
  402. Xformat_test -Vf -1.0 1.0 0.3 -W30 -P13 -F+ -e
  403. Xformat_test -Vf -1.0 2.0 0.3 -W30 -P13 -F+ -g
  404. X
  405. Xformat_test -Vf -1.0 1.0 0.3 -W30 -P13 -F+- -f
  406. Xformat_test -Vf -1.0 1.0 0.3 -W30 -P13 -F+- -e
  407. Xformat_test -Vf -1.0 2.0 0.3 -W30 -P13 -F+- -g
  408. X
  409. Xformat_test -W10 "-F " -x
  410. X
  411. Xformat_test -W40 -u -Vi 8 100 3 -F0
  412. X
  413. Xformat_test -b
  414. Xformat_test -b -P10
  415. END_OF_FILE
  416. if test 1146 -ne `wc -c <'libs/src/sio/suite/sprint_test'`; then
  417.     echo shar: \"'libs/src/sio/suite/sprint_test'\" unpacked with wrong size!
  418. fi
  419. # end of 'libs/src/sio/suite/sprint_test'
  420. fi
  421. if test -f 'libs/src/str/COPYRIGHT' -a "${1}" != "-c" ; then 
  422.   echo shar: Will not clobber existing file \"'libs/src/str/COPYRIGHT'\"
  423. else
  424. echo shar: Extracting \"'libs/src/str/COPYRIGHT'\" \(1329 characters\)
  425. sed "s/^X//" >'libs/src/str/COPYRIGHT' <<'END_OF_FILE'
  426. XThis software is
  427. X
  428. X(c) Copyright 1992, 1993 by Panagiotis Tsirigotis
  429. X
  430. XThe author (Panagiotis Tsirigotis) grants permission to use, copy,
  431. Xand distribute this software and its documentation for any purpose 
  432. Xand without fee, provided that the above copyright notice extant in
  433. Xfiles in this distribution is not removed from files included in any
  434. Xredistribution and that this file is also included in any redistribution.
  435. X
  436. XModifications to this software may be distributed, either by distributing
  437. Xthe modified software or by distributing patches to the original software,
  438. Xunder the following additional terms:
  439. X
  440. X1. The version number will be modified as follows:
  441. X      a. The first 3 components of the version number
  442. X         (i.e <number>.<number>.<number>) will remain unchanged.
  443. X      b. A new component will be appended to the version number to indicate
  444. X         the modification level. The form of this component is up to the 
  445. X         author of the modifications.
  446. X
  447. X2. The author of the modifications will include his/her name by appending it 
  448. X   along with the new version number to this file and will be responsible for 
  449. X   any wrong behavior of the modified software.
  450. X
  451. XThe author makes no representations about the suitability of this 
  452. Xsoftware for any purpose.  It is provided "as is" without any express 
  453. Xor implied warranty.
  454. X
  455. END_OF_FILE
  456. if test 1329 -ne `wc -c <'libs/src/str/COPYRIGHT'`; then
  457.     echo shar: \"'libs/src/str/COPYRIGHT'\" unpacked with wrong size!
  458. fi
  459. # end of 'libs/src/str/COPYRIGHT'
  460. fi
  461. if test -f 'libs/src/str/ss_bf.c' -a "${1}" != "-c" ; then 
  462.   echo shar: Will not clobber existing file \"'libs/src/str/ss_bf.c'\"
  463. else
  464. echo shar: Extracting \"'libs/src/str/ss_bf.c'\" \(1305 characters\)
  465. sed "s/^X//" >'libs/src/str/ss_bf.c' <<'END_OF_FILE'
  466. X/*
  467. X * (c) Copyright 1992, 1993 by Panagiotis Tsirigotis
  468. X * All rights reserved.  The file named COPYRIGHT specifies the terms 
  469. X * and conditions for redistribution.
  470. X */
  471. X
  472. Xstatic char RCSid[] = "$Id" ;
  473. X
  474. X#include "ss_impl.h"
  475. X
  476. XPRIVATE int bf_setup() ;
  477. XPRIVATE char *bf_match() ;
  478. XPRIVATE void bf_done() ;
  479. X
  480. Xstruct ss_ops __strs_bfops = { bf_setup, bf_match, bf_done } ;
  481. X
  482. X
  483. XPRIVATE int bf_setup( hp )
  484. X    header_s *hp ;
  485. X{
  486. X#ifdef lint
  487. X    hp = hp ;
  488. X#endif
  489. X    return( SS_OK ) ;
  490. X}
  491. X
  492. X
  493. XPRIVATE char *bf_match( hp, str, len )
  494. X    header_s        *hp ;
  495. X    char            *str ;
  496. X    int            len ;
  497. X{
  498. X    register int    pfc        = SS_PATTERN( hp )[ 0 ] ;    /* pattern first char */
  499. X    register char    *pos        = str ;
  500. X    register char    *endpos    = &str[ len - SS_PATLEN( hp ) + 1 ] ;
  501. X    char                *endpat    = &SS_PATTERN( hp )[ SS_PATLEN( hp ) ] ;
  502. X
  503. X    while ( pos < endpos )
  504. X    {
  505. X        register int strc = SS_MAP( hp, *pos ) ;
  506. X        register char *pp ;                                    /* pattern pointer */
  507. X        register char *sp ;                                    /* string pointer */
  508. X
  509. X        pos++ ;
  510. X        if ( strc != pfc )
  511. X            continue ;
  512. X
  513. X        for ( pp = &SS_PATTERN( hp )[ 1 ], sp = pos ;; sp++, pp++ )
  514. X        {
  515. X            if ( pp == endpat )            /* we are guaranteed a non-empty pattern */
  516. X                return( pos-1 ) ;
  517. X            if ( *pp != SS_MAP( hp, *sp ) )
  518. X                break ;
  519. X        }
  520. X    }
  521. X    return( CHAR_NULL ) ;
  522. X}
  523. X
  524. X
  525. XPRIVATE void bf_done( hp )
  526. X    header_s *hp ;
  527. X{
  528. X#ifdef lint
  529. X    hp = hp ;
  530. X#endif
  531. X}
  532. X
  533. END_OF_FILE
  534. if test 1305 -ne `wc -c <'libs/src/str/ss_bf.c'`; then
  535.     echo shar: \"'libs/src/str/ss_bf.c'\" unpacked with wrong size!
  536. fi
  537. # end of 'libs/src/str/ss_bf.c'
  538. fi
  539. if test -f 'libs/src/str/strutil.3' -a "${1}" != "-c" ; then 
  540.   echo shar: Will not clobber existing file \"'libs/src/str/strutil.3'\"
  541. else
  542. echo shar: Extracting \"'libs/src/str/strutil.3'\" \(1367 characters\)
  543. sed "s/^X//" >'libs/src/str/strutil.3' <<'END_OF_FILE'
  544. X.\"(c) Copyright 1992, 1993 by Panagiotis Tsirigotis
  545. X.\"All rights reserved.  The file named COPYRIGHT specifies the terms 
  546. X.\"and conditions for redistribution.
  547. X.\"
  548. X.\" $Id: strutil.3,v 3.1 1993/06/13 02:49:23 panos Exp $
  549. X.TH STRUTIL 3X "30 September 1992"
  550. X.SH NAME
  551. Xstr_find, str_casefind, str_fill, str_lower, str_upper -- string utility functions
  552. X.SH SYNOPSIS
  553. X.LP
  554. X.nf
  555. X.ft B
  556. X#include "str.h"
  557. X.LP
  558. X.ft B
  559. Xchar *str_find( s1, s2 )
  560. Xchar *s1, *s2 ;
  561. X.LP
  562. X.ft B
  563. Xchar *str_casefind( s1, s2 )
  564. Xchar *s1, *s2 ;
  565. X.LP
  566. X.ft B
  567. Xvoid str_fill( s, c )
  568. Xchar *s ;
  569. Xchar c ;
  570. X.LP
  571. X.ft B
  572. Xchar *str_lower( s )
  573. Xchar *s ;
  574. X.LP
  575. X.ft B
  576. Xchar *str_upper( s )
  577. Xchar *s ;
  578. X.SH DESCRIPTION
  579. X.B str_find()
  580. Xreturns a pointer to the first instance of string \fIs2\fR in string \fIs1\fR.
  581. XIf \fIs2\fR is the empty string a pointer to \fIs1\fR is returned.
  582. X.LP
  583. X.B str_casefind()
  584. Xperforms the same function as
  585. X.B str_find()
  586. Xexcept that it performs case insensitive character comparisons.
  587. X.LP
  588. X.B str_fill()
  589. Xfills the string \fIs\fR with the character \fIc\fR.
  590. X.LP
  591. X.B str_lower()
  592. Xand
  593. X.B str_upper()
  594. Xconvert their argument in place to a lower or upper case string respectively.
  595. X.SH "RETURN VALUES"
  596. X.LP
  597. X\fBstr_find()\fR 
  598. Xand
  599. X.B str_casefind()
  600. Xreturn a pointer to the first occurrence of \fIs2\fR
  601. Xin \fIs1\fR or
  602. X.SM NULL
  603. Xif \fIs2\fR does not exist in \fIs1\fR.
  604. X.LP
  605. X\fBstr_lower()\fR and \fBstr_upper()\fR return \fIs\fR.
  606. END_OF_FILE
  607. if test 1367 -ne `wc -c <'libs/src/str/strutil.3'`; then
  608.     echo shar: \"'libs/src/str/strutil.3'\" unpacked with wrong size!
  609. fi
  610. # end of 'libs/src/str/strutil.3'
  611. fi
  612. if test -f 'libs/src/timer/COPYRIGHT' -a "${1}" != "-c" ; then 
  613.   echo shar: Will not clobber existing file \"'libs/src/timer/COPYRIGHT'\"
  614. else
  615. echo shar: Extracting \"'libs/src/timer/COPYRIGHT'\" \(1336 characters\)
  616. sed "s/^X//" >'libs/src/timer/COPYRIGHT' <<'END_OF_FILE'
  617. XThis software is
  618. X
  619. X(c) Copyright 1993 by Panagiotis Tsirigotis
  620. X
  621. XThe author (Panagiotis Tsirigotis) grants permission to use, copy,
  622. Xand distribute this software and its documentation for any purpose 
  623. Xand without fee, provided that the above copyright notice extant in
  624. Xfiles in this distribution is not removed from files included in any
  625. Xredistribution and that this copyright notice is also included in any 
  626. Xredistribution.
  627. X
  628. XModifications to this software may be distributed, either by distributing
  629. Xthe modified software or by distributing patches to the original software,
  630. Xunder the following additional terms:
  631. X
  632. X1. The version number will be modified as follows:
  633. X      a. The first 3 components of the version number
  634. X         (i.e <number>.<number>.<number>) will remain unchanged.
  635. X      b. A new component will be appended to the version number to indicate
  636. X         the modification level. The form of this component is up to the 
  637. X         author of the modifications.
  638. X
  639. X2. The author of the modifications will include his/her name by appending it 
  640. X   along with the new version number to this file and will be responsible for 
  641. X   any wrong behavior of the modified software.
  642. X
  643. XThe author makes no representations about the suitability of this 
  644. Xsoftware for any purpose.  It is provided "as is" without any express 
  645. Xor implied warranty.
  646. X
  647. END_OF_FILE
  648. if test 1336 -ne `wc -c <'libs/src/timer/COPYRIGHT'`; then
  649.     echo shar: \"'libs/src/timer/COPYRIGHT'\" unpacked with wrong size!
  650. fi
  651. # end of 'libs/src/timer/COPYRIGHT'
  652. fi
  653. if test -f 'libs/src/timer/defs.h' -a "${1}" != "-c" ; then 
  654.   echo shar: Will not clobber existing file \"'libs/src/timer/defs.h'\"
  655. else
  656. echo shar: Extracting \"'libs/src/timer/defs.h'\" \(1264 characters\)
  657. sed "s/^X//" >'libs/src/timer/defs.h' <<'END_OF_FILE'
  658. X/*
  659. X * (c) Copyright 1993 by Panagiotis Tsirigotis
  660. X * All rights reserved.  The file named COPYRIGHT specifies the terms 
  661. X * and conditions for redistribution.
  662. X */
  663. X
  664. X
  665. X/*
  666. X * $Id: defs.h,v 3.1 1992/11/23 16:22:01 panos Exp $
  667. X */
  668. X
  669. X#define PRIVATE                    static
  670. X
  671. X#ifndef NULL
  672. X#define NULL                        0
  673. X#endif
  674. X
  675. X#ifndef FALSE
  676. X#define FALSE                        0
  677. X#define TRUE                        1
  678. X#endif
  679. X
  680. X#define TIMER_NULL                ((timer_s *)0)
  681. X#define SIGVEC_NULL                ((struct sigvec *)0)
  682. X#define SIGACTION_NULL            ((struct sigaction *)0)
  683. X
  684. X#define HANDLE_ERROR( flags, retval, errp, errval, msg )                            \
  685. X                                        if ( flags & TIMER_RETURN_ERROR )            \
  686. X                                        {                                            \
  687. X                                            *errp = errval ;                          \
  688. X                                            return( retval ) ;                        \
  689. X                                        }                                            \
  690. X                                        else                                         \
  691. X                                        {                                            \
  692. X                                            char *s = msg ;                           \
  693. X                                                                                                    \
  694. X                                            (void) write( 2, s, strlen( s ) ) ;       \
  695. X                                            abort() ;                                 \
  696. X                                            _exit( 1 ) ;                              \
  697. X                                            /* NOTREACHED */                          \
  698. X                                        }
  699. X
  700. END_OF_FILE
  701. if test 1264 -ne `wc -c <'libs/src/timer/defs.h'`; then
  702.     echo shar: \"'libs/src/timer/defs.h'\" unpacked with wrong size!
  703. fi
  704. # end of 'libs/src/timer/defs.h'
  705. fi
  706. if test -f 'libs/src/xlog/COPYRIGHT' -a "${1}" != "-c" ; then 
  707.   echo shar: Will not clobber existing file \"'libs/src/xlog/COPYRIGHT'\"
  708. else
  709. echo shar: Extracting \"'libs/src/xlog/COPYRIGHT'\" \(1342 characters\)
  710. sed "s/^X//" >'libs/src/xlog/COPYRIGHT' <<'END_OF_FILE'
  711. XThis software is
  712. X
  713. X(c) Copyright 1992, 1993 by Panagiotis Tsirigotis
  714. X
  715. XThe author (Panagiotis Tsirigotis) grants permission to use, copy,
  716. Xand distribute this software and its documentation for any purpose 
  717. Xand without fee, provided that the above copyright notice extant in
  718. Xfiles in this distribution is not removed from files included in any
  719. Xredistribution and that this copyright notice is also included in any 
  720. Xredistribution.
  721. X
  722. XModifications to this software may be distributed, either by distributing
  723. Xthe modified software or by distributing patches to the original software,
  724. Xunder the following additional terms:
  725. X
  726. X1. The version number will be modified as follows:
  727. X      a. The first 3 components of the version number
  728. X         (i.e <number>.<number>.<number>) will remain unchanged.
  729. X      b. A new component will be appended to the version number to indicate
  730. X         the modification level. The form of this component is up to the 
  731. X         author of the modifications.
  732. X
  733. X2. The author of the modifications will include his/her name by appending it 
  734. X   along with the new version number to this file and will be responsible for 
  735. X   any wrong behavior of the modified software.
  736. X
  737. XThe author makes no representations about the suitability of this 
  738. Xsoftware for any purpose.  It is provided "as is" without any express 
  739. Xor implied warranty.
  740. X
  741. END_OF_FILE
  742. if test 1342 -ne `wc -c <'libs/src/xlog/COPYRIGHT'`; then
  743.     echo shar: \"'libs/src/xlog/COPYRIGHT'\" unpacked with wrong size!
  744. fi
  745. # end of 'libs/src/xlog/COPYRIGHT'
  746. fi
  747. if test -f 'libs/src/xlog/filelog.h' -a "${1}" != "-c" ; then 
  748.   echo shar: Will not clobber existing file \"'libs/src/xlog/filelog.h'\"
  749. else
  750. echo shar: Extracting \"'libs/src/xlog/filelog.h'\" \(1273 characters\)
  751. sed "s/^X//" >'libs/src/xlog/filelog.h' <<'END_OF_FILE'
  752. X/*
  753. X * (c) Copyright 1992, 1993 by Panagiotis Tsirigotis
  754. X * All rights reserved.  The file named COPYRIGHT specifies the terms 
  755. X * and conditions for redistribution.
  756. X */
  757. X
  758. X
  759. X/*
  760. X * $Id: filelog.h,v 2.1 1993/05/06 07:39:39 panos Exp $
  761. X */
  762. X
  763. X/*
  764. X * The file can be either open or closed.
  765. X * When the file is closed, the state is always FL_CLOSED.
  766. X * When the file is open, the state is:
  767. X *        FL_OPEN:            if everything is ok
  768. X *        FL_SIZE:            if the hard limit was exceeded
  769. X *        FL_ERROR:        if an error occured
  770. X */
  771. Xtypedef enum { FL_CLOSED = 0, FL_OPEN, FL_SIZE, FL_ERROR } filelog_state_e ;
  772. X
  773. Xstruct filelog
  774. X{
  775. X    int                    fl_fd ;
  776. X    filelog_state_e    fl_state ;
  777. X    bool_int             fl_close_on_exec ;
  778. X    int                     fl_error ;                /* error code when in FL_ERROR        */
  779. X    bool_int                fl_size_control ;        /* enabled or not                            */
  780. X    bool_int                fl_issued_warning ;    /* when the soft limit was exceeded    */
  781. X    unsigned             fl_size ;            /* current size                       */
  782. X    unsigned                fl_soft_limit ;
  783. X    unsigned                fl_hard_limit ;
  784. X} ;
  785. X
  786. X#define FILELOG_ENABLE_SIZE_CONTROL( flp )        (flp)->fl_size_control = TRUE
  787. X#define FILELOG_DISABLE_SIZE_CONTROL( flp )        (flp)->fl_size_control = FALSE
  788. X#define FILELOG_SIZE_CONTROL( flp )                ( (flp)->fl_size_control )
  789. X
  790. X#define FILELOG( xp )            ((struct filelog *)xp->xl_data)
  791. X
  792. END_OF_FILE
  793. if test 1273 -ne `wc -c <'libs/src/xlog/filelog.h'`; then
  794.     echo shar: \"'libs/src/xlog/filelog.h'\" unpacked with wrong size!
  795. fi
  796. # end of 'libs/src/xlog/filelog.h'
  797. fi
  798. if test -f 'libs/src/xlog/util.c' -a "${1}" != "-c" ; then 
  799.   echo shar: Will not clobber existing file \"'libs/src/xlog/util.c'\"
  800. else
  801. echo shar: Extracting \"'libs/src/xlog/util.c'\" \(1198 characters\)
  802. sed "s/^X//" >'libs/src/xlog/util.c' <<'END_OF_FILE'
  803. X/*
  804. X * (c) Copyright 1992, 1993 by Panagiotis Tsirigotis
  805. X * All rights reserved.  The file named COPYRIGHT specifies the terms 
  806. X * and conditions for redistribution.
  807. X */
  808. X
  809. Xstatic char RCSid[] = "$Id: util.c,v 2.1 1993/05/06 07:40:12 panos Exp $" ;
  810. X
  811. Xextern int sys_nerr;
  812. Xextern char *sys_errlist[];
  813. Xextern int errno;
  814. X
  815. Xchar *malloc() ;
  816. X
  817. X#define NUL                        '\0'
  818. X#define NULL                    0
  819. X
  820. X
  821. X/*
  822. X * Search the given buffer for an occurrence of "%m"
  823. X */
  824. Xchar *__xlog_add_errno( buf, len )
  825. X    char *buf ;
  826. X    int len ;
  827. X{
  828. X    register char *s ;
  829. X
  830. X    for ( s = buf ; s < &buf[ len-1 ] ; s++ )
  831. X        if ( *s == '%' && *(s+1) == 'm' )
  832. X            return( s ) ;
  833. X    return( NULL ) ;
  834. X}
  835. X
  836. X
  837. X
  838. Xchar *__xlog_explain_errno( buf, size )
  839. X    char *buf ;
  840. X    unsigned *size ;
  841. X{
  842. X    register int len ;
  843. X    char *strncpy() ;
  844. X
  845. X    if ( errno < sys_nerr )
  846. X    {
  847. X
  848. X        (void) strncpy( buf, sys_errlist[ errno ], (int)*size ) ;
  849. X        for ( len = 0 ; len < *size ; len++ )
  850. X            if ( buf[ len ] == NUL )
  851. X                break ;
  852. X        *size = len ;
  853. X    }
  854. X    else
  855. X        len = strx_nprint( buf, *size, "errno = %d", errno ) ;
  856. X    return( buf ) ;
  857. X}
  858. X
  859. X
  860. Xchar *__xlog_new_string( s )
  861. X    char *s ;
  862. X{
  863. X    unsigned size = strlen( s ) + 1 ;
  864. X    char *p = malloc( size ) ;
  865. X    char *strcpy() ;
  866. X
  867. X    return( ( p != NULL ) ? strcpy( p, s ) : p ) ;
  868. X}
  869. X
  870. X
  871. END_OF_FILE
  872. if test 1198 -ne `wc -c <'libs/src/xlog/util.c'`; then
  873.     echo shar: \"'libs/src/xlog/util.c'\" unpacked with wrong size!
  874. fi
  875. # end of 'libs/src/xlog/util.c'
  876. fi
  877. if test -f 'xinetd/COPYRIGHT' -a "${1}" != "-c" ; then 
  878.   echo shar: Will not clobber existing file \"'xinetd/COPYRIGHT'\"
  879. else
  880. echo shar: Extracting \"'xinetd/COPYRIGHT'\" \(1336 characters\)
  881. sed "s/^X//" >'xinetd/COPYRIGHT' <<'END_OF_FILE'
  882. XThis software is
  883. X
  884. X(c) Copyright 1992 by Panagiotis Tsirigotis
  885. X
  886. XThe author (Panagiotis Tsirigotis) grants permission to use, copy,
  887. Xand distribute this software and its documentation for any purpose 
  888. Xand without fee, provided that the above copyright notice extant in
  889. Xfiles in this distribution is not removed from files included in any
  890. Xredistribution and that this copyright notice is also included in any 
  891. Xredistribution.
  892. X
  893. XModifications to this software may be distributed, either by distributing
  894. Xthe modified software or by distributing patches to the original software,
  895. Xunder the following additional terms:
  896. X
  897. X1. The version number will be modified as follows:
  898. X      a. The first 3 components of the version number
  899. X         (i.e <number>.<number>.<number>) will remain unchanged.
  900. X      b. A new component will be appended to the version number to indicate
  901. X         the modification level. The form of this component is up to the 
  902. X         author of the modifications.
  903. X
  904. X2. The author of the modifications will include his/her name by appending it 
  905. X   along with the new version number to this file and will be responsible for 
  906. X   any wrong behavior of the modified software.
  907. X
  908. XThe author makes no representations about the suitability of this 
  909. Xsoftware for any purpose.  It is provided "as is" without any express 
  910. Xor implied warranty.
  911. X
  912. END_OF_FILE
  913. if test 1336 -ne `wc -c <'xinetd/COPYRIGHT'`; then
  914.     echo shar: \"'xinetd/COPYRIGHT'\" unpacked with wrong size!
  915. fi
  916. # end of 'xinetd/COPYRIGHT'
  917. fi
  918. if test -f 'xinetd/access.h' -a "${1}" != "-c" ; then 
  919.   echo shar: Will not clobber existing file \"'xinetd/access.h'\"
  920. else
  921. echo shar: Extracting \"'xinetd/access.h'\" \(1264 characters\)
  922. sed "s/^X//" >'xinetd/access.h' <<'END_OF_FILE'
  923. X/*
  924. X * (c) Copyright 1992 by Panagiotis Tsirigotis
  925. X * All rights reserved.  The file named COPYRIGHT specifies the terms 
  926. X * and conditions for redistribution.
  927. X */
  928. X
  929. X#ifndef ACCESS_H
  930. X#define ACCESS_H
  931. X
  932. X/*
  933. X * $Id: access.h,v 6.3 1993/06/13 01:41:38 panos Exp $
  934. X */
  935. X
  936. X#include "defs.h"
  937. X
  938. X/*
  939. X * These flags are used to form a mask for access_control.
  940. X * The mask determines which checks will be performed.
  941. X */
  942. X#define CF_ADDRESS                1
  943. X#define CF_TIME                    2
  944. X#define CF_SERVICE_LIMIT        3
  945. X#define CF_PROCESS_LIMIT        4
  946. X
  947. Xtypedef enum
  948. X   {
  949. X      AC_OK,               /* ok to start a server                         */
  950. X      AC_FORK,             /* tried to start a server but fork failed      */
  951. X      AC_ADDRESS,          /* we do not accept requests from that address  */
  952. X      AC_TIME,             /* we do not accept requests at this time       */
  953. X      AC_SERVICE_LIMIT,    /* server limit would be exceeded for this      */
  954. X                           /* service                                      */
  955. X      AC_PROCESS_LIMIT     /* total process limit would be exceeded        */
  956. X   } access_e ;
  957. X
  958. Xextern struct name_value access_code_names[] ;
  959. X
  960. X#define access_explain( code )    nv_get_name( access_code_names, (int) (code) )
  961. X
  962. Xaccess_e access_control() ;
  963. X
  964. X#endif    /* ACCESS_H */
  965. END_OF_FILE
  966. if test 1264 -ne `wc -c <'xinetd/access.h'`; then
  967.     echo shar: \"'xinetd/access.h'\" unpacked with wrong size!
  968. fi
  969. # end of 'xinetd/access.h'
  970. fi
  971. if test -f 'xinetd/log.h' -a "${1}" != "-c" ; then 
  972.   echo shar: Will not clobber existing file \"'xinetd/log.h'\"
  973. else
  974. echo shar: Extracting \"'xinetd/log.h'\" \(1164 characters\)
  975. sed "s/^X//" >'xinetd/log.h' <<'END_OF_FILE'
  976. X/*
  977. X * (c) Copyright 1992 by Panagiotis Tsirigotis
  978. X * All rights reserved.  The file named COPYRIGHT specifies the terms 
  979. X * and conditions for redistribution.
  980. X */
  981. X
  982. X#ifndef LOG_H
  983. X#define LOG_H
  984. X
  985. X/*
  986. X * $Id: log.h,v 6.2 1993/05/19 00:41:55 panos Exp $
  987. X */
  988. X
  989. X/*
  990. X * Meaning of logtype flags:
  991. X *
  992. X *    L_NONE:           no logging
  993. X *    L_FILE:           log output goes to a file
  994. X *    L_SYSLOG:         log output goes to syslog(3)
  995. X *    L_COMMON_FILE:    log output goes to the file specified in defaults
  996. X */
  997. Xtypedef enum { L_NONE = 0, L_FILE, L_SYSLOG, L_COMMON_FILE } logtype_e ;
  998. X
  999. Xstruct filelog
  1000. X{
  1001. X   char        *fl_filename ;                        /* always malloc'ed        */
  1002. X    unsigned fl_soft_limit ;
  1003. X    unsigned fl_hard_limit ;
  1004. X} ;
  1005. X
  1006. X#define FILELOG_SIZE_CONTROL( flp )        ( flp->fl_soft_limit != 0 )    
  1007. X
  1008. X
  1009. Xstruct syslog
  1010. X{
  1011. X   int sl_facility ;
  1012. X    int sl_level ;
  1013. X} ;
  1014. X
  1015. Xstruct log
  1016. X{
  1017. X    logtype_e        l_type ;
  1018. X    struct filelog l_fl ;
  1019. X    struct syslog    l_sl ;
  1020. X} ;
  1021. X
  1022. X#define log_get_type( lp )                    (lp)->l_type
  1023. X#define log_set_type( lp, type )            (lp)->l_type = (type)
  1024. X
  1025. X#define log_filelog( lp )                (&(lp)->l_fl)
  1026. X#define log_syslog( lp )                (&(lp)->l_sl)
  1027. X
  1028. Xstatus_e log_start() ;
  1029. Xvoid log_end() ;
  1030. X
  1031. X#endif    /* LOG_H */
  1032. X
  1033. END_OF_FILE
  1034. if test 1164 -ne `wc -c <'xinetd/log.h'`; then
  1035.     echo shar: \"'xinetd/log.h'\" unpacked with wrong size!
  1036. fi
  1037. # end of 'xinetd/log.h'
  1038. fi
  1039. if test -f 'xinetd/options.h' -a "${1}" != "-c" ; then 
  1040.   echo shar: Will not clobber existing file \"'xinetd/options.h'\"
  1041. else
  1042. echo shar: Extracting \"'xinetd/options.h'\" \(1263 characters\)
  1043. sed "s/^X//" >'xinetd/options.h' <<'END_OF_FILE'
  1044. X/*
  1045. X * (c) Copyright 1992 by Panagiotis Tsirigotis
  1046. X * All rights reserved.  The file named COPYRIGHT specifies the terms 
  1047. X * and conditions for redistribution.
  1048. X */
  1049. X
  1050. Xextern int d_option ;
  1051. Xextern int f_option ;
  1052. Xextern char * f_option_arg_1 ;
  1053. Xextern int filelog_option ;
  1054. Xextern char * filelog_option_arg_1 ;
  1055. Xextern int syslog_option ;
  1056. Xextern char * syslog_option_arg_1 ;
  1057. Xextern int reuse_option ;
  1058. Xextern int limit_option ;
  1059. Xextern unsigned limit_option_arg_1 ;
  1060. Xextern int loop_option ;
  1061. Xextern unsigned loop_option_arg_1 ;
  1062. Xextern int pid_option ;
  1063. Xextern int logprocs_option ;
  1064. Xextern unsigned logprocs_option_arg_1 ;
  1065. Xextern int shutdownprocs_option ;
  1066. Xextern unsigned shutdownprocs_option_arg_1 ;
  1067. Xextern int cc_option ;
  1068. Xextern unsigned cc_option_arg_1 ;
  1069. X
  1070. X#define f_option_arg                   f_option_arg_1
  1071. X#define filelog_option_arg             filelog_option_arg_1
  1072. X#define syslog_option_arg              syslog_option_arg_1
  1073. X#define limit_option_arg               limit_option_arg_1
  1074. X#define loop_option_arg                loop_option_arg_1
  1075. X#define logprocs_option_arg            logprocs_option_arg_1
  1076. X#define shutdownprocs_option_arg       shutdownprocs_option_arg_1
  1077. X#define cc_option_arg                  cc_option_arg_1
  1078. X
  1079. Xextern char *program_name ;
  1080. X
  1081. Xvoid usage() ;
  1082. X
  1083. END_OF_FILE
  1084. if test 1263 -ne `wc -c <'xinetd/options.h'`; then
  1085.     echo shar: \"'xinetd/options.h'\" unpacked with wrong size!
  1086. fi
  1087. # end of 'xinetd/options.h'
  1088. fi
  1089. echo shar: End of archive 2 \(of 31\).
  1090. cp /dev/null ark2isdone
  1091. MISSING=""
  1092. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ; do
  1093.     if test ! -f ark${I}isdone ; then
  1094.     MISSING="${MISSING} ${I}"
  1095.     fi
  1096. done
  1097. if test "${MISSING}" = "" ; then
  1098.     echo You have unpacked all 31 archives.
  1099.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1100. else
  1101.     echo You still need to unpack the following archives:
  1102.     echo "        " ${MISSING}
  1103. fi
  1104. ##  End of shell archive.
  1105. exit 0
  1106.