00001 /* 00002 ** mouse:~ppr/src/include/sysdep.h 00003 ** Copyright 1995--2004, Trinity College Computing Center. 00004 ** Written by David Chappell. 00005 ** 00006 ** Redistribution and use in source and binary forms, with or without 00007 ** modification, are permitted provided that the following conditions are met: 00008 ** 00009 ** * Redistributions of source code must retain the above copyright notice, 00010 ** this list of conditions and the following disclaimer. 00011 ** 00012 ** * Redistributions in binary form must reproduce the above copyright 00013 ** notice, this list of conditions and the following disclaimer in the 00014 ** documentation and/or other materials provided with the distribution. 00015 ** 00016 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 00017 ** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00018 ** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 00019 ** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE 00020 ** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 00021 ** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 00022 ** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 00023 ** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 00024 ** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 00025 ** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 00026 ** POSSIBILITY OF SUCH DAMAGE. 00027 ** 00028 ** Last modified 4 February 2004. 00029 */ 00030 00031 /* 00032 ** Try to define some things properly for the 00033 ** system we are compiling on. 00034 ** 00035 ** Note that this file is not named in any of the make files. That 00036 ** means that if you modify it you will have to do a "make clean". 00037 ** 00038 ** This file is included twice, one before any system header files 00039 ** are included, once after. The first time it is include, the 00040 ** symbols PASS1 is defined, the second time the symbol PASS2 00041 ** is defined. 00042 ** 00043 ** ===================================================================== 00044 ** When PASS1 is defined, this file should define any of the following 00045 ** symbols which may be necessary: 00046 ** ===================================================================== 00047 ** 00048 ** #define HAVE_STRSIGNAL 1 00049 ** strsignal() is in library. If this is not set, 00050 ** PPR will provide one. 00051 ** 00052 ** #define HAVE_SNPRINTF 1 00053 ** snprintf() is in the library. If this is not set, 00054 ** PPR will provide one. 00055 ** 00056 ** #define HAVE_VSNPRINTF 1 00057 ** vsnprintf() is in the library. If this is not set, 00058 ** PPR will provide one. 00059 ** 00060 ** #define HAVE_STATVFS 1 00061 ** Use statvfs() to find disk free space. 00062 ** This implies that sys/statvfs.h should be 00063 ** included. 00064 ** 00065 ** #define HAVE_STATFS 1 00066 ** Use statfs() to find disk free space. 00067 ** 00068 ** #define HAVE_SYS_VFS_H 1 00069 ** Use sys/vfs.h instead of sys/mount.h for statfs(). 00070 ** 00071 ** #define HAVE_TERMIOS_H 1 00072 ** The system has termios.h and its functions. 00073 ** (Currently, all of the systems define this.) 00074 ** 00075 ** #define HAVE_PUTENV 1 00076 ** putenv() is available. 00077 ** 00078 ** #define HAVE_UNSETENV 00079 ** unsetenv() is available. This is used by prune_env(). 00080 ** 00081 ** #define HAVE_SPAWN 1 OK to spawn*() instead of fork() and exec*(). 00082 ** 00083 ** #define HAVE_FORK 1 C library has a working fork() function. 00084 ** (PPR will not be cripled if this is not defined.) 00085 ** 00086 ** #define HAVE_MKFIFO 1 00087 ** Have a working mkfifo() function. 00088 ** 00089 ** #define HAVE_SYS_MODEM_H 1 00090 ** Define this if TIOCM_CTS, TIOCM_DSR, and TIOCM_CAR 00091 ** (values for the TIOCMGET ioctl) are defined in 00092 ** sys/modem.h. 00093 ** 00094 ** #define HAVE_H_ERRNO 1 00095 ** Resolver library functions such as gethostbyname() 00096 ** use h_errno to return error code. 00097 ** 00098 ** #define HAVE_MKSTEMP 1 00099 ** The BSD/GNU function mkstemp() is available. This 00100 ** is a replacement for POSIX mktemp() which avoids 00101 ** symbolic link exploits. 00102 ** 00103 ** #define HAVE_NETGROUP 1 00104 ** Do we have netdb.h and innetgrp()? 00105 ** 00106 ** #define HAVE_INITGROUPS 1 00107 ** Do we have initgroups()? 00108 ** 00109 ** ===================================================================== 00110 ** When PASS2 is defined, this file should define the paths to various 00111 ** programs and correct any mistakes the system include files may 00112 ** have made. 00113 ** ===================================================================== 00114 ** 00115 ** #define SENDMAIL_PATH "/usr/lib/sendmail" 00116 ** The path to sendmail or compatible program 00117 ** If you wish to change this, you must #undef 00118 ** it first since it is already defined as 00119 ** "/usr/lib/sendmail". 00120 ** 00121 ** #define LPR_EXTENSIONS_OSF 1 00122 ** Define this if your lpr has the DEC OSF extensions 00123 ** such as the -I, -j, -K, -N, -o, -O, and -x switches. 00124 ** 00125 ** #define LP_LIST_PRINTERS "/etc/lp/printers" 00126 ** This can be defined as 00127 ** the name of a directory which will contain 00128 ** one entry (either a file or a subdirectory) 00129 ** named after each printer. There is no 00130 ** default value. 00131 ** 00132 ** #define LP_LIST_CLASSES "/etc/lp/classes" 00133 ** This can be defined as the 00134 ** name of a directory which will contain one entry 00135 ** (either a file or a subdirectory) named after 00136 ** each class (group). There is no default 00137 ** value. 00138 ** 00139 ** #define LP_LPSTAT_BROKEN 1 00140 ** This is defined if lpstat is so old that it cannot 00141 ** parse the line "lpstat -o myprinter". 00142 ** 00143 ** #define SAFE_PATH "/bin:/usr/bin" 00144 ** Defines a nice, secure path for filters, interfaces, 00145 ** responders, and other children of ppr and pprd. 00146 ** Other reasonable values are "/bin" 00147 ** and "/bin:/usr/bin:/usr/local/bin". 00148 ** 00149 ** #define LATE_UNLINK 1 00150 ** This should be defined if unlink()ing an open file 00151 ** is not allowed or causes bad things to happen. Though 00152 ** common in Unix implementations, the ability to remove 00153 ** all names for an open file is not a Posix requirement. 00154 ** (This option is not fully implemented.) 00155 ** 00156 ** #define SET_BACKSPACE 1 00157 ** Define this if ppop and ppad should do a stty to set 00158 ** the backspace to control-h when entering interactive 00159 ** mode. 00160 ** 00161 ** #define BIND_ACCESS_BUG 1 00162 ** Define this if bind() can't assign a reserved port 00163 ** number unless the socket was opened by root. 00164 ** 00165 ** #define BROKEN_SETUID_BIT 1 00166 ** Set this if the setuid and setgid bits are ignored. 00167 ** At the moment, this causes ppr and pprd to ommit 00168 ** some startup tests. 00169 ** 00170 ** #define COLON_FILENAME_BUG 1 00171 ** Set this if colons in filenames cause problems. 00172 ** Defining this causes fname_sprintf() to change 00173 ** colons into excalmation points. 00174 */ 00175 00176 /* This doesn't work yet. */ 00177 #ifdef PPR_AUTOCONF 00178 #include "../config.h" 00179 #else 00180 00181 /* 00182 ** These will be the most normal values. 00183 ** They serve as defaults. 00184 */ 00185 #ifdef PASS1 00186 #define HAVE_STRSIGNAL 1 00187 #define HAVE_SNPRINTF 1 00188 #define HAVE_VSNPRINTF 1 00189 #define HAVE_FORK 1 00190 #define HAVE_PUTENV 1 00191 #define HAVE_TERMIOS_H 1 00192 #define HAVE_MKFIFO 1 00193 #define HAVE_NETGROUP 1 00194 #define HAVE_SETREUID 1 00195 #define HAVE_SETREGID 1 00196 #endif 00197 00198 #ifdef PASS2 00199 #define SENDMAIL_PATH "/usr/lib/sendmail" /* mail program for alerting */ 00200 #define SAFE_PATH "/bin:/usr/bin" /* Secure path */ 00201 #endif 00202 00203 /*======================================================================== 00204 ** AT&T System V Release 4.0 for the AT&T WGS series 00205 ** of 386/486 microcomputers. This is the origional 00206 ** platform for PPR. 00207 ** 00208 ** This port has not been tested recently. 00209 ** 00210 ** Sample machine: alice 00211 ========================================================================*/ 00212 #ifdef PPR_ATTWGS 00213 #ifdef PASS1 00214 00215 #undef HAVE_STRSIGNAL 00216 #undef HAVE_SNPRINTF 00217 #undef HAVE_VSNPRINTF 00218 00219 #define BACKSPACE 1 00220 #define HAVE_STATVFS 1 00221 00222 #endif 00223 #ifdef PASS2 00224 00225 /* /bin is a link to /usr/bin */ 00226 #undef SAFE_PATH 00227 #define SAFE_PATH "/usr/bin" 00228 00229 #undef SENDMAIL_PATH 00230 #define SENDMAIL_PATH "/usr/ucblib/sendmail" 00231 00232 /* The LP paths are just a guess!!! */ 00233 #define LP_LIST_PRINTERS "/var/spool/lp/admins/lp/interfaces" 00234 #define LP_LIST_CLASSES "/var/spool/lp/admins/lp/classes" 00235 00236 #ifndef S_ISLNK 00237 #define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) 00238 #endif 00239 00240 /* 00241 ** This Unix has a lot of errors in its include files. 00242 ** We will provide prototypes for a number of functions whose 00243 ** protypes are missing from the include files. 00244 ** For the socket functions, we must include sys/socket.h now 00245 ** in order for the definitions to make sense. 00246 */ 00247 int fchmod(int fildes, mode_t mode); 00248 #include <sys/socket.h> 00249 int getpeername(int s, struct sockaddr *name, int *namelen); 00250 int socket(int domain, int type, int protocol); 00251 int connect(int s, struct sockaddr *name, int namelen); 00252 int setsockopt(int s, int level, int optname, char *optval, int optlen); 00253 int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *execptfds, struct timeval *timeout); 00254 00255 #endif /* PASS2 */ 00256 #endif /* PPR_ATTWGS */ 00257 00258 /*======================================================================== 00259 ** SunOS 5.0 thru 5.5.1 (Solaris 2.0 thru 5.5.1) 00260 ** See below for SunOS 5.6 and later. 00261 ** 00262 ** Sample machine: Lor? 00263 ========================================================================*/ 00264 #ifdef PPR_SUNOS_5 00265 #ifdef PASS1 00266 00267 /* These don't appear until 5.6 */ 00268 #undef HAVE_SNPRINTF 00269 #undef HAVE_VSNPRINTF 00270 00271 #define HAVE_STATVFS 1 00272 00273 #endif 00274 #ifdef PASS2 00275 00276 /* /bin is a link to /usr/bin */ 00277 #undef SAFE_PATH 00278 #define SAFE_PATH "/usr/bin" 00279 00280 #define LP_LIST_PRINTERS "/etc/lp/printers" 00281 #define LP_LIST_CLASSES "/etc/lp/classes" 00282 00283 /* Work around difference in when access 00284 to reserved ports is permitted. */ 00285 #define BIND_ACCESS_BUG 1 00286 00287 #endif /* PASS2 */ 00288 #endif /* PPR_SUNOS_5 */ 00289 00290 /*======================================================================== 00291 ** NetBSD 1.0 00292 ** 00293 ** Sample machine: 00294 ========================================================================*/ 00295 #ifdef PPR_NETBSD 00296 #ifdef PASS1 00297 00298 #define HAVE_STATFS 1 00299 #define HAVE_INITGROUPS 1 00300 00301 #endif 00302 #ifdef PASS2 00303 00304 #define setsid() setpgrp(0, getpid()) /* setsid() (Posix?) is missing */ 00305 #undef SENDMAIL_PATH 00306 #define SENDMAIL_PATH "/usr/sbin/sendmail" 00307 00308 #endif /* PASS2 */ 00309 #endif /* PPR_NETBSD */ 00310 00311 /*======================================================================== 00312 ** Linux 00313 ** Linux for i386 is the principal development platform. 00314 ** Linux for DEC Alpha has received some testing at Trinity College. 00315 ** 00316 ** Sample machine: Mouse 00317 ========================================================================*/ 00318 #ifdef PPR_LINUX 00319 #ifdef PASS1 00320 00321 #define HAVE_STATFS 1 00322 #define HAVE_SYS_VFS_H 1 00323 #define HAVE_UNSETENV 1 00324 #define HAVE_H_ERRNO 1 00325 #define HAVE_MKSTEMP 1 00326 #define HAVE_INITGROUPS 1 00327 00328 /* This is to test the substitute code which normally isn't 00329 used on Linux systems. */ 00330 #if 0 00331 #undef HAVE_STRSIGNAL 00332 #undef HAVE_SNPRINTF 00333 #undef HAVE_VSNPRINTF 00334 #undef HAVE_MKSTEMP 00335 #endif 00336 00337 #endif 00338 #ifdef PASS2 00339 00340 #undef SENDMAIL_PATH 00341 #define SENDMAIL_PATH "/usr/sbin/sendmail" 00342 00343 /* uClibc doesn't support NIS. We have to put this in pass 2 because 00344 no uClibc headers have been read during pass 1. */ 00345 #ifdef __UCLIBC__ 00346 #undef HAVE_NETGROUP 00347 #endif 00348 00349 /* Save for dietlibc. */ 00350 #ifdef __dietlibc__ 00351 #undef HAVE_NETGROUP 00352 #endif 00353 00354 #endif /* PASS2 */ 00355 #endif /* PPR_LINUX */ 00356 00357 /*======================================================================== 00358 ** SunOS 4.1.3_U1 00359 ** 00360 ** Sample machine: 00361 ========================================================================*/ 00362 #ifdef PPR_SUNOS4 00363 #ifdef PASS1 00364 00365 #undef HAVE_STRSIGNAL 00366 #undef HAVE_SNPRINTF 00367 #undef HAVE_VSNPRINTF 00368 #define HAVE_STATFS 1 00369 #define HAVE_SYS_VFS_H 1 00370 00371 #endif 00372 #ifdef PASS2 00373 00374 /* /bin is a link to /usr/bin */ 00375 #undef SAFE_PATH 00376 #define SAFE_PATH "/usr/bin" 00377 00378 #ifndef WCOREDUMP 00379 #define WCOREDUMP(stat) ((stat)&0200) 00380 #endif 00381 00382 #define difftime(t1,t0) ((double)((t1)-(t0))) 00383 00384 #define memmove(ARG1,ARG2,LENGTH) bcopy(ARG1,ARG2,LENGTH) 00385 00386 #endif /* PASS2 */ 00387 #endif /* PPR_SUNOS4 */ 00388 00389 /*======================================================================== 00390 ** OSF/1 3.2 or Digital Unix 4.0 for DEC Alpha 00391 ** 00392 ** Sample machine: Heart 00393 ========================================================================*/ 00394 #ifdef PPR_OSF1 00395 #ifdef PASS1 00396 00397 #undef HAVE_STRSIGNAL 00398 #undef HAVE_SNPRINTF 00399 #undef HAVE_VSNPRINTF 00400 #define HAVE_STATVFS 1 00401 00402 #endif 00403 #ifdef PASS2 00404 00405 /* /bin is a link to /usr/bin */ 00406 #undef SAFE_PATH 00407 #define SAFE_PATH "/usr/bin" 00408 00409 /* It looks like lp is just a front end to lpr: */ 00410 #define LPR_EXTENSIONS_OSF 1 00411 00412 #endif /* PASS2 */ 00413 #endif /* PPR_OSF1 */ 00414 00415 /*======================================================================== 00416 ** SGI IRIX 6.3 00417 ** 00418 ** Sample machine: Ermac 00419 ========================================================================*/ 00420 #ifdef PPR_IRIX 00421 #ifdef PASS1 00422 00423 #undef HAVE_STRSIGNAL 00424 #undef HAVE_SNPRINTF 00425 #undef HAVE_VSNPRINTF 00426 #define HAVE_STATVFS 1 /* we have statvfs() */ 00427 00428 #endif 00429 #ifdef PASS2 00430 00431 /* /bin is a link to /usr/bin */ 00432 #undef SAFE_PATH 00433 #define SAFE_PATH "/usr/bin" 00434 00435 #define LP_LIST_PRINTERS "/var/spool/lp/interface" 00436 #define LP_LIST_CLASSES "/var/spool/lp/class" 00437 00438 #endif 00439 #endif /* PPR_IRIX */ 00440 00441 /*======================================================================== 00442 ** MS-Windows 95 or NT with Cygwin 1.1 00443 ** Sample machine: Jane 00444 ========================================================================*/ 00445 #ifdef PPR_CYGWIN 00446 #ifdef PASS1 00447 00448 #undef HAVE_SNPRINTF 00449 #undef HAVE_VSNPRINTF 00450 #undef HAVE_MKFIFO 00451 #undef HAVE_NETGROUP 00452 00453 #endif 00454 #ifdef PASS2 00455 00456 #define WCOREDUMP(a) 0 /* not supported? */ 00457 #define BROKEN_SETUID_BIT 1 00458 #define COLON_FILENAME_BUG 1 00459 #undef SAFE_PATH 00460 #define SAFE_PATH "/bin:/usr/bin:/winnt/system32:/winnt" 00461 00462 int seteuid(uid_t); /* not defined in header files */ 00463 00464 #define setreuid(a,b) setuid(a) 00465 #define setregid(a,b) setgid(a) 00466 00467 #endif /* PASS2 */ 00468 #endif /* PPR_CYGWIN */ 00469 00470 /*======================================================================== 00471 ** MS-Windows 95/NT with AT&T UWIN 2.9 00472 ** Sample machine: Jane 00473 ========================================================================*/ 00474 #ifdef PPR_UWIN 00475 #ifdef PASS1 00476 00477 /* As of 2.25: */ 00478 #undef HAVE_STRSIGNAL 00479 00480 #endif 00481 #ifdef PASS2 00482 00483 /* Missing from 1.51: */ 00484 #define WCOREDUMP(a) 0 00485 00486 /* This is missing from UWIN 1.51: */ 00487 #define setegid(x) 0 00488 00489 /* #define BROKEN_SETUID_BIT 1 */ 00490 00491 #define COLON_FILENAME_BUG 1 00492 00493 #undef SAFE_PATH 00494 #define SAFE_PATH "/usr/bin" 00495 00496 #endif /* PASS2 */ 00497 #endif /* __UWIN__ */ 00498 00499 /*======================================================================== 00500 ** HP-UX 10.x 00501 ** 00502 ** Sample machine: Micro1 00503 ========================================================================*/ 00504 #ifdef PPR_HPUX 00505 #ifdef PASS1 00506 00507 #undef HAVE_STRSIGNAL 00508 #undef HAVE_SNPRINTF 00509 #undef HAVE_VSNPRINTF 00510 #define HAVE_STATVFS 1 00511 #define HAVE_SYS_MODEM_H 1 00512 00513 #endif 00514 #ifdef PASS2 00515 00516 /* /bin is a link to /usr/bin */ 00517 #undef SAFE_PATH 00518 #define SAFE_PATH "/usr/bin" 00519 00520 #define LP_LPSTAT_BROKEN 1 00521 #define LP_LIST_PRINTERS "/etc/lp/interface" 00522 #define LP_LIST_CLASSES "/etc/lp/class" 00523 00524 #define seteuid(x) setresuid(-1,(x),-1) 00525 #define setegid(x) setresgid(-1,(x),-1) 00526 #define setreuid(x,y) setresuid((x),(y),-1) 00527 #define setregid(x,y) setresgid((x),(y),-1) 00528 00529 #endif /* PASS2 */ 00530 #endif /* PPR_HPUX */ 00531 00532 /*======================================================================== 00533 ** DEC ULTRIX 4.4 (RISC DECstation, similiar to OSF1, but older) 00534 ** 00535 ** Sample machine: 00536 ========================================================================*/ 00537 #ifdef PPR_ULTRIX 00538 #ifdef PASS1 00539 00540 #undef HAVE_STRSIGNAL 00541 #undef HAVE_SNPRINTF 00542 #undef HAVE_VSNPRINTF 00543 00544 #endif 00545 #ifdef PASS2 00546 00547 #define LPR_EXTENSIONS_OSF 1 00548 00549 #ifndef S_ISLNK 00550 #define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) 00551 #endif 00552 00553 #ifndef WCOREDUMP 00554 #define WCOREDUMP(a) 0 00555 #endif 00556 00557 #endif /* PASS2 */ 00558 #endif /* PPR_ULTRIX */ 00559 00560 /*======================================================================== 00561 ** SunOS 5.6 thru 5.7 (Solaris 2.6 thru 7) 00562 ** 00563 ** Sample machine: shakti 00564 ========================================================================*/ 00565 #ifdef PPR_SUNOS_5_6 00566 #ifdef PASS1 00567 00568 #define HAVE_STATVFS 1 00569 00570 #endif 00571 #ifdef PASS2 00572 00573 /* /bin is a link to /usr/bin */ 00574 #undef SAFE_PATH 00575 #define SAFE_PATH "/usr/bin" 00576 00577 #define LP_LIST_PRINTERS "/etc/lp/printers" 00578 #define LP_LIST_CLASSES "/etc/lp/classes" 00579 00580 /* Work around difference in when access 00581 to reserved ports is permitted. */ 00582 #define BIND_ACCESS_BUG 1 00583 00584 #endif /* PASS2 */ 00585 #endif /* PPR_SUNOS_5_6 */ 00586 00587 /*======================================================================== 00588 ** FreeBSD 3.1R 00589 ** 00590 ** Sample machine: 00591 ========================================================================*/ 00592 #ifdef PPR_FREEBSD 00593 #ifdef PASS1 00594 00595 #undef HAVE_STRSIGNAL 00596 #define HAVE_STATFS 1 00597 #define HAVE_INITGROUPS 1 00598 00599 #endif 00600 #ifdef PASS2 00601 00602 #undef SAFE_PATH 00603 #define SAFE_PATH "/bin:/usr/bin:/usr/local/bin" 00604 #undef SENDMAIL_PATH 00605 #define SENDMAIL_PATH "/usr/sbin/sendmail" 00606 00607 #endif /* PASS2 */ 00608 #endif /* PPR_FREEBSD */ 00609 00610 /*======================================================================== 00611 ** Darwin (MacOS 10.x) 00612 ========================================================================*/ 00613 #ifdef PPR_DARWIN 00614 #ifdef PASS1 00615 #undef HAVE_STRSIGNAL 00616 #define HAVE_UNSETENV 1 00617 #endif 00618 00619 #ifdef PASS2 00620 #undef SAFE_PATH 00621 #define SAFE_PATH "/sw/bin:/usr/bin:/bin" 00622 00623 #endif 00624 #endif /* PPR_DARWIN */ 00625 00626 /*======================================================================== 00627 ** Win32 testing on Linux 00628 ========================================================================*/ 00629 #ifdef PPR_WIN32_TESTING 00630 #ifdef PASS1 00631 00632 #undef HAVE_MKFIFO 00633 #undef HAVE_STATFS 00634 #undef HAVE_SYS_VFS_H 00635 #undef HAVE_UNSETENV 00636 #undef SENDMAIL_PATH 00637 #define SENDMAIL_PATH "/usr/sbin/sendmail" 00638 #endif 00639 #ifdef PASS2 00640 00641 #define COLON_FILENAME_BUG 1 00642 00643 #endif /* PASS2 */ 00644 #endif /* WIN32_TESTING */ 00645 00646 /*======================================================================*/ 00647 00648 #endif /* Not autoconf */ 00649 00650 /* end of file */ 00651