public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: c/4757: GCC 3.0.1 fails to compile when -fschedule-insns option is specified
@ 2002-04-11 14:16 rth
  0 siblings, 0 replies; 3+ messages in thread
From: rth @ 2002-04-11 14:16 UTC (permalink / raw)
  To: Matt.Rhodes, gcc-bugs, gcc-prs, nobody

Synopsis: GCC 3.0.1 fails to compile when -fschedule-insns option is specified

State-Changed-From-To: open->closed
State-Changed-By: rth
State-Changed-When: Thu Apr 11 14:16:41 2002
State-Changed-Why:
    Fixed for gcc 3.1.

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=4757


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: c/4757: GCC 3.0.1 fails to compile when -fschedule-insns option is specified
@ 2002-04-11  2:46 Reichelt
  0 siblings, 0 replies; 3+ messages in thread
From: Reichelt @ 2002-04-11  2:46 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

The following reply was made to PR c/4757; it has been noted by GNATS.

From: Reichelt <reichelt@igpm.rwth-aachen.de>
To: gcc-gnats@gcc.gnu.org, Matt.Rhodes@synergex.com, gcc-bugs@gcc.gnu.org,
        nobody@gcc.gnu.org
Cc:  
Subject: Re: c/4757: GCC 3.0.1 fails to compile when -fschedule-insns option is specified
Date: Thu, 11 Apr 2002 12:11:44 +0200

 Hi,
 
 the bug seems to be fixed in gcc 3.1 (as of 20020408).
 I checked it on a i686-pc-linux-gnu box.
 gcc 3.0.4 still crashes, however.
 
 Greetings,
 Volker Reichelt
 
 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=4757
 
 


^ permalink raw reply	[flat|nested] 3+ messages in thread

* c/4757: GCC 3.0.1 fails to compile when -fschedule-insns option is specified
@ 2001-10-31  9:56 Matt.Rhodes
  0 siblings, 0 replies; 3+ messages in thread
From: Matt.Rhodes @ 2001-10-31  9:56 UTC (permalink / raw)
  To: gcc-gnats

>Number:         4757
>Category:       c
>Synopsis:       GCC 3.0.1 fails to compile when -fschedule-insns option is specified
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          rejects-legal
>Submitter-Id:   net
>Arrival-Date:   Wed Oct 31 09:56:01 PST 2001
>Closed-Date:
>Last-Modified:
>Originator:     Matt Rhodes
>Release:        gcc version 3.0.1
>Organization:
>Environment:
Red Hat Linux 7.1 running on a Pentium 120.
>Description:
gcc -v -O3 -finline-functions -funroll-loops 
-fomit-frame-pointer -fexpensive-optimizations 
-fschedule-insns -fschedule-insns2 -fstrength-reduce 
-fno-strict-aliasing -trigraphs -march=pentium 
-Wreturn-type -Wcast-align -Wchar_subscripts 
-WSequence_point -Winline -fPIC -o irecovr.o -c irecovr.c
Reading specs from /usr/lib/gcc-lib/i386-pld-linux/3.0.1/specs
Configured with: ../configure --prefix=/usr --infodir=/usr/share/info --mandir=/
usr/share/man --enable-shared --enable-threads=posix --enable-haifa --enable-lan
guages=c,c++,f77,gcov,java,objc --enable-long-long --enable-namespaces --enable-
multilib --with-gnu-as --with-gnu-ld --with-system-zlib --with-slibdir=/lib --wi
thout-x i386-pld-linux
Thread model: posix
gcc version 3.0.1
 /usr/lib/gcc-lib/i386-pld-linux/3.0.1/cpp0 -lang-c -v -D__GNUC__=3 -D__GNUC_MIN
OR__=0 -D__GNUC_PATCHLEVEL__=1 -D__ELF__ -Dunix -Dlinux -D__ELF__ -D__unix__ -D_
_linux__ -D__unix -D__linux -Asystem=posix -trigraphs -D__OPTIMIZE__ -D__STDC_HO
STED__=1 -Wreturn-type -Wcast-align -Wchar_subscripts -WSequence_point -Winline 
-Acpu=i386 -Amachine=i386 -Di386 -D__i386 -D__i386__ -D__i586 -D__i586__ -D__pen
tium -D__pentium__ -D__tune_i586__ -D__tune_pentium__ -D__PIC__ -D__pic__ irecov
r.c irecovr.i
GNU CPP version 3.0.1 (cpplib) (i386 Linux/ELF)
ignoring nonexistent directory "/usr/i386-pld-linux/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/include
 /usr/lib/gcc-lib/i386-pld-linux/3.0.1/include
 /usr/include
End of search list.
 /usr/lib/gcc-lib/i386-pld-linux/3.0.1/cc1 -fpreprocessed irecovr.i -quiet -dump
base irecovr.c -march=pentium -O3 -Wreturn-type -Wcast-align -Wchar_subscripts -
WSequence_point -Winline -version -finline-functions -funroll-loops -fomit-frame
-pointer -fexpensive-optimizations -fschedule-insns -fschedule-insns2 -fstrength
-reduce -fno-strict-aliasing -fPIC -o irecovr.s
GNU CPP version 3.0.1 (cpplib) (i386 Linux/ELF)
GNU C version 3.0.1 (i386-pld-linux)
        compiled by GNU C version 3.0.1.
irecovr.c: In function `main':
irecovr.c:84: warning: can't inline call to `to_intreg'
irecovr.c:344: warning: called from here
irecovr.c: In function `scandata':
irecovr.c:2485: Unable to find a register to spill in class `AREG'.
irecovr.c:2485: This is the insn:
(insn 181 180 183 (parallel[ 
            (set (reg:SI 1 edx [102])
                (div:SI (reg/v:SI 60)
                    (reg/v:SI 45)))
            (set (reg:SI 103)
                (mod:SI (reg/v:SI 60)
                    (reg/v:SI 45)))
            (clobber (reg:CC 17 flags))
        ] ) 176 {*divmodsi4_nocltd} (insn_list 180 (nil))
    (expr_list:REG_EQUIV (mem/f:SI (plus:SI (reg:SI 3 ebx)
                (const:SI (unspec:SI[ 
                            (symbol_ref/v:SI ("totrecs"))
                        ]  7))) 0)
        (expr_list:REG_DEAD (reg/v:SI 60)
            (expr_list:REG_DEAD (reg/v:SI 45)
                (expr_list:REG_UNUSED (reg:SI 103)
                    (expr_list:REG_UNUSED (reg:CC 17 flags)
                        (nil)))))))
irecovr.c:2485: confused by earlier errors, bailing out
>How-To-Repeat:
See file attachment.
>Fix:
Remove the -fschedule-insns compiler option.
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: text/plain; name="irecovr.i"
Content-Disposition: inline; filename="irecovr.i"

# 30 "irecovr.c"
# 1 "iutldef.h" 1
# 27 "iutldef.h"
# 1 "isam.h" 1
# 31 "isam.h"
# 1 "common.h" 1
# 38 "common.h"
# 1 "sysdep.h" 1
# 39 "common.h" 2



# 1 "ctypes.h" 1
# 51 "ctypes.h"
extern int _dblctype_[256];
# 43 "common.h" 2





# 1 "/usr/include/fcntl.h" 1 3
# 26 "/usr/include/fcntl.h" 3
# 1 "/usr/include/features.h" 1 3
# 283 "/usr/include/features.h" 3
# 1 "/usr/include/sys/cdefs.h" 1 3
# 284 "/usr/include/features.h" 2 3
# 311 "/usr/include/features.h" 3
# 1 "/usr/include/gnu/stubs.h" 1 3
# 312 "/usr/include/features.h" 2 3
# 27 "/usr/include/fcntl.h" 2 3






# 1 "/usr/include/bits/fcntl.h" 1 3
# 25 "/usr/include/bits/fcntl.h" 3
# 1 "/usr/include/sys/types.h" 1 3
# 26 "/usr/include/sys/types.h" 3
# 1 "/usr/include/features.h" 1 3
# 27 "/usr/include/sys/types.h" 2 3



# 1 "/usr/include/bits/types.h" 1 3
# 26 "/usr/include/bits/types.h" 3
# 1 "/usr/include/features.h" 1 3
# 27 "/usr/include/bits/types.h" 2 3


# 1 "/usr/lib/gcc-lib/i386-pld-linux/3.0.1/include/stddef.h" 1 3
# 199 "/usr/lib/gcc-lib/i386-pld-linux/3.0.1/include/stddef.h" 3
typedef unsigned int size_t;
# 30 "/usr/include/bits/types.h" 2 3


typedef unsigned char __u_char;
typedef unsigned short __u_short;
typedef unsigned int __u_int;
typedef unsigned long __u_long;

__extension__ typedef unsigned long long int __u_quad_t;
__extension__ typedef long long int __quad_t;
# 49 "/usr/include/bits/types.h" 3
typedef signed char __int8_t;
typedef unsigned char __uint8_t;
typedef signed short int __int16_t;
typedef unsigned short int __uint16_t;
typedef signed int __int32_t;
typedef unsigned int __uint32_t;

__extension__ typedef signed long long int __int64_t;
__extension__ typedef unsigned long long int __uint64_t;

typedef __quad_t *__qaddr_t;

typedef __u_quad_t __dev_t;
typedef __u_int __uid_t;
typedef __u_int __gid_t;
typedef __u_long __ino_t;
typedef __u_int __mode_t;
typedef __u_int __nlink_t;
typedef long int __off_t;
typedef __quad_t __loff_t;
typedef int __pid_t;
typedef int __ssize_t;
typedef __u_long __rlim_t;
typedef __u_quad_t __rlim64_t;
typedef __u_int __id_t;

typedef struct
  {
    int __val[2];
  } __fsid_t;


typedef int __daddr_t;
typedef char *__caddr_t;
typedef long int __time_t;
typedef unsigned int __useconds_t;
typedef long int __suseconds_t;
typedef long int __swblk_t;

typedef long int __clock_t;


typedef int __clockid_t;


typedef int __timer_t;






typedef int __key_t;


typedef unsigned short int __ipc_pid_t;



typedef long int __blksize_t;




typedef long int __blkcnt_t;
typedef __quad_t __blkcnt64_t;


typedef __u_long __fsblkcnt_t;
typedef __u_quad_t __fsblkcnt64_t;


typedef __u_long __fsfilcnt_t;
typedef __u_quad_t __fsfilcnt64_t;


typedef __u_quad_t __ino64_t;


typedef __loff_t __off64_t;


typedef long int __t_scalar_t;
typedef unsigned long int __t_uscalar_t;


typedef int __intptr_t;


typedef unsigned int __socklen_t;




# 1 "/usr/include/bits/pthreadtypes.h" 1 3
# 23 "/usr/include/bits/pthreadtypes.h" 3
# 1 "/usr/include/bits/sched.h" 1 3
# 68 "/usr/include/bits/sched.h" 3
struct __sched_param
  {
    int __sched_priority;
  };
# 24 "/usr/include/bits/pthreadtypes.h" 2 3


struct _pthread_fastlock
{
  long int __status;
  int __spinlock;

};



typedef struct _pthread_descr_struct *_pthread_descr;





typedef struct __pthread_attr_s
{
  int __detachstate;
  int __schedpolicy;
  struct __sched_param __schedparam;
  int __inheritsched;
  int __scope;
  size_t __guardsize;
  int __stackaddr_set;
  void *__stackaddr;
  size_t __stacksize;
} pthread_attr_t;



typedef struct
{
  struct _pthread_fastlock __c_lock;
  _pthread_descr __c_waiting;
} pthread_cond_t;



typedef struct
{
  int __dummy;
} pthread_condattr_t;


typedef unsigned int pthread_key_t;





typedef struct
{
  int __m_reserved;
  int __m_count;
  _pthread_descr __m_owner;
  int __m_kind;
  struct _pthread_fastlock __m_lock;
} pthread_mutex_t;



typedef struct
{
  int __mutexkind;
} pthread_mutexattr_t;



typedef int pthread_once_t;
# 140 "/usr/include/bits/pthreadtypes.h" 3
typedef unsigned long int pthread_t;
# 144 "/usr/include/bits/types.h" 2 3
# 31 "/usr/include/sys/types.h" 2 3


typedef __u_char u_char;
typedef __u_short u_short;
typedef __u_int u_int;
typedef __u_long u_long;
typedef __quad_t quad_t;
typedef __u_quad_t u_quad_t;
typedef __fsid_t fsid_t;


typedef __loff_t loff_t;



typedef __ino_t ino_t;
# 58 "/usr/include/sys/types.h" 3
typedef __dev_t dev_t;




typedef __gid_t gid_t;




typedef __mode_t mode_t;




typedef __nlink_t nlink_t;




typedef __uid_t uid_t;





typedef __off_t off_t;
# 96 "/usr/include/sys/types.h" 3
typedef __pid_t pid_t;




typedef __id_t id_t;




typedef __ssize_t ssize_t;




typedef __daddr_t daddr_t;
typedef __caddr_t caddr_t;



typedef __key_t key_t;
# 126 "/usr/include/sys/types.h" 3
# 1 "/usr/include/time.h" 1 3
# 67 "/usr/include/time.h" 3
# 1 "/usr/include/bits/types.h" 1 3
# 68 "/usr/include/time.h" 2 3


typedef __time_t time_t;
# 79 "/usr/include/time.h" 3
# 1 "/usr/include/bits/types.h" 1 3
# 80 "/usr/include/time.h" 2 3


typedef __clockid_t clockid_t;
# 91 "/usr/include/time.h" 3
# 1 "/usr/include/bits/types.h" 1 3
# 92 "/usr/include/time.h" 2 3


typedef __timer_t timer_t;
# 127 "/usr/include/sys/types.h" 2 3
# 140 "/usr/include/sys/types.h" 3
# 1 "/usr/lib/gcc-lib/i386-pld-linux/3.0.1/include/stddef.h" 1 3
# 141 "/usr/include/sys/types.h" 2 3



typedef unsigned long int ulong;
typedef unsigned short int ushort;
typedef unsigned int uint;
# 184 "/usr/include/sys/types.h" 3
typedef int int8_t __attribute__ ((__mode__ (__QI__)));
typedef int int16_t __attribute__ ((__mode__ (__HI__)));
typedef int int32_t __attribute__ ((__mode__ (__SI__)));
typedef int int64_t __attribute__ ((__mode__ (__DI__)));


typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__)));
typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__)));
typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__)));
typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__)));

typedef int register_t __attribute__ ((__mode__ (__word__)));
# 206 "/usr/include/sys/types.h" 3
# 1 "/usr/include/endian.h" 1 3
# 22 "/usr/include/endian.h" 3
# 1 "/usr/include/features.h" 1 3
# 23 "/usr/include/endian.h" 2 3
# 37 "/usr/include/endian.h" 3
# 1 "/usr/include/bits/endian.h" 1 3
# 38 "/usr/include/endian.h" 2 3
# 207 "/usr/include/sys/types.h" 2 3


# 1 "/usr/include/sys/select.h" 1 3
# 25 "/usr/include/sys/select.h" 3
# 1 "/usr/include/features.h" 1 3
# 26 "/usr/include/sys/select.h" 2 3


# 1 "/usr/include/bits/types.h" 1 3
# 29 "/usr/include/sys/select.h" 2 3


# 1 "/usr/include/bits/select.h" 1 3
# 32 "/usr/include/sys/select.h" 2 3


# 1 "/usr/include/bits/sigset.h" 1 3
# 23 "/usr/include/bits/sigset.h" 3
typedef int __sig_atomic_t;




typedef struct
  {
    unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
  } __sigset_t;
# 35 "/usr/include/sys/select.h" 2 3



typedef __sigset_t sigset_t;




# 1 "/usr/include/time.h" 1 3
# 106 "/usr/include/time.h" 3
struct timespec
  {
    long int tv_sec;
    long int tv_nsec;
  };
# 44 "/usr/include/sys/select.h" 2 3

# 1 "/usr/include/bits/time.h" 1 3
# 63 "/usr/include/bits/time.h" 3
# 1 "/usr/include/bits/types.h" 1 3
# 64 "/usr/include/bits/time.h" 2 3



struct timeval
  {
    __time_t tv_sec;
    __suseconds_t tv_usec;
  };
# 46 "/usr/include/sys/select.h" 2 3



typedef long int __fd_mask;







typedef struct
  {






    __fd_mask __fds_bits[1024 / (8 * sizeof (__fd_mask))];


  } fd_set;






typedef __fd_mask fd_mask;
# 96 "/usr/include/sys/select.h" 3
extern int select (int __nfds, fd_set *__restrict __readfds,
                   fd_set *__restrict __writefds,
                   fd_set *__restrict __exceptfds,
                   struct timeval *__restrict __timeout) ;
# 210 "/usr/include/sys/types.h" 2 3


# 1 "/usr/include/sys/sysmacros.h" 1 3
# 213 "/usr/include/sys/types.h" 2 3
# 224 "/usr/include/sys/types.h" 3
typedef __blkcnt_t blkcnt_t;



typedef __fsblkcnt_t fsblkcnt_t;



typedef __fsfilcnt_t fsfilcnt_t;
# 26 "/usr/include/bits/fcntl.h" 2 3
# 136 "/usr/include/bits/fcntl.h" 3
struct flock
  {
    short int l_type;
    short int l_whence;

    __off_t l_start;
    __off_t l_len;




    __pid_t l_pid;
  };
# 34 "/usr/include/fcntl.h" 2 3
# 60 "/usr/include/fcntl.h" 3
extern int fcntl (int __fd, int __cmd, ...) ;





extern int open (__const char *__file, int __oflag, ...) ;
# 83 "/usr/include/fcntl.h" 3
extern int creat (__const char *__file, __mode_t __mode) ;
# 112 "/usr/include/fcntl.h" 3
extern int lockf (int __fd, int __cmd, __off_t __len) ;
# 49 "common.h" 2



# 1 "/usr/include/memory.h" 1 3
# 26 "/usr/include/memory.h" 3
# 1 "/usr/include/features.h" 1 3
# 27 "/usr/include/memory.h" 2 3



# 1 "/usr/include/string.h" 1 3
# 26 "/usr/include/string.h" 3
# 1 "/usr/include/features.h" 1 3
# 27 "/usr/include/string.h" 2 3






# 1 "/usr/lib/gcc-lib/i386-pld-linux/3.0.1/include/stddef.h" 1 3
# 34 "/usr/include/string.h" 2 3



extern void *memcpy (void *__restrict __dest,
                     __const void *__restrict __src, size_t __n) ;


extern void *memmove (void *__dest, __const void *__src, size_t __n)
            ;





extern void *memccpy (void *__restrict __dest, __const void *__restrict __src,
                      int __c, size_t __n)
            ;




extern void *memset (void *__s, int __c, size_t __n) ;


extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)
             __attribute__ ((__pure__));


extern void *memchr (__const void *__s, int __c, size_t __n)
              __attribute__ ((__pure__));
# 77 "/usr/include/string.h" 3
extern char *strcpy (char *__restrict __dest, __const char *__restrict __src)
            ;

extern char *strncpy (char *__restrict __dest,
                      __const char *__restrict __src, size_t __n) ;


extern char *strcat (char *__restrict __dest, __const char *__restrict __src)
            ;

extern char *strncat (char *__restrict __dest, __const char *__restrict __src,
                      size_t __n) ;


extern int strcmp (__const char *__s1, __const char *__s2)
             __attribute__ ((__pure__));

extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)
             __attribute__ ((__pure__));


extern int strcoll (__const char *__s1, __const char *__s2)
             __attribute__ ((__pure__));

extern size_t strxfrm (char *__restrict __dest,
                       __const char *__restrict __src, size_t __n) ;
# 120 "/usr/include/string.h" 3
extern char *strdup (__const char *__s) __attribute__ ((__malloc__));
# 155 "/usr/include/string.h" 3
extern char *strchr (__const char *__s, int __c) __attribute__ ((__pure__));

extern char *strrchr (__const char *__s, int __c) __attribute__ ((__pure__));
# 167 "/usr/include/string.h" 3
extern size_t strcspn (__const char *__s, __const char *__reject)
             __attribute__ ((__pure__));


extern size_t strspn (__const char *__s, __const char *__accept)
             __attribute__ ((__pure__));

extern char *strpbrk (__const char *__s, __const char *__accept)
             __attribute__ ((__pure__));

extern char *strstr (__const char *__haystack, __const char *__needle)
             __attribute__ ((__pure__));
# 187 "/usr/include/string.h" 3
extern char *strtok (char *__restrict __s, __const char *__restrict __delim)
            ;



extern char *__strtok_r (char *__restrict __s,
                         __const char *__restrict __delim,
                         char **__restrict __save_ptr) ;

extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim,
                       char **__restrict __save_ptr) ;
# 218 "/usr/include/string.h" 3
extern size_t strlen (__const char *__s) __attribute__ ((__pure__));
# 229 "/usr/include/string.h" 3
extern char *strerror (int __errnum) ;



extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) ;




extern void __bzero (void *__s, size_t __n) ;



extern void bcopy (__const void *__src, void *__dest, size_t __n) ;


extern void bzero (void *__s, size_t __n) ;


extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
             __attribute__ ((__pure__));


extern char *index (__const char *__s, int __c) __attribute__ ((__pure__));


extern char *rindex (__const char *__s, int __c) __attribute__ ((__pure__));



extern int ffs (int __i) __attribute__ ((const));
# 272 "/usr/include/string.h" 3
extern int strcasecmp (__const char *__s1, __const char *__s2)
             __attribute__ ((__pure__));


extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
             __attribute__ ((__pure__));
# 294 "/usr/include/string.h" 3
extern char *strsep (char **__restrict __stringp,
                     __const char *__restrict __delim) ;
# 356 "/usr/include/string.h" 3
# 1 "/usr/include/bits/string.h" 1 3
# 357 "/usr/include/string.h" 2 3


# 1 "/usr/include/bits/string2.h" 1 3
# 52 "/usr/include/bits/string2.h" 3
# 1 "/usr/include/endian.h" 1 3
# 53 "/usr/include/bits/string2.h" 2 3
# 1 "/usr/include/bits/types.h" 1 3
# 54 "/usr/include/bits/string2.h" 2 3
# 371 "/usr/include/bits/string2.h" 3
extern void *__rawmemchr (const void *__s, int __c);
# 395 "/usr/include/bits/string2.h" 3
extern __inline char *__strcpy_small (char *, __uint16_t, __uint16_t,
                                      __uint32_t, __uint32_t, size_t);
extern __inline char *
__strcpy_small (char *__dest,
                __uint16_t __src0_2, __uint16_t __src4_2,
                __uint32_t __src0_4, __uint32_t __src4_4,
                size_t __srclen)
{
  union {
    __uint32_t __ui;
    __uint16_t __usi;
    unsigned char __uc;
  } *__u = (void *) __dest;
  switch ((unsigned int) __srclen)
    {
    case 1:
      __u->__uc = '\0';
      break;
    case 2:
      __u->__usi = __src0_2;
      break;
    case 3:
      __u->__usi = __src0_2;
      __u = __extension__ ((void *) __u + 2);
      __u->__uc = '\0';
      break;
    case 4:
      __u->__ui = __src0_4;
      break;
    case 5:
      __u->__ui = __src0_4;
      __u = __extension__ ((void *) __u + 4);
      __u->__uc = '\0';
      break;
    case 6:
      __u->__ui = __src0_4;
      __u = __extension__ ((void *) __u + 4);
      __u->__usi = __src4_2;
      break;
    case 7:
      __u->__ui = __src0_4;
      __u = __extension__ ((void *) __u + 4);
      __u->__usi = __src4_2;
      __u = __extension__ ((void *) __u + 2);
      __u->__uc = '\0';
      break;
    case 8:
      __u->__ui = __src0_4;
      __u = __extension__ ((void *) __u + 4);
      __u->__ui = __src4_4;
      break;
    }
  return __dest;
}
# 873 "/usr/include/bits/string2.h" 3
extern __inline size_t __strcspn_c1 (__const char *__s, char __reject);
extern __inline size_t
__strcspn_c1 (__const char *__s, char __reject)
{
  register size_t __result = 0;
  while (__s[__result] != '\0' && __s[__result] != __reject)
    ++__result;
  return __result;
}

extern __inline size_t __strcspn_c2 (__const char *__s, char __reject1,
                                     char __reject2);
extern __inline size_t
__strcspn_c2 (__const char *__s, char __reject1, char __reject2)
{
  register size_t __result = 0;
  while (__s[__result] != '\0' && __s[__result] != __reject1
         && __s[__result] != __reject2)
    ++__result;
  return __result;
}

extern __inline size_t __strcspn_c3 (__const char *__s, char __reject1,
                                     char __reject2, char __reject3);
extern __inline size_t
__strcspn_c3 (__const char *__s, char __reject1, char __reject2,
              char __reject3)
{
  register size_t __result = 0;
  while (__s[__result] != '\0' && __s[__result] != __reject1
         && __s[__result] != __reject2 && __s[__result] != __reject3)
    ++__result;
  return __result;
}
# 928 "/usr/include/bits/string2.h" 3
extern __inline size_t __strspn_c1 (__const char *__s, char __accept);
extern __inline size_t
__strspn_c1 (__const char *__s, char __accept)
{
  register size_t __result = 0;

  while (__s[__result] == __accept)
    ++__result;
  return __result;
}

extern __inline size_t __strspn_c2 (__const char *__s, char __accept1,
                                    char __accept2);
extern __inline size_t
__strspn_c2 (__const char *__s, char __accept1, char __accept2)
{
  register size_t __result = 0;

  while (__s[__result] == __accept1 || __s[__result] == __accept2)
    ++__result;
  return __result;
}

extern __inline size_t __strspn_c3 (__const char *__s, char __accept1,
                                    char __accept2, char __accept3);
extern __inline size_t
__strspn_c3 (__const char *__s, char __accept1, char __accept2, char __accept3)
{
  register size_t __result = 0;

  while (__s[__result] == __accept1 || __s[__result] == __accept2
         || __s[__result] == __accept3)
    ++__result;
  return __result;
}
# 983 "/usr/include/bits/string2.h" 3
extern __inline char *__strpbrk_c2 (__const char *__s, int __accept1,
                                     int __accept2);
extern __inline char *
__strpbrk_c2 (__const char *__s, int __accept1, int __accept2)
{

  while (*__s != '\0' && *__s != __accept1 && *__s != __accept2)
    ++__s;
  return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
}

extern __inline char *__strpbrk_c3 (__const char *__s, int __accept1,
                                     int __accept2, int __accept3);
extern __inline char *
__strpbrk_c3 (__const char *__s, int __accept1, int __accept2,
              int __accept3)
{

  while (*__s != '\0' && *__s != __accept1 && *__s != __accept2
         && *__s != __accept3)
    ++__s;
  return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
}
# 1045 "/usr/include/bits/string2.h" 3
extern __inline char *__strtok_r_1c (char *__s, char __sep, char **__nextp);
extern __inline char *
__strtok_r_1c (char *__s, char __sep, char **__nextp)
{
  char *__result;
  if (__s == ((void *)0))
    __s = *__nextp;
  while (*__s == __sep)
    ++__s;
  if (*__s == '\0')
    __result = ((void *)0);
  else
    {
      __result = __s;
      while (*__s != '\0' && *__s != __sep)
        ++__s;
      if (*__s == '\0')
        *__nextp = __s;
      else
        {
          *__s = '\0';
          *__nextp = __s + 1;
        }
    }
  return __result;
}
# 1095 "/usr/include/bits/string2.h" 3
extern __inline char *__strsep_1c (char **__s, char __reject);
extern __inline char *
__strsep_1c (char **__s, char __reject)
{
  register char *__retval = *__s;
  if (__retval == ((void *)0))
    return *__s = ((void *)0);
  if (*__retval == __reject)
    *(*__s)++ = '\0';
  else
    if ((*__s = (__extension__ (__builtin_constant_p (__reject) && (__reject) == '\0' ? (char *) __rawmemchr (__retval, __reject) : strchr (__retval, __reject)))) != ((void *)0))
      *(*__s)++ = '\0';
    else
      *__s = ((void *)0);
  return __retval;
}

extern __inline char *__strsep_2c (char **__s, char __reject1, char __reject2);
extern __inline char *
__strsep_2c (char **__s, char __reject1, char __reject2)
{
  register char *__retval = *__s;
  if (__retval == ((void *)0))
    return *__s = ((void *)0);
  if (*__retval == __reject1 || *__retval == __reject2)
    *(*__s)++ = '\0';
  else
    {
      register char *__cp = __retval;
      while (*__cp != '\0' && *__cp != __reject1 && *__cp != __reject2)
        ++__cp;
      if (*__cp != '\0')
        {
          *__s = __cp;
          *(*__s)++ = '\0';
        }
      else
        *__s = ((void *)0);
    }
  return __retval;
}

extern __inline char *__strsep_3c (char **__s, char __reject1, char __reject2,
                                   char __reject3);
extern __inline char *
__strsep_3c (char **__s, char __reject1, char __reject2, char __reject3)
{
  register char *__retval = *__s;
  if (__retval == ((void *)0))
    return *__s = ((void *)0);
  if (*__retval == __reject1 || *__retval == __reject2
      || *__retval == __reject3)
    *(*__s)++ = '\0';
  else
    {
      register char *__cp = __retval;
      while (*__cp != '\0' && *__cp != __reject1 && *__cp != __reject2
             && *__cp != __reject3)
        ++__cp;
      if (*__cp != '\0')
        {
          *__s = __cp;
          *(*__s)++ = '\0';
        }
      else
        *__s = ((void *)0);
    }
  return __retval;
}

extern __inline char *__strsep_g (char **__s, __const char *__reject);
extern __inline char *
__strsep_g (char **__s, __const char *__reject)
{
  register char *__retval = *__s;
  if (__retval == ((void *)0))
    return ((void *)0);
  if ((*__s = __extension__ ({ char __a0, __a1, __a2; (__builtin_constant_p (__reject) && ((size_t)(const void *)((__reject) + 1) - (size_t)(const void *)(__reject) == 1) ? ((__a0 = ((__const char *) (__reject))[0], __a0 == '\0') ? ((void) (__retval), ((void *)0)) : ((__a1 = ((__const char *) (__reject))[1], __a1 == '\0') ? (__extension__ (__builtin_constant_p (__a0) && (__a0) == '\0' ? (char *) __rawmemchr (__retval, __a0) : strchr (__retval, __a0))) : ((__a2 = ((__const char *) (__reject))[2], __a2 == '\0') ? __strpbrk_c2 (__retval, __a0, __a1) : (((__const char *) (__reject))[3] == '\0' ? __strpbrk_c3 (__retval, __a0, __a1, __a2) : strpbrk (__retval, __reject))))) : strpbrk (__retval, __reject)); })) != ((void *)0))
    *(*__s)++ = '\0';
  return __retval;
}
# 1188 "/usr/include/bits/string2.h" 3
# 1 "/usr/include/stdlib.h" 1 3
# 25 "/usr/include/stdlib.h" 3
# 1 "/usr/include/features.h" 1 3
# 26 "/usr/include/stdlib.h" 2 3







# 1 "/usr/lib/gcc-lib/i386-pld-linux/3.0.1/include/stddef.h" 1 3
# 34 "/usr/include/stdlib.h" 2 3
# 528 "/usr/include/stdlib.h" 3
extern void *malloc (size_t __size) __attribute__ ((__malloc__));

extern void *calloc (size_t __nmemb, size_t __size)
             __attribute__ ((__malloc__));
# 1189 "/usr/include/bits/string2.h" 2 3




extern char *__strdup (__const char *__string) __attribute__ ((__malloc__));
# 1212 "/usr/include/bits/string2.h" 3
extern char *__strndup (__const char *__string, size_t __n)
             __attribute__ ((__malloc__));
# 360 "/usr/include/string.h" 2 3
# 31 "/usr/include/memory.h" 2 3
# 53 "common.h" 2



# 1 "machine.h" 1
# 70 "machine.h"
# 1 "/usr/include/string.h" 1 3
# 71 "machine.h" 2


# 1 "/usr/include/stdio.h" 1 3
# 27 "/usr/include/stdio.h" 3
# 1 "/usr/include/features.h" 1 3
# 28 "/usr/include/stdio.h" 2 3





# 1 "/usr/lib/gcc-lib/i386-pld-linux/3.0.1/include/stddef.h" 1 3
# 34 "/usr/include/stdio.h" 2 3

# 1 "/usr/include/bits/types.h" 1 3
# 36 "/usr/include/stdio.h" 2 3
# 44 "/usr/include/stdio.h" 3
typedef struct _IO_FILE FILE;
# 54 "/usr/include/stdio.h" 3
typedef struct _IO_FILE __FILE;
# 64 "/usr/include/stdio.h" 3
# 1 "/usr/include/libio.h" 1 3
# 30 "/usr/include/libio.h" 3
# 1 "/usr/include/_G_config.h" 1 3
# 9 "/usr/include/_G_config.h" 3
# 1 "/usr/include/bits/types.h" 1 3
# 10 "/usr/include/_G_config.h" 2 3




# 1 "/usr/lib/gcc-lib/i386-pld-linux/3.0.1/include/stddef.h" 1 3
# 287 "/usr/lib/gcc-lib/i386-pld-linux/3.0.1/include/stddef.h" 3
typedef long int wchar_t;
# 312 "/usr/lib/gcc-lib/i386-pld-linux/3.0.1/include/stddef.h" 3
typedef unsigned int wint_t;
# 15 "/usr/include/_G_config.h" 2 3
# 24 "/usr/include/_G_config.h" 3
# 1 "/usr/include/wchar.h" 1 3
# 48 "/usr/include/wchar.h" 3
# 1 "/usr/lib/gcc-lib/i386-pld-linux/3.0.1/include/stddef.h" 1 3
# 49 "/usr/include/wchar.h" 2 3

# 1 "/usr/include/bits/wchar.h" 1 3
# 51 "/usr/include/wchar.h" 2 3
# 67 "/usr/include/wchar.h" 3
typedef struct
{
  int __count;
  union
  {
    wint_t __wch;
    char __wchb[4];
  } __value;
} __mbstate_t;
# 25 "/usr/include/_G_config.h" 2 3

typedef struct
{
  __off_t __pos;
  __mbstate_t __state;
} _G_fpos_t;
typedef struct
{
  __off64_t __pos;
  __mbstate_t __state;
} _G_fpos64_t;
# 44 "/usr/include/_G_config.h" 3
# 1 "/usr/include/gconv.h" 1 3
# 26 "/usr/include/gconv.h" 3
# 1 "/usr/include/features.h" 1 3
# 27 "/usr/include/gconv.h" 2 3

# 1 "/usr/include/wchar.h" 1 3
# 48 "/usr/include/wchar.h" 3
# 1 "/usr/lib/gcc-lib/i386-pld-linux/3.0.1/include/stddef.h" 1 3
# 49 "/usr/include/wchar.h" 2 3

# 1 "/usr/include/bits/wchar.h" 1 3
# 51 "/usr/include/wchar.h" 2 3
# 29 "/usr/include/gconv.h" 2 3

# 1 "/usr/lib/gcc-lib/i386-pld-linux/3.0.1/include/stddef.h" 1 3
# 31 "/usr/include/gconv.h" 2 3





enum
{
  __GCONV_OK = 0,
  __GCONV_NOCONV,
  __GCONV_NODB,
  __GCONV_NOMEM,

  __GCONV_EMPTY_INPUT,
  __GCONV_FULL_OUTPUT,
  __GCONV_ILLEGAL_INPUT,
  __GCONV_INCOMPLETE_INPUT,

  __GCONV_ILLEGAL_DESCRIPTOR,
  __GCONV_INTERNAL_ERROR
};



enum
{
  __GCONV_IS_LAST = 0x0001,
  __GCONV_IGNORE_ERRORS = 0x0002
};



struct __gconv_step;
struct __gconv_step_data;
struct __gconv_loaded_object;
struct __gconv_trans_data;



typedef int (*__gconv_fct) (struct __gconv_step *, struct __gconv_step_data *,
                            __const unsigned char **, __const unsigned char *,
                            unsigned char **, size_t *, int, int);


typedef int (*__gconv_init_fct) (struct __gconv_step *);
typedef void (*__gconv_end_fct) (struct __gconv_step *);



typedef int (*__gconv_trans_fct) (struct __gconv_step *,
                                  struct __gconv_step_data *, void *,
                                  __const unsigned char *,
                                  __const unsigned char **,
                                  __const unsigned char *, unsigned char **,
                                  size_t *);


typedef int (*__gconv_trans_context_fct) (void *, __const unsigned char *,
                                          __const unsigned char *,
                                          unsigned char *, unsigned char *);


typedef int (*__gconv_trans_query_fct) (__const char *, __const char ***,
                                        size_t *);


typedef int (*__gconv_trans_init_fct) (void **, const char *);
typedef void (*__gconv_trans_end_fct) (void *);

struct __gconv_trans_data
{

  __gconv_trans_fct __trans_fct;
  __gconv_trans_context_fct __trans_context_fct;
  __gconv_trans_end_fct __trans_end_fct;
  void *__data;
  struct __gconv_trans_data *__next;
};



struct __gconv_step
{
  struct __gconv_loaded_object *__shlib_handle;
  __const char *__modname;

  int __counter;

  char *__from_name;
  char *__to_name;

  __gconv_fct __fct;
  __gconv_init_fct __init_fct;
  __gconv_end_fct __end_fct;



  int __min_needed_from;
  int __max_needed_from;
  int __min_needed_to;
  int __max_needed_to;


  int __stateful;

  void *__data;
};



struct __gconv_step_data
{
  unsigned char *__outbuf;
  unsigned char *__outbufend;



  int __flags;



  int __invocation_counter;



  int __internal_use;

  __mbstate_t *__statep;
  __mbstate_t __state;



  struct __gconv_trans_data *__trans;
};



typedef struct __gconv_info
{
  size_t __nsteps;
  struct __gconv_step *__steps;
  __extension__ struct __gconv_step_data __data [];
} *__gconv_t;
# 45 "/usr/include/_G_config.h" 2 3
typedef union
{
  struct __gconv_info __cd;
  struct
  {
    struct __gconv_info __cd;
    struct __gconv_step_data __data;
  } __combined;
} _G_iconv_t;

typedef int _G_int16_t __attribute__ ((__mode__ (__HI__)));
typedef int _G_int32_t __attribute__ ((__mode__ (__SI__)));
typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__)));
# 31 "/usr/include/libio.h" 2 3
# 51 "/usr/include/libio.h" 3
# 1 "/usr/lib/gcc-lib/i386-pld-linux/3.0.1/include/stdarg.h" 1 3
# 43 "/usr/lib/gcc-lib/i386-pld-linux/3.0.1/include/stdarg.h" 3
typedef __builtin_va_list __gnuc_va_list;
# 52 "/usr/include/libio.h" 2 3
# 158 "/usr/include/libio.h" 3
struct _IO_jump_t; struct _IO_FILE;
# 168 "/usr/include/libio.h" 3
typedef void _IO_lock_t;





struct _IO_marker {
  struct _IO_marker *_next;
  struct _IO_FILE *_sbuf;



  int _pos;
# 191 "/usr/include/libio.h" 3
};


enum __codecvt_result
{
  __codecvt_ok,
  __codecvt_partial,
  __codecvt_error,
  __codecvt_noconv
};
# 259 "/usr/include/libio.h" 3
struct _IO_FILE {
  int _flags;




  char* _IO_read_ptr;
  char* _IO_read_end;
  char* _IO_read_base;
  char* _IO_write_base;
  char* _IO_write_ptr;
  char* _IO_write_end;
  char* _IO_buf_base;
  char* _IO_buf_end;

  char *_IO_save_base;
  char *_IO_backup_base;
  char *_IO_save_end;

  struct _IO_marker *_markers;

  struct _IO_FILE *_chain;

  int _fileno;
  int _blksize;
  __off_t _old_offset;



  unsigned short _cur_column;
  signed char _vtable_offset;
  char _shortbuf[1];



  _IO_lock_t *_lock;
# 303 "/usr/include/libio.h" 3
  __off64_t _offset;





  void *__pad1;
  void *__pad2;

  int _mode;

  char _unused2[15 * sizeof (int) - 2 * sizeof (void *)];

};


typedef struct _IO_FILE _IO_FILE;


struct _IO_FILE_plus;

extern struct _IO_FILE_plus _IO_2_1_stdin_;
extern struct _IO_FILE_plus _IO_2_1_stdout_;
extern struct _IO_FILE_plus _IO_2_1_stderr_;
# 342 "/usr/include/libio.h" 3
typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes);







typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf,
                                 size_t __n);







typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w);


typedef int __io_close_fn (void *__cookie);
# 394 "/usr/include/libio.h" 3
extern int __underflow (_IO_FILE *) ;
extern int __uflow (_IO_FILE *) ;
extern int __overflow (_IO_FILE *, int) ;
extern wint_t __wunderflow (_IO_FILE *) ;
extern wint_t __wuflow (_IO_FILE *) ;
extern wint_t __woverflow (_IO_FILE *, wint_t) ;
# 424 "/usr/include/libio.h" 3
extern int _IO_getc (_IO_FILE *__fp) ;
extern int _IO_putc (int __c, _IO_FILE *__fp) ;
extern int _IO_feof (_IO_FILE *__fp) ;
extern int _IO_ferror (_IO_FILE *__fp) ;

extern int _IO_peekc_locked (_IO_FILE *__fp) ;





extern void _IO_flockfile (_IO_FILE *) ;
extern void _IO_funlockfile (_IO_FILE *) ;
extern int _IO_ftrylockfile (_IO_FILE *) ;
# 454 "/usr/include/libio.h" 3
extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict,
                        __gnuc_va_list, int *__restrict) ;
extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict,
                         __gnuc_va_list) ;
extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t) ;
extern size_t _IO_sgetn (_IO_FILE *, void *, size_t) ;

extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int) ;
extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int) ;

extern void _IO_free_backup_area (_IO_FILE *) ;
# 65 "/usr/include/stdio.h" 2 3
# 79 "/usr/include/stdio.h" 3
typedef _G_fpos_t fpos_t;
# 128 "/usr/include/stdio.h" 3
# 1 "/usr/include/bits/stdio_lim.h" 1 3
# 129 "/usr/include/stdio.h" 2 3



extern FILE *stdin;
extern FILE *stdout;
extern FILE *stderr;
# 143 "/usr/include/stdio.h" 3
extern int remove (__const char *__filename) ;

extern int rename (__const char *__old, __const char *__new) ;




extern FILE *tmpfile (void) ;
# 162 "/usr/include/stdio.h" 3
extern char *tmpnam (char *__s) ;




extern char *tmpnam_r (char *__s) ;
# 179 "/usr/include/stdio.h" 3
extern char *tempnam (__const char *__dir, __const char *__pfx)
             __attribute__ ((__malloc__));




extern int fclose (FILE *__stream) ;

extern int fflush (FILE *__stream) ;



extern int fflush_unlocked (FILE *__stream) ;
# 202 "/usr/include/stdio.h" 3
extern FILE *fopen (__const char *__restrict __filename,
                    __const char *__restrict __modes) ;

extern FILE *freopen (__const char *__restrict __filename,
                      __const char *__restrict __modes,
                      FILE *__restrict __stream) ;
# 232 "/usr/include/stdio.h" 3
extern FILE *fdopen (int __fd, __const char *__modes) ;
# 255 "/usr/include/stdio.h" 3
extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) ;



extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
                    int __modes, size_t __n) ;




extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
                       size_t __size) ;


extern void setlinebuf (FILE *__stream) ;




extern int fprintf (FILE *__restrict __stream,
                    __const char *__restrict __format, ...) ;

extern int printf (__const char *__restrict __format, ...) ;

extern int sprintf (char *__restrict __s,
                    __const char *__restrict __format, ...) ;


extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
                     __gnuc_va_list __arg) ;

extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg)
            ;

extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
                     __gnuc_va_list __arg) ;



extern int snprintf (char *__restrict __s, size_t __maxlen,
                     __const char *__restrict __format, ...)
             __attribute__ ((__format__ (__printf__, 3, 4)));

extern int vsnprintf (char *__restrict __s, size_t __maxlen,
                      __const char *__restrict __format, __gnuc_va_list __arg)
             __attribute__ ((__format__ (__printf__, 3, 0)));
# 326 "/usr/include/stdio.h" 3
extern int fscanf (FILE *__restrict __stream,
                   __const char *__restrict __format, ...) ;

extern int scanf (__const char *__restrict __format, ...) ;

extern int sscanf (__const char *__restrict __s,
                   __const char *__restrict __format, ...) ;
# 352 "/usr/include/stdio.h" 3
extern int fgetc (FILE *__stream) ;
extern int getc (FILE *__stream) ;


extern int getchar (void) ;







extern int getc_unlocked (FILE *__stream) ;
extern int getchar_unlocked (void) ;




extern int fgetc_unlocked (FILE *__stream) ;




extern int fputc (int __c, FILE *__stream) ;
extern int putc (int __c, FILE *__stream) ;


extern int putchar (int __c) ;







extern int fputc_unlocked (int __c, FILE *__stream) ;




extern int putc_unlocked (int __c, FILE *__stream) ;
extern int putchar_unlocked (int __c) ;





extern int getw (FILE *__stream) ;


extern int putw (int __w, FILE *__stream) ;




extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
            ;
# 418 "/usr/include/stdio.h" 3
extern char *gets (char *__s) ;
# 442 "/usr/include/stdio.h" 3
extern int fputs (__const char *__restrict __s, FILE *__restrict __stream)
            ;
# 452 "/usr/include/stdio.h" 3
extern int puts (__const char *__s) ;



extern int ungetc (int __c, FILE *__stream) ;



extern size_t fread (void *__restrict __ptr, size_t __size,
                     size_t __n, FILE *__restrict __stream) ;

extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
                      size_t __n, FILE *__restrict __s) ;



extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
                              size_t __n, FILE *__restrict __stream) ;
extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
                               size_t __n, FILE *__restrict __stream) ;




extern int fseek (FILE *__stream, long int __off, int __whence) ;

extern long int ftell (FILE *__stream) ;

extern void rewind (FILE *__stream) ;
# 496 "/usr/include/stdio.h" 3
extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos)
            ;

extern int fsetpos (FILE *__stream, __const fpos_t *__pos) ;
# 532 "/usr/include/stdio.h" 3
extern void clearerr (FILE *__stream) ;

extern int feof (FILE *__stream) ;

extern int ferror (FILE *__stream) ;



extern void clearerr_unlocked (FILE *__stream) ;
extern int feof_unlocked (FILE *__stream) ;
extern int ferror_unlocked (FILE *__stream) ;




extern void perror (__const char *__s) ;




extern int sys_nerr;
extern __const char *__const sys_errlist[];
# 563 "/usr/include/stdio.h" 3
extern int fileno (FILE *__stream) ;




extern int fileno_unlocked (FILE *__stream) ;






extern FILE *popen (__const char *__command, __const char *__modes) ;


extern int pclose (FILE *__stream) ;





extern char *ctermid (char *__s) ;
# 610 "/usr/include/stdio.h" 3
extern void flockfile (FILE *__stream) ;



extern int ftrylockfile (FILE *__stream) ;


extern void funlockfile (FILE *__stream) ;
# 631 "/usr/include/stdio.h" 3
# 1 "/usr/include/bits/stdio.h" 1 3
# 39 "/usr/include/bits/stdio.h" 3
extern __inline int
vprintf (__const char *__restrict __fmt, __gnuc_va_list __arg)
{
  return vfprintf (stdout, __fmt, __arg);
}


extern __inline int
getchar (void)
{
  return _IO_getc (stdin);
}




extern __inline int
getc_unlocked (FILE *__fp)
{
  return ((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
}


extern __inline int
getchar_unlocked (void)
{
  return ((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++);
}




extern __inline int
putchar (int __c)
{
  return _IO_putc (__c, stdout);
}




extern __inline int
fputc_unlocked (int __c, FILE *__stream)
{
  return (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
}





extern __inline int
putc_unlocked (int __c, FILE *__stream)
{
  return (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
}


extern __inline int
putchar_unlocked (int __c)
{
  return (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c)));
}
# 117 "/usr/include/bits/stdio.h" 3
extern __inline int
feof_unlocked (FILE *__stream)
{
  return (((__stream)->_flags & 0x10) != 0);
}


extern __inline int
ferror_unlocked (FILE *__stream)
{
  return (((__stream)->_flags & 0x20) != 0);
}
# 632 "/usr/include/stdio.h" 2 3
# 74 "machine.h" 2
# 88 "machine.h"
# 1 "/usr/include/sys/types.h" 1 3
# 89 "machine.h" 2
# 108 "machine.h"
typedef signed char int8;




typedef short int16;

typedef int int32;





typedef unsigned char uint8;
typedef unsigned short uint16;

typedef unsigned int uint32;
# 468 "machine.h"
# 1 "/usr/include/signal.h" 1 3
# 29 "/usr/include/signal.h" 3
# 1 "/usr/include/features.h" 1 3
# 30 "/usr/include/signal.h" 2 3



# 1 "/usr/include/bits/sigset.h" 1 3
# 103 "/usr/include/bits/sigset.h" 3
extern int __sigismember (__const __sigset_t *, int);
extern int __sigaddset (__sigset_t *, int);
extern int __sigdelset (__sigset_t *, int);
# 117 "/usr/include/bits/sigset.h" 3
extern __inline int __sigismember (__const __sigset_t *__set, int __sig) { unsigned long int __mask = (((unsigned long int) 1) << (((__sig) - 1) % (8 * sizeof (unsigned long int)))); unsigned long int __word = (((__sig) - 1) / (8 * sizeof (unsigned long int))); return (__set->__val[__word] & __mask) ? 1 : 0; }
extern __inline int __sigaddset ( __sigset_t *__set, int __sig) { unsigned long int __mask = (((unsigned long int) 1) << (((__sig) - 1) % (8 * sizeof (unsigned long int)))); unsigned long int __word = (((__sig) - 1) / (8 * sizeof (unsigned long int))); return ((__set->__val[__word] |= __mask), 0); }
extern __inline int __sigdelset ( __sigset_t *__set, int __sig) { unsigned long int __mask = (((unsigned long int) 1) << (((__sig) - 1) % (8 * sizeof (unsigned long int)))); unsigned long int __word = (((__sig) - 1) / (8 * sizeof (unsigned long int))); return ((__set->__val[__word] &= ~__mask), 0); }
# 34 "/usr/include/signal.h" 2 3






typedef __sig_atomic_t sig_atomic_t;
# 55 "/usr/include/signal.h" 3
# 1 "/usr/include/bits/types.h" 1 3
# 56 "/usr/include/signal.h" 2 3
# 1 "/usr/include/bits/signum.h" 1 3
# 57 "/usr/include/signal.h" 2 3
# 71 "/usr/include/signal.h" 3
typedef void (*__sighandler_t) (int);




extern __sighandler_t __sysv_signal (int __sig, __sighandler_t __handler)
            ;
# 87 "/usr/include/signal.h" 3
extern __sighandler_t signal (int __sig, __sighandler_t __handler) ;
# 110 "/usr/include/signal.h" 3
extern int kill (__pid_t __pid, int __sig) ;






extern int killpg (__pid_t __pgrp, int __sig) ;



extern int raise (int __sig) ;



extern __sighandler_t ssignal (int __sig, __sighandler_t __handler) ;
extern int gsignal (int __sig) ;




extern void psignal (int __sig, __const char *__s) ;
# 140 "/usr/include/signal.h" 3
extern int __sigpause (int __sig_or_mask, int __is_sig) ;




extern int sigpause (int __mask) ;
# 168 "/usr/include/signal.h" 3
extern int sigblock (int __mask) ;


extern int sigsetmask (int __mask) ;


extern int siggetmask (void) ;
# 188 "/usr/include/signal.h" 3
typedef __sighandler_t sig_t;







# 1 "/usr/include/time.h" 1 3
# 197 "/usr/include/signal.h" 2 3


# 1 "/usr/include/bits/siginfo.h" 1 3
# 25 "/usr/include/bits/siginfo.h" 3
# 1 "/usr/include/bits/wordsize.h" 1 3
# 26 "/usr/include/bits/siginfo.h" 2 3







typedef union sigval
  {
    int sival_int;
    void *sival_ptr;
  } sigval_t;
# 51 "/usr/include/bits/siginfo.h" 3
typedef struct siginfo
  {
    int si_signo;
    int si_errno;

    int si_code;

    union
      {
        int _pad[((128 / sizeof (int)) - 3)];


        struct
          {
            __pid_t si_pid;
            __uid_t si_uid;
          } _kill;


        struct
          {
            unsigned int _timer1;
            unsigned int _timer2;
          } _timer;


        struct
          {
            __pid_t si_pid;
            __uid_t si_uid;
            sigval_t si_sigval;
          } _rt;


        struct
          {
            __pid_t si_pid;
            __uid_t si_uid;
            int si_status;
            __clock_t si_utime;
            __clock_t si_stime;
          } _sigchld;


        struct
          {
            void *si_addr;
          } _sigfault;


        struct
          {
            long int si_band;
            int si_fd;
          } _sigpoll;
      } _sifields;
  } siginfo_t;
# 128 "/usr/include/bits/siginfo.h" 3
enum
{
  SI_ASYNCNL = -6,

  SI_SIGIO,

  SI_ASYNCIO,

  SI_MESGQ,

  SI_TIMER,

  SI_QUEUE,

  SI_USER,

  SI_KERNEL = 0x80

};



enum
{
  ILL_ILLOPC = 1,

  ILL_ILLOPN,

  ILL_ILLADR,

  ILL_ILLTRP,

  ILL_PRVOPC,

  ILL_PRVREG,

  ILL_COPROC,

  ILL_BADSTK

};


enum
{
  FPE_INTDIV = 1,

  FPE_INTOVF,

  FPE_FLTDIV,

  FPE_FLTOVF,

  FPE_FLTUND,

  FPE_FLTRES,

  FPE_FLTINV,

  FPE_FLTSUB

};


enum
{
  SEGV_MAPERR = 1,

  SEGV_ACCERR

};


enum
{
  BUS_ADRALN = 1,

  BUS_ADRERR,

  BUS_OBJERR

};


enum
{
  TRAP_BRKPT = 1,

  TRAP_TRACE

};


enum
{
  CLD_EXITED = 1,

  CLD_KILLED,

  CLD_DUMPED,

  CLD_TRAPPED,

  CLD_STOPPED,

  CLD_CONTINUED

};


enum
{
  POLL_IN = 1,

  POLL_OUT,

  POLL_MSG,

  POLL_ERR,

  POLL_PRI,

  POLL_HUP

};
# 271 "/usr/include/bits/siginfo.h" 3
struct __pthread_attr_s;

typedef struct sigevent
  {
    sigval_t sigev_value;
    int sigev_signo;
    int sigev_notify;

    union
      {
        int _pad[((64 / sizeof (int)) - 3)];

        struct
          {
            void (*_function) (sigval_t);
            struct __pthread_attr_s *_attribute;
          } _sigev_thread;
      } _sigev_un;
  } sigevent_t;






enum
{
  SIGEV_SIGNAL = 0,

  SIGEV_NONE,

  SIGEV_THREAD

};
# 200 "/usr/include/signal.h" 2 3



extern int sigemptyset (sigset_t *__set) ;


extern int sigfillset (sigset_t *__set) ;


extern int sigaddset (sigset_t *__set, int __signo) ;


extern int sigdelset (sigset_t *__set, int __signo) ;


extern int sigismember (__const sigset_t *__set, int __signo) ;
# 232 "/usr/include/signal.h" 3
# 1 "/usr/include/bits/sigaction.h" 1 3
# 25 "/usr/include/bits/sigaction.h" 3
struct sigaction
  {


    union
      {

        __sighandler_t sa_handler;

        void (*sa_sigaction) (int, siginfo_t *, void *);
      }
    __sigaction_handler;







    __sigset_t sa_mask;


    int sa_flags;


    void (*sa_restorer) (void);
  };
# 233 "/usr/include/signal.h" 2 3


extern int sigprocmask (int __how, __const sigset_t *__restrict __set,
                        sigset_t *__restrict __oset) ;



extern int sigsuspend (__const sigset_t *__set) ;


extern int sigaction (int __sig, __const struct sigaction *__restrict __act,
                      struct sigaction *__restrict __oact) ;


extern int sigpending (sigset_t *__set) ;



extern int sigwait (__const sigset_t *__restrict __set, int *__restrict __sig)
            ;



extern int sigwaitinfo (__const sigset_t *__restrict __set,
                        siginfo_t *__restrict __info) ;



extern int sigtimedwait (__const sigset_t *__restrict __set,
                         siginfo_t *__restrict __info,
                         __const struct timespec *__restrict __timeout)
            ;



extern int sigqueue (__pid_t __pid, int __sig, __const union sigval __val)
            ;
# 278 "/usr/include/signal.h" 3
extern __const char *__const _sys_siglist[64];
extern __const char *__const sys_siglist[64];


struct sigvec
  {
    __sighandler_t sv_handler;
    int sv_mask;

    int sv_flags;

  };
# 302 "/usr/include/signal.h" 3
extern int sigvec (int __sig, __const struct sigvec *__vec,
                   struct sigvec *__ovec) ;



# 1 "/usr/include/bits/sigcontext.h" 1 3
# 28 "/usr/include/bits/sigcontext.h" 3
# 1 "/usr/include/asm/sigcontext.h" 1 3
# 18 "/usr/include/asm/sigcontext.h" 3
struct _fpreg {
        unsigned short significand[4];
        unsigned short exponent;
};

struct _fpxreg {
        unsigned short significand[4];
        unsigned short exponent;
        unsigned short padding[3];
};

struct _xmmreg {
        unsigned long element[4];
};

struct _fpstate {

        unsigned long cw;
        unsigned long sw;
        unsigned long tag;
        unsigned long ipoff;
        unsigned long cssel;
        unsigned long dataoff;
        unsigned long datasel;
        struct _fpreg _st[8];
        unsigned short status;
        unsigned short magic;


        unsigned long _fxsr_env[6];
        unsigned long mxcsr;
        unsigned long reserved;
        struct _fpxreg _fxsr_st[8];
        struct _xmmreg _xmm[8];
        unsigned long padding[56];
};



struct sigcontext {
        unsigned short gs, __gsh;
        unsigned short fs, __fsh;
        unsigned short es, __esh;
        unsigned short ds, __dsh;
        unsigned long edi;
        unsigned long esi;
        unsigned long ebp;
        unsigned long esp;
        unsigned long ebx;
        unsigned long edx;
        unsigned long ecx;
        unsigned long eax;
        unsigned long trapno;
        unsigned long err;
        unsigned long eip;
        unsigned short cs, __csh;
        unsigned long eflags;
        unsigned long esp_at_signal;
        unsigned short ss, __ssh;
        struct _fpstate * fpstate;
        unsigned long oldmask;
        unsigned long cr2;
};
# 29 "/usr/include/bits/sigcontext.h" 2 3
# 308 "/usr/include/signal.h" 2 3


extern int sigreturn (struct sigcontext *__scp) ;
# 320 "/usr/include/signal.h" 3
extern int siginterrupt (int __sig, int __interrupt) ;

# 1 "/usr/include/bits/sigstack.h" 1 3
# 26 "/usr/include/bits/sigstack.h" 3
struct sigstack
  {
    void *ss_sp;
    int ss_onstack;
  };



enum
{
  SS_ONSTACK = 1,

  SS_DISABLE

};
# 50 "/usr/include/bits/sigstack.h" 3
typedef struct sigaltstack
  {
    void *ss_sp;
    int ss_flags;
    size_t ss_size;
  } stack_t;
# 323 "/usr/include/signal.h" 2 3







extern int sigstack (struct sigstack *__ss, struct sigstack *__oss) ;



extern int sigaltstack (__const struct sigaltstack *__restrict __ss,
                        struct sigaltstack *__restrict __oss) ;
# 358 "/usr/include/signal.h" 3
# 1 "/usr/include/bits/sigthread.h" 1 3
# 31 "/usr/include/bits/sigthread.h" 3
extern int pthread_sigmask (int __how,
                            __const __sigset_t *__restrict __newmask,
                            __sigset_t *__restrict __oldmask);


extern int pthread_kill (pthread_t __thread, int __signo) ;
# 359 "/usr/include/signal.h" 2 3






extern int __libc_current_sigrtmin (void) ;

extern int __libc_current_sigrtmax (void) ;
# 469 "machine.h" 2
# 586 "machine.h"
void (*dsignal(int, void (*)(int)))(int);

extern void sig_unblock(int);
# 795 "machine.h"
typedef struct
{
    long memsiz;
    char *ptr;
} WRK_MEM;
# 57 "common.h" 2


# 1 "dbldescr.h" 1
# 23 "dbldescr.h"
# 1 "dbldscnv.h" 1
# 48 "dbldscnv.h"
typedef struct
{
    uint16 len,
                 ctl;




        char *addr;




} DESCRIP;
# 80 "dbldscnv.h"
typedef struct
{
    uint16 len,
             ctl;
    char *addr;
    uint32 dimct,
             scope,
             mult[1];
} DIMDESCR;






typedef struct
{
    uint16 len, ctl;
    union
    {
        long *ir;
        int32 *lw;
        int16 *w;
        unsigned long *uir;
        uint32 *ulw;
        uint16 *uw;
    } p;
} DSCR_A;
# 24 "dbldescr.h" 2
# 60 "common.h" 2






# 1 "/usr/include/stdlib.h" 1 3
# 25 "/usr/include/stdlib.h" 3
# 1 "/usr/include/features.h" 1 3
# 26 "/usr/include/stdlib.h" 2 3







# 1 "/usr/lib/gcc-lib/i386-pld-linux/3.0.1/include/stddef.h" 1 3
# 34 "/usr/include/stdlib.h" 2 3
# 94 "/usr/include/stdlib.h" 3
typedef struct
  {
    int quot;
    int rem;
  } div_t;



typedef struct
  {
    long int quot;
    long int rem;
  } ldiv_t;
# 133 "/usr/include/stdlib.h" 3
extern size_t __ctype_get_mb_cur_max (void) ;



extern double atof (__const char *__nptr) __attribute__ ((__pure__));

extern int atoi (__const char *__nptr) __attribute__ ((__pure__));

extern long int atol (__const char *__nptr) __attribute__ ((__pure__));



__extension__ extern long long int atoll (__const char *__nptr)
             __attribute__ ((__pure__));



extern double strtod (__const char *__restrict __nptr,
                      char **__restrict __endptr) ;
# 163 "/usr/include/stdlib.h" 3
extern long int strtol (__const char *__restrict __nptr,
                        char **__restrict __endptr, int __base) ;

extern unsigned long int strtoul (__const char *__restrict __nptr,
                                  char **__restrict __endptr, int __base)
            ;



__extension__
extern long long int strtoq (__const char *__restrict __nptr,
                             char **__restrict __endptr, int __base) ;

__extension__
extern unsigned long long int strtouq (__const char *__restrict __nptr,
                                       char **__restrict __endptr, int __base)
            ;






__extension__
extern long long int strtoll (__const char *__restrict __nptr,
                              char **__restrict __endptr, int __base) ;

__extension__
extern unsigned long long int strtoull (__const char *__restrict __nptr,
                                        char **__restrict __endptr, int __base)
            ;
# 250 "/usr/include/stdlib.h" 3
extern double __strtod_internal (__const char *__restrict __nptr,
                                 char **__restrict __endptr, int __group)
            ;
extern float __strtof_internal (__const char *__restrict __nptr,
                                char **__restrict __endptr, int __group)
            ;
extern long double __strtold_internal (__const char *__restrict __nptr,
                                       char **__restrict __endptr,
                                       int __group) ;

extern long int __strtol_internal (__const char *__restrict __nptr,
                                   char **__restrict __endptr,
                                   int __base, int __group) ;



extern unsigned long int __strtoul_internal (__const char *__restrict __nptr,
                                             char **__restrict __endptr,
                                             int __base, int __group) ;




__extension__
extern long long int __strtoll_internal (__const char *__restrict __nptr,
                                         char **__restrict __endptr,
                                         int __base, int __group) ;



__extension__
extern unsigned long long int __strtoull_internal (__const char *
                                                   __restrict __nptr,
                                                   char **__restrict __endptr,
                                                   int __base, int __group)
            ;
# 294 "/usr/include/stdlib.h" 3
extern __inline double
strtod (__const char *__restrict __nptr, char **__restrict __endptr)
{
  return __strtod_internal (__nptr, __endptr, 0);
}
extern __inline long int
strtol (__const char *__restrict __nptr, char **__restrict __endptr,
        int __base)
{
  return __strtol_internal (__nptr, __endptr, __base, 0);
}
extern __inline unsigned long int
strtoul (__const char *__restrict __nptr, char **__restrict __endptr,
         int __base)
{
  return __strtoul_internal (__nptr, __endptr, __base, 0);
}
# 326 "/usr/include/stdlib.h" 3
__extension__ extern __inline long long int
strtoq (__const char *__restrict __nptr, char **__restrict __endptr,
        int __base)
{
  return __strtoll_internal (__nptr, __endptr, __base, 0);
}
__extension__ extern __inline unsigned long long int
strtouq (__const char *__restrict __nptr, char **__restrict __endptr,
         int __base)
{
  return __strtoull_internal (__nptr, __endptr, __base, 0);
}



__extension__ extern __inline long long int
strtoll (__const char *__restrict __nptr, char **__restrict __endptr,
         int __base)
{
  return __strtoll_internal (__nptr, __endptr, __base, 0);
}
__extension__ extern __inline unsigned long long int
strtoull (__const char * __restrict __nptr, char **__restrict __endptr,
          int __base)
{
  return __strtoull_internal (__nptr, __endptr, __base, 0);
}


extern __inline double
atof (__const char *__nptr)
{
  return strtod (__nptr, (char **) ((void *)0));
}
extern __inline int
atoi (__const char *__nptr)
{
  return (int) strtol (__nptr, (char **) ((void *)0), 10);
}
extern __inline long int
atol (__const char *__nptr)
{
  return strtol (__nptr, (char **) ((void *)0), 10);
}


__extension__ extern __inline long long int
atoll (__const char *__nptr)
{
  return strtoll (__nptr, (char **) ((void *)0), 10);
}
# 385 "/usr/include/stdlib.h" 3
extern char *l64a (long int __n) ;


extern long int a64l (__const char *__s) __attribute__ ((__pure__));


# 1 "/usr/include/sys/types.h" 1 3
# 392 "/usr/include/stdlib.h" 2 3






extern long int random (void) ;


extern void srandom (unsigned int __seed) ;





extern char *initstate (unsigned int __seed, char *__statebuf,
                        size_t __statelen) ;



extern char *setstate (char *__statebuf) ;







struct random_data
  {
    int32_t *fptr;
    int32_t *rptr;
    int32_t *state;
    int rand_type;
    int rand_deg;
    int rand_sep;
    int32_t *end_ptr;
  };

extern int random_r (struct random_data *__restrict __buf,
                     int32_t *__restrict __result) ;

extern int srandom_r (unsigned int __seed, struct random_data *__buf) ;

extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
                        size_t __statelen,
                        struct random_data *__restrict __buf) ;

extern int setstate_r (char *__restrict __statebuf,
                       struct random_data *__restrict __buf) ;





extern int rand (void) ;

extern void srand (unsigned int __seed) ;



extern int rand_r (unsigned int *__seed) ;







extern double drand48 (void) ;
extern double erand48 (unsigned short int __xsubi[3]) ;


extern long int lrand48 (void) ;
extern long int nrand48 (unsigned short int __xsubi[3]) ;


extern long int mrand48 (void) ;
extern long int jrand48 (unsigned short int __xsubi[3]) ;


extern void srand48 (long int __seedval) ;
extern unsigned short int *seed48 (unsigned short int __seed16v[3]) ;
extern void lcong48 (unsigned short int __param[7]) ;





struct drand48_data
  {
    unsigned short int __x[3];
    unsigned short int __old_x[3];
    unsigned short int __c;
    unsigned short int __init;
    unsigned long long int __a;
  };


extern int drand48_r (struct drand48_data *__restrict __buffer,
                      double *__restrict __result) ;
extern int erand48_r (unsigned short int __xsubi[3],
                      struct drand48_data *__restrict __buffer,
                      double *__restrict __result) ;


extern int lrand48_r (struct drand48_data *__restrict __buffer,
                      long int *__restrict __result) ;
extern int nrand48_r (unsigned short int __xsubi[3],
                      struct drand48_data *__restrict __buffer,
                      long int *__restrict __result) ;


extern int mrand48_r (struct drand48_data *__restrict __buffer,
                      long int *__restrict __result) ;
extern int jrand48_r (unsigned short int __xsubi[3],
                      struct drand48_data *__restrict __buffer,
                      long int *__restrict __result) ;


extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
            ;

extern int seed48_r (unsigned short int __seed16v[3],
                     struct drand48_data *__buffer) ;

extern int lcong48_r (unsigned short int __param[7],
                      struct drand48_data *__buffer) ;
# 537 "/usr/include/stdlib.h" 3
extern void *realloc (void *__ptr, size_t __size) __attribute__ ((__malloc__));

extern void free (void *__ptr) ;



extern void cfree (void *__ptr) ;



# 1 "/usr/include/alloca.h" 1 3
# 22 "/usr/include/alloca.h" 3
# 1 "/usr/include/features.h" 1 3
# 23 "/usr/include/alloca.h" 2 3


# 1 "/usr/lib/gcc-lib/i386-pld-linux/3.0.1/include/stddef.h" 1 3
# 26 "/usr/include/alloca.h" 2 3







extern void *alloca (size_t __size) ;
# 548 "/usr/include/stdlib.h" 2 3




extern void *valloc (size_t __size) __attribute__ ((__malloc__));
# 562 "/usr/include/stdlib.h" 3
extern void abort (void) __attribute__ ((__noreturn__));



extern int atexit (void (*__func) (void)) ;




extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
            ;





extern void exit (int __status) __attribute__ ((__noreturn__));
# 588 "/usr/include/stdlib.h" 3
extern char *getenv (__const char *__name) ;



extern char *__secure_getenv (__const char *__name) ;





extern int putenv (char *__string) ;





extern int setenv (__const char *__name, __const char *__value, int __replace)
            ;


extern int unsetenv (__const char *__name) ;






extern int clearenv (void) ;
# 624 "/usr/include/stdlib.h" 3
extern char *mktemp (char *__template) ;







extern int mkstemp (char *__template) ;
# 651 "/usr/include/stdlib.h" 3
extern char *mkdtemp (char *__template) ;




extern int system (__const char *__command) ;
# 673 "/usr/include/stdlib.h" 3
extern char *realpath (__const char *__restrict __name,
                       char *__restrict __resolved) ;






typedef int (*__compar_fn_t) (__const void *, __const void *);
# 690 "/usr/include/stdlib.h" 3
extern void *bsearch (__const void *__key, __const void *__base,
                      size_t __nmemb, size_t __size, __compar_fn_t __compar);



extern void qsort (void *__base, size_t __nmemb, size_t __size,
                   __compar_fn_t __compar);



extern int abs (int __x) __attribute__ ((__const__));
extern long int labs (long int __x) __attribute__ ((__const__));
# 711 "/usr/include/stdlib.h" 3
extern div_t div (int __numer, int __denom)
             __attribute__ ((__const__));
extern ldiv_t ldiv (long int __numer, long int __denom)
             __attribute__ ((__const__));
# 729 "/usr/include/stdlib.h" 3
extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
                   int *__restrict __sign) ;




extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
                   int *__restrict __sign) ;




extern char *gcvt (double __value, int __ndigit, char *__buf) ;




extern char *qecvt (long double __value, int __ndigit,
                    int *__restrict __decpt, int *__restrict __sign) ;
extern char *qfcvt (long double __value, int __ndigit,
                    int *__restrict __decpt, int *__restrict __sign) ;
extern char *qgcvt (long double __value, int __ndigit, char *__buf) ;




extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
                   int *__restrict __sign, char *__restrict __buf,
                   size_t __len) ;
extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
                   int *__restrict __sign, char *__restrict __buf,
                   size_t __len) ;

extern int qecvt_r (long double __value, int __ndigit,
                    int *__restrict __decpt, int *__restrict __sign,
                    char *__restrict __buf, size_t __len) ;
extern int qfcvt_r (long double __value, int __ndigit,
                    int *__restrict __decpt, int *__restrict __sign,
                    char *__restrict __buf, size_t __len) ;






extern int mblen (__const char *__s, size_t __n) ;


extern int mbtowc (wchar_t *__restrict __pwc,
                   __const char *__restrict __s, size_t __n) ;


extern int wctomb (char *__s, wchar_t __wchar) ;



extern size_t mbstowcs (wchar_t *__restrict __pwcs,
                        __const char *__restrict __s, size_t __n) ;

extern size_t wcstombs (char *__restrict __s,
                        __const wchar_t *__restrict __pwcs, size_t __n)
            ;







extern int rpmatch (__const char *__response) ;
# 859 "/usr/include/stdlib.h" 3
extern int getloadavg (double __loadavg[], int __nelem) ;
# 67 "common.h" 2


# 1 "/usr/include/errno.h" 1 3
# 29 "/usr/include/errno.h" 3
# 1 "/usr/include/features.h" 1 3
# 30 "/usr/include/errno.h" 2 3






# 1 "/usr/include/bits/errno.h" 1 3
# 25 "/usr/include/bits/errno.h" 3
# 1 "/usr/include/linux/errno.h" 1 3



# 1 "/usr/include/asm/errno.h" 1 3
# 5 "/usr/include/linux/errno.h" 2 3
# 26 "/usr/include/bits/errno.h" 2 3
# 36 "/usr/include/bits/errno.h" 3
extern int errno;


extern int *__errno_location (void) __attribute__ ((__const__));
# 37 "/usr/include/errno.h" 2 3
# 70 "common.h" 2


# 1 "/usr/include/unistd.h" 1 3
# 26 "/usr/include/unistd.h" 3
# 1 "/usr/include/features.h" 1 3
# 27 "/usr/include/unistd.h" 2 3
# 175 "/usr/include/unistd.h" 3
# 1 "/usr/include/bits/posix_opt.h" 1 3
# 176 "/usr/include/unistd.h" 2 3
# 190 "/usr/include/unistd.h" 3
# 1 "/usr/include/bits/types.h" 1 3
# 191 "/usr/include/unistd.h" 2 3
# 199 "/usr/include/unistd.h" 3
# 1 "/usr/lib/gcc-lib/i386-pld-linux/3.0.1/include/stddef.h" 1 3
# 200 "/usr/include/unistd.h" 2 3
# 240 "/usr/include/unistd.h" 3
typedef __intptr_t intptr_t;






typedef __socklen_t socklen_t;
# 260 "/usr/include/unistd.h" 3
extern int access (__const char *__name, int __type) ;
# 290 "/usr/include/unistd.h" 3
extern __off_t lseek (int __fd, __off_t __offset, int __whence) ;
# 306 "/usr/include/unistd.h" 3
extern int close (int __fd) ;



extern ssize_t read (int __fd, void *__buf, size_t __nbytes) ;


extern ssize_t write (int __fd, __const void *__buf, size_t __n) ;
# 353 "/usr/include/unistd.h" 3
extern int pipe (int __pipedes[2]) ;
# 362 "/usr/include/unistd.h" 3
extern unsigned int alarm (unsigned int __seconds) ;
# 371 "/usr/include/unistd.h" 3
extern unsigned int sleep (unsigned int __seconds) ;






extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval)
            ;



extern int usleep (__useconds_t __useconds) ;





extern int pause (void) ;



extern int chown (__const char *__file, __uid_t __owner, __gid_t __group)
            ;



extern int fchown (int __fd, __uid_t __owner, __gid_t __group) ;




extern int lchown (__const char *__file, __uid_t __owner, __gid_t __group)
            ;




extern int chdir (__const char *__path) ;



extern int fchdir (int __fd) ;
# 423 "/usr/include/unistd.h" 3
extern char *getcwd (char *__buf, size_t __size) ;
# 436 "/usr/include/unistd.h" 3
extern char *getwd (char *__buf) ;




extern int dup (int __fd) ;


extern int dup2 (int __fd, int __fd2) ;


extern char **__environ;







extern int execve (__const char *__path, char *__const __argv[],
                   char *__const __envp[]) ;
# 467 "/usr/include/unistd.h" 3
extern int execv (__const char *__path, char *__const __argv[]) ;



extern int execle (__const char *__path, __const char *__arg, ...) ;



extern int execl (__const char *__path, __const char *__arg, ...) ;



extern int execvp (__const char *__file, char *__const __argv[]) ;




extern int execlp (__const char *__file, __const char *__arg, ...) ;




extern int nice (int __inc) ;




extern void _exit (int __status) __attribute__ ((__noreturn__));





# 1 "/usr/include/bits/confname.h" 1 3
# 25 "/usr/include/bits/confname.h" 3
enum
  {
    _PC_LINK_MAX,

    _PC_MAX_CANON,

    _PC_MAX_INPUT,

    _PC_NAME_MAX,

    _PC_PATH_MAX,

    _PC_PIPE_BUF,

    _PC_CHOWN_RESTRICTED,

    _PC_NO_TRUNC,

    _PC_VDISABLE,

    _PC_SYNC_IO,

    _PC_ASYNC_IO,

    _PC_PRIO_IO,

    _PC_SOCK_MAXBUF,

    _PC_FILESIZEBITS,

    _PC_REC_INCR_XFER_SIZE,

    _PC_REC_MAX_XFER_SIZE,

    _PC_REC_MIN_XFER_SIZE,

    _PC_REC_XFER_ALIGN

  };


enum
  {
    _SC_ARG_MAX,

    _SC_CHILD_MAX,

    _SC_CLK_TCK,

    _SC_NGROUPS_MAX,

    _SC_OPEN_MAX,

    _SC_STREAM_MAX,

    _SC_TZNAME_MAX,

    _SC_JOB_CONTROL,

    _SC_SAVED_IDS,

    _SC_REALTIME_SIGNALS,

    _SC_PRIORITY_SCHEDULING,

    _SC_TIMERS,

    _SC_ASYNCHRONOUS_IO,

    _SC_PRIORITIZED_IO,

    _SC_SYNCHRONIZED_IO,

    _SC_FSYNC,

    _SC_MAPPED_FILES,

    _SC_MEMLOCK,

    _SC_MEMLOCK_RANGE,

    _SC_MEMORY_PROTECTION,

    _SC_MESSAGE_PASSING,

    _SC_SEMAPHORES,

    _SC_SHARED_MEMORY_OBJECTS,

    _SC_AIO_LISTIO_MAX,

    _SC_AIO_MAX,

    _SC_AIO_PRIO_DELTA_MAX,

    _SC_DELAYTIMER_MAX,

    _SC_MQ_OPEN_MAX,

    _SC_MQ_PRIO_MAX,

    _SC_VERSION,

    _SC_PAGESIZE,


    _SC_RTSIG_MAX,

    _SC_SEM_NSEMS_MAX,

    _SC_SEM_VALUE_MAX,

    _SC_SIGQUEUE_MAX,

    _SC_TIMER_MAX,




    _SC_BC_BASE_MAX,

    _SC_BC_DIM_MAX,

    _SC_BC_SCALE_MAX,

    _SC_BC_STRING_MAX,

    _SC_COLL_WEIGHTS_MAX,

    _SC_EQUIV_CLASS_MAX,

    _SC_EXPR_NEST_MAX,

    _SC_LINE_MAX,

    _SC_RE_DUP_MAX,

    _SC_CHARCLASS_NAME_MAX,


    _SC_2_VERSION,

    _SC_2_C_BIND,

    _SC_2_C_DEV,

    _SC_2_FORT_DEV,

    _SC_2_FORT_RUN,

    _SC_2_SW_DEV,

    _SC_2_LOCALEDEF,


    _SC_PII,

    _SC_PII_XTI,

    _SC_PII_SOCKET,

    _SC_PII_INTERNET,

    _SC_PII_OSI,

    _SC_POLL,

    _SC_SELECT,

    _SC_UIO_MAXIOV,

    _SC_IOV_MAX = _SC_UIO_MAXIOV,

    _SC_PII_INTERNET_STREAM,

    _SC_PII_INTERNET_DGRAM,

    _SC_PII_OSI_COTS,

    _SC_PII_OSI_CLTS,

    _SC_PII_OSI_M,

    _SC_T_IOV_MAX,



    _SC_THREADS,

    _SC_THREAD_SAFE_FUNCTIONS,

    _SC_GETGR_R_SIZE_MAX,

    _SC_GETPW_R_SIZE_MAX,

    _SC_LOGIN_NAME_MAX,

    _SC_TTY_NAME_MAX,

    _SC_THREAD_DESTRUCTOR_ITERATIONS,

    _SC_THREAD_KEYS_MAX,

    _SC_THREAD_STACK_MIN,

    _SC_THREAD_THREADS_MAX,

    _SC_THREAD_ATTR_STACKADDR,

    _SC_THREAD_ATTR_STACKSIZE,

    _SC_THREAD_PRIORITY_SCHEDULING,

    _SC_THREAD_PRIO_INHERIT,

    _SC_THREAD_PRIO_PROTECT,

    _SC_THREAD_PROCESS_SHARED,


    _SC_NPROCESSORS_CONF,

    _SC_NPROCESSORS_ONLN,

    _SC_PHYS_PAGES,

    _SC_AVPHYS_PAGES,

    _SC_ATEXIT_MAX,

    _SC_PASS_MAX,


    _SC_XOPEN_VERSION,

    _SC_XOPEN_XCU_VERSION,

    _SC_XOPEN_UNIX,

    _SC_XOPEN_CRYPT,

    _SC_XOPEN_ENH_I18N,

    _SC_XOPEN_SHM,


    _SC_2_CHAR_TERM,

    _SC_2_C_VERSION,

    _SC_2_UPE,


    _SC_XOPEN_XPG2,

    _SC_XOPEN_XPG3,

    _SC_XOPEN_XPG4,


    _SC_CHAR_BIT,

    _SC_CHAR_MAX,

    _SC_CHAR_MIN,

    _SC_INT_MAX,

    _SC_INT_MIN,

    _SC_LONG_BIT,

    _SC_WORD_BIT,

    _SC_MB_LEN_MAX,

    _SC_NZERO,

    _SC_SSIZE_MAX,

    _SC_SCHAR_MAX,

    _SC_SCHAR_MIN,

    _SC_SHRT_MAX,

    _SC_SHRT_MIN,

    _SC_UCHAR_MAX,

    _SC_UINT_MAX,

    _SC_ULONG_MAX,

    _SC_USHRT_MAX,


    _SC_NL_ARGMAX,

    _SC_NL_LANGMAX,

    _SC_NL_MSGMAX,

    _SC_NL_NMAX,

    _SC_NL_SETMAX,

    _SC_NL_TEXTMAX,


    _SC_XBS5_ILP32_OFF32,

    _SC_XBS5_ILP32_OFFBIG,

    _SC_XBS5_LP64_OFF64,

    _SC_XBS5_LPBIG_OFFBIG,


    _SC_XOPEN_LEGACY,

    _SC_XOPEN_REALTIME,

    _SC_XOPEN_REALTIME_THREADS,


    _SC_ADVISORY_INFO,

    _SC_BARRIERS,

    _SC_BASE,

    _SC_C_LANG_SUPPORT,

    _SC_C_LANG_SUPPORT_R,

    _SC_CLOCK_SELECTION,

    _SC_CPUTIME,

    _SC_THREAD_CPUTIME,

    _SC_DEVICE_IO,

    _SC_DEVICE_SPECIFIC,

    _SC_DEVICE_SPECIFIC_R,

    _SC_FD_MGMT,

    _SC_FIFO,

    _SC_PIPE,

    _SC_FILE_ATTRIBUTES,

    _SC_FILE_LOCKING,

    _SC_FILE_SYSTEM,

    _SC_MONOTONIC_CLOCK,

    _SC_MULTIPLE_PROCESS,

    _SC_SINGLE_PROCESS,

    _SC_NETWORKING,

    _SC_READER_WRITER_LOCKS,

    _SC_SPIN_LOCKS,

    _SC_REGEXP,

    _SC_REGEX_VERSION,

    _SC_SHELL,

    _SC_SIGNALS,

    _SC_SPAWN,

    _SC_SPORADIC_SERVER,

    _SC_THREAD_SPORADIC_SERVER,

    _SC_SYSTEM_DATABASE,

    _SC_SYSTEM_DATABASE_R,

    _SC_TIMEOUTS,

    _SC_TYPED_MEMORY_OBJECTS,

    _SC_USER_GROUPS,

    _SC_USER_GROUPS_R,

    _SC_2_PBS,

    _SC_2_PBS_ACCOUNTING,

    _SC_2_PBS_LOCATE,

    _SC_2_PBS_MESSAGE,

    _SC_2_PBS_TRACK,

    _SC_SYMLOOP,

    _SC_STREAMS,

    _SC_2_PBS_CHECKPOINT

  };





enum
  {
    _CS_PATH
# 506 "/usr/include/bits/confname.h" 3
  };
# 501 "/usr/include/unistd.h" 2 3


extern long int pathconf (__const char *__path, int __name) ;


extern long int fpathconf (int __fd, int __name) ;


extern long int sysconf (int __name) __attribute__ ((__const__));



extern size_t confstr (int __name, char *__buf, size_t __len) ;




extern __pid_t getpid (void) ;


extern __pid_t getppid (void) ;




extern __pid_t getpgrp (void) ;
# 536 "/usr/include/unistd.h" 3
extern __pid_t __getpgid (__pid_t __pid) ;
# 545 "/usr/include/unistd.h" 3
extern int setpgid (__pid_t __pid, __pid_t __pgid) ;
# 562 "/usr/include/unistd.h" 3
extern int setpgrp (void) ;
# 580 "/usr/include/unistd.h" 3
extern __pid_t setsid (void) ;







extern __uid_t getuid (void) ;


extern __uid_t geteuid (void) ;


extern __gid_t getgid (void) ;


extern __gid_t getegid (void) ;




extern int getgroups (int __size, __gid_t __list[]) ;
# 613 "/usr/include/unistd.h" 3
extern int setuid (__uid_t __uid) ;




extern int setreuid (__uid_t __ruid, __uid_t __euid) ;




extern int seteuid (__uid_t __uid) ;






extern int setgid (__gid_t __gid) ;




extern int setregid (__gid_t __rgid, __gid_t __egid) ;




extern int setegid (__gid_t __gid) ;






extern __pid_t fork (void) ;






extern __pid_t vfork (void) ;





extern char *ttyname (int __fd) ;



extern int ttyname_r (int __fd, char *__buf, size_t __buflen) ;



extern int isatty (int __fd) ;





extern int ttyslot (void) ;




extern int link (__const char *__from, __const char *__to) ;



extern int symlink (__const char *__from, __const char *__to) ;




extern int readlink (__const char *__restrict __path, char *__restrict __buf,
                     size_t __len) ;



extern int unlink (__const char *__name) ;


extern int rmdir (__const char *__path) ;



extern __pid_t tcgetpgrp (int __fd) ;


extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) ;



extern char *getlogin (void) ;
# 717 "/usr/include/unistd.h" 3
extern int setlogin (__const char *__name) ;
# 726 "/usr/include/unistd.h" 3
# 1 "/usr/include/getopt.h" 1 3
# 47 "/usr/include/getopt.h" 3
extern char *optarg;
# 61 "/usr/include/getopt.h" 3
extern int optind;




extern int opterr;



extern int optopt;
# 145 "/usr/include/getopt.h" 3
extern int getopt (int __argc, char *const *__argv, const char *__shortopts);
# 727 "/usr/include/unistd.h" 2 3







extern int gethostname (char *__name, size_t __len) ;






extern int sethostname (__const char *__name, size_t __len) ;



extern int sethostid (long int __id) ;





extern int getdomainname (char *__name, size_t __len) ;
extern int setdomainname (__const char *__name, size_t __len) ;





extern int vhangup (void) ;


extern int revoke (__const char *__file) ;







extern int profil (unsigned short int *__sample_buffer, size_t __size,
                   size_t __offset, unsigned int __scale) ;





extern int acct (__const char *__name) ;



extern char *getusershell (void) ;
extern void endusershell (void) ;
extern void setusershell (void) ;





extern int daemon (int __nochdir, int __noclose) ;






extern int chroot (__const char *__path) ;



extern char *getpass (__const char *__prompt) ;





extern int fsync (int __fd) ;






extern long int gethostid (void) ;


extern void sync (void) ;




extern int getpagesize (void) __attribute__ ((__const__));




extern int truncate (__const char *__file, __off_t __length) ;
# 841 "/usr/include/unistd.h" 3
extern int ftruncate (int __fd, __off_t __length) ;
# 857 "/usr/include/unistd.h" 3
extern int getdtablesize (void) ;
# 866 "/usr/include/unistd.h" 3
extern int brk (void *__addr) ;





extern void *sbrk (intptr_t __delta) ;
# 887 "/usr/include/unistd.h" 3
extern long int syscall (long int __sysno, ...) ;
# 938 "/usr/include/unistd.h" 3
extern int fdatasync (int __fildes) ;
# 983 "/usr/include/unistd.h" 3
extern int pthread_atfork (void (*__prepare) (void),
                           void (*__parent) (void),
                           void (*__child) (void)) ;
# 73 "common.h" 2
# 129 "common.h"
typedef struct
{
    char *str;
    void (*rtn)();
    int type;
} FNC;

typedef struct llst
{
    struct llst
        *next,
        *prev;
} LLST;

typedef uint16 DBLPC;
# 211 "common.h"
extern int g_nmdigs[];
# 222 "common.h"
extern void dblwarn3(int, char *, char *);
extern void dblerr3(int, char *, char *);
extern void dblfatal3(int, char *, char *);






# 1 "utlproto.h" 1
# 32 "utlproto.h"
void cache_memfree();

int xclosec(int);
int xcreat(char *, int);
int cache_init(unsigned int, unsigned int);
long xpos(int);
long xseek(int, long, int);
int xwrite(int, char *, unsigned int);
# 52 "utlproto.h"
int cmpspc(unsigned char *, int , unsigned char *, int);






int d_compr(uint8 *, const uint8 *, int);
int d_uncompr(uint8 *, const uint8 *, int, int);







int d_bsrch(char *, int, int, char *);

int d_bsrchf(char *, int, int, char *, int (*)(char *, char *));
# 80 "utlproto.h"
int d_chkdigs(const char *, int);

long d_dec_to_int (const char *, int);

void d_dec_to_pck(char *, int, int, char *);
long d_dscr_to_int(const DESCRIP *);
char *getext(char *);
long odd_getival(int8 *, int);
unsigned long d_getuival(const int8 *, int);
void d_int_to_dec(char *, int, long);

void d_int_to_dscr (void *, long);
void odd_putival(char *, int, long);
int d_putival_fit(char *, int, long);
int d_reqisiz(long);
void d_utoa(unsigned long, char *, int);
int d_gettyp(DESCRIP *);
# 117 "utlproto.h"
void d_addtn();
void d_subt();
void d_divdiv();
void d_divd();
void d_mult();
void d_negat();
void d_rnd();
void d_rndrnd();
void d_lior();
void d_lxor();
void d_land();
void d_lnot();
void d_bior();
void d_bxor();
void d_band();
void d_bnot();
void d_eql();
void d_neq();
void d_lss();
void d_leq();
void d_gtr();
void d_geq();
void d_seql();
void d_sneq();
void d_slss();
void d_sleq();
void d_sgtr();
void d_sgeq();



void d_arith_init();
void d_cnvrt(DESCRIP *, int);
int d_do_instr(const DESCRIP *, const DESCRIP *, const DESCRIP *);
void d_cnvpck(DESCRIP *);
int d_truth(const DESCRIP *);
int d_dcmp(const int8 *cp1, const int8 *, int, int, int, int);



void set_ohtruth();



char *d_opn_erfil();
void d_shuterr();

void d_cmn_err(int, char *, char *);
void d_cmn_fatal(int, char *, char *);
void d_cmn_warn(int, char *, char *);
int d_errget(int, DESCRIP *, int *);
void d_lderror(int, char *, char *, int);
# 193 "utlproto.h"
int f_abs(DESCRIP **);
int f_atrim(DESCRIP **);
int f_bit_is_clr(DESCRIP **);
int f_bit_is_set(DESCRIP **);
int f_char(DESCRIP **);
int f_bin(DESCRIP **);
int f_oct(DESCRIP **);
int f_hex(DESCRIP **);
int f_false(DESCRIP **);
int f_implied(DESCRIP **);
int f_integer(DESCRIP **);
int f_round(DESCRIP **);
int f_rnd(DESCRIP **);
int f_trunc(DESCRIP **);
int f_truncate(DESCRIP **);
int f_int(DESCRIP **);
int f_size(DESCRIP **);
int f_string(DESCRIP **);
int f_success(DESCRIP **);
int f_true(DESCRIP **);
int f_unsigned(DESCRIP **);
int f_vms(DESCRIP **);
int f_xtrnl(DESCRIP **);
int f_zoned(DESCRIP **);
int d_do_rvstr(DESCRIP *, DESCRIP *, DESCRIP *);
void d_do_stdaf(DESCRIP *, DESCRIP *, DESCRIP *);
int fnc_round(char *, int, int);
void stad(DESCRIP *, const DESCRIP *);


void h_bin();
void h_oct();
void h_hex();
int d_addsub(int, DESCRIP *, DESCRIP *);
void d_do_divd(DESCRIP *);
void d_do_mult(DESCRIP *);
char *d_errstr(DESCRIP *);
char *d_getdec(DESCRIP *, int *, int *, int *);


void user_exit_handler();


int getcmdln();
void initcmdfl();

char *getcl(FILE *, char *);
# 310 "utlproto.h"
void d_int8_init(void);
uint32 *d_i8tmp(DSCR_A *);
uint32 *d_dscr_to_int8(DESCRIP *, uint32 *);
void d_int8_to_dec(char *, int, uint32 *);
void d_int8_to_ndscr(uint32 *, DESCRIP *);
uint32 *d_i8add(uint32 *, DESCRIP *);
uint32 *d_i8sub(uint32 *, DESCRIP *);
int d_i8cmp(uint32 *, uint32 *);
uint32 *d_i8inc(uint32 *);
uint32 *d_i8dec(uint32 *);
uint32 *d_i8neg(uint32 *);
uint32 *d_i8addi(uint32 *, uint32 *);
uint32 *d_i8subi(uint32 *, uint32 *);
uint32 *d_i8mul(uint32 *, DESCRIP *);
uint32 *d_i8div(uint32 *, DESCRIP *);


extern int d_makename(char *, char *, int, int);
extern char *r_mktemp(char *);



extern char *get_defext(int);


extern char *d_makename_p(char *, char *, int, int);







extern void *get_wrkmem(WRK_MEM *, int);
extern void *new_wrkmem(WRK_MEM *, int);


extern int d_prs_token(void);
extern int d_prs_chkchr(int);
extern int d_prs_chkid(char *);
extern int d_prs_chkidp(char *);
extern int d_prs_getchr(int);
extern int d_prs_getid(char *);
extern int d_prs_getidp(char *);
extern void d_prs_init(int (*)());
extern void d_prs_line(char *, int);
extern int d_prs_match(char *, int);
extern int d_prs_rescan(char *);
# 366 "utlproto.h"
extern char * d_charscan(char *, char *, int);



extern char *d_sindex(char *s, char *);
extern char *d_strscan(char *, char *, int);
extern char *d_terscan(char *, int);
extern int snmatch(const char *, int, const char **, int *);







extern void d_locase(char *);
extern void d_upcase(char *);

extern int d_memicmp(const uint8 *, const uint8 *, int);



extern int d_get_dmy(char *, int, int *, int *, int *);
extern int d_val_dmy(int, int, int);
extern int d_dmy_to_jp(int, int, int);
extern char *d_jp_to_date(int, int);
extern char *d_bld_curdat(char *);
extern char *d_bld_credat(char *, char *);
extern void d_bld_time(char *);
extern void d_bld_date(char *);
extern void d_bld_date2(DESCRIP *);
extern void d_bld_date3(DESCRIP *);
extern void d_bld_date4(DESCRIP *);
# 411 "utlproto.h"
extern int cvt_str_int(char *, int, int, DESCRIP *);
extern int cvt_str_dbl(char *, int, int, DESCRIP *);
# 232 "common.h" 2
# 1 "cmnproto.h" 1
# 25 "cmnproto.h"
extern int io_open(char *, int, int, int);


extern void infoerr4(int, int, unsigned long, unsigned long);
# 233 "common.h" 2
# 32 "isam.h" 2


# 1 "io_cmn.h" 1



typedef union fileoff
{



    int32 b64;

    int32 b32;
} FILEOFF;


extern int io_flush(int, int);
extern int rrename(char *, char *);

extern int multi_chan(int);
extern scan_dead(char *, int32);

extern int se_lock(int, int, int, unsigned long, int);
extern int se_dlock(int, int, int, FILEOFF, int, int);
# 35 "isam.h" 2



extern void infoerr4(int, int, unsigned long, unsigned long);
# 52 "isam.h"
# 1 "rdeferr.h" 1
# 53 "isam.h" 2
# 1 "/usr/include/errno.h" 1 3
# 54 "isam.h" 2
# 1 "/usr/include/setjmp.h" 1 3
# 26 "/usr/include/setjmp.h" 3
# 1 "/usr/include/features.h" 1 3
# 27 "/usr/include/setjmp.h" 2 3



# 1 "/usr/include/bits/setjmp.h" 1 3
# 36 "/usr/include/bits/setjmp.h" 3
typedef int __jmp_buf[6];
# 31 "/usr/include/setjmp.h" 2 3
# 1 "/usr/include/bits/sigset.h" 1 3
# 32 "/usr/include/setjmp.h" 2 3


typedef struct __jmp_buf_tag
  {




    __jmp_buf __jmpbuf;
    int __mask_was_saved;
    __sigset_t __saved_mask;
  } jmp_buf[1];




extern int setjmp (jmp_buf __env) ;



extern int _setjmp (jmp_buf __env) ;




extern int __sigsetjmp (jmp_buf __env, int __savemask) ;
# 73 "/usr/include/setjmp.h" 3
extern void longjmp (jmp_buf __env, int __val)
             __attribute__ ((__noreturn__));




extern void _longjmp (jmp_buf __env, int __val)
             __attribute__ ((__noreturn__));







typedef jmp_buf sigjmp_buf;
# 98 "/usr/include/setjmp.h" 3
extern void siglongjmp (sigjmp_buf __env, int __val)
             __attribute__ ((__noreturn__));
# 55 "isam.h" 2
# 1 "sysmem.h" 1
# 59 "sysmem.h"
# 1 "sysmemdbg.h" 1
# 60 "sysmem.h" 2


typedef struct
{
    LLST list;
    char mem_beg[4];
} MEM_LLST;



void do_memchk();

char *MEM_alloc(int, char *, int, char *);
void MEM_free(char *, char *, int);
void MEM_begin(int, char **, char *, int);
void MEM_scan(char *file, int);
int MEM_quit(char *, int);
void MEM_setwatch(char *, unsigned char *, int, char *, int);
void MEM_clrwatch(char *, char *, int);
void memdbg_txthdr(char *);
# 98 "sysmem.h"
extern char *get_vm(int, char *, int, char *);
extern void rel_vm(char *, char *, int);
# 56 "isam.h" 2

# 1 "sdms.h" 1
# 33 "sdms.h"
# 1 "/usr/include/setjmp.h" 1 3
# 34 "sdms.h" 2

# 1 "/usr/include/netinet/in.h" 1 3
# 22 "/usr/include/netinet/in.h" 3
# 1 "/usr/include/features.h" 1 3
# 23 "/usr/include/netinet/in.h" 2 3
# 1 "/usr/include/stdint.h" 1 3
# 26 "/usr/include/stdint.h" 3
# 1 "/usr/include/features.h" 1 3
# 27 "/usr/include/stdint.h" 2 3

# 1 "/usr/lib/gcc-lib/i386-pld-linux/3.0.1/include/stddef.h" 1 3
# 29 "/usr/include/stdint.h" 2 3
# 1 "/usr/include/bits/wchar.h" 1 3
# 30 "/usr/include/stdint.h" 2 3
# 1 "/usr/include/bits/wordsize.h" 1 3
# 31 "/usr/include/stdint.h" 2 3
# 51 "/usr/include/stdint.h" 3
typedef unsigned char uint8_t;
typedef unsigned short int uint16_t;

typedef unsigned int uint32_t;





__extension__
typedef unsigned long long int uint64_t;






typedef signed char int_least8_t;
typedef short int int_least16_t;
typedef int int_least32_t;



__extension__
typedef long long int int_least64_t;



typedef unsigned char uint_least8_t;
typedef unsigned short int uint_least16_t;
typedef unsigned int uint_least32_t;



__extension__
typedef unsigned long long int uint_least64_t;






typedef signed char int_fast8_t;





typedef int int_fast16_t;
typedef int int_fast32_t;
__extension__
typedef long long int int_fast64_t;



typedef unsigned char uint_fast8_t;





typedef unsigned int uint_fast16_t;
typedef unsigned int uint_fast32_t;
__extension__
typedef unsigned long long int uint_fast64_t;
# 131 "/usr/include/stdint.h" 3
typedef unsigned int uintptr_t;
# 140 "/usr/include/stdint.h" 3
__extension__
typedef long long int intmax_t;
__extension__
typedef unsigned long long int uintmax_t;
# 24 "/usr/include/netinet/in.h" 2 3
# 1 "/usr/include/bits/types.h" 1 3
# 25 "/usr/include/netinet/in.h" 2 3





enum
  {
    IPPROTO_IP = 0,

    IPPROTO_HOPOPTS = 0,

    IPPROTO_ICMP = 1,

    IPPROTO_IGMP = 2,

    IPPROTO_IPIP = 4,

    IPPROTO_TCP = 6,

    IPPROTO_EGP = 8,

    IPPROTO_PUP = 12,

    IPPROTO_UDP = 17,

    IPPROTO_IDP = 22,

    IPPROTO_TP = 29,

    IPPROTO_IPV6 = 41,

    IPPROTO_ROUTING = 43,

    IPPROTO_FRAGMENT = 44,

    IPPROTO_RSVP = 46,

    IPPROTO_GRE = 47,

    IPPROTO_ESP = 50,

    IPPROTO_AH = 51,

    IPPROTO_ICMPV6 = 58,

    IPPROTO_NONE = 59,

    IPPROTO_DSTOPTS = 60,

    IPPROTO_MTP = 92,

    IPPROTO_ENCAP = 98,

    IPPROTO_PIM = 103,

    IPPROTO_COMP = 108,

    IPPROTO_RAW = 255,

    IPPROTO_MAX
  };



typedef uint16_t in_port_t;


enum
  {
    IPPORT_ECHO = 7,
    IPPORT_DISCARD = 9,
    IPPORT_SYSTAT = 11,
    IPPORT_DAYTIME = 13,
    IPPORT_NETSTAT = 15,
    IPPORT_FTP = 21,
    IPPORT_TELNET = 23,
    IPPORT_SMTP = 25,
    IPPORT_TIMESERVER = 37,
    IPPORT_NAMESERVER = 42,
    IPPORT_WHOIS = 43,
    IPPORT_MTP = 57,

    IPPORT_TFTP = 69,
    IPPORT_RJE = 77,
    IPPORT_FINGER = 79,
    IPPORT_TTYLINK = 87,
    IPPORT_SUPDUP = 95,


    IPPORT_EXECSERVER = 512,
    IPPORT_LOGINSERVER = 513,
    IPPORT_CMDSERVER = 514,
    IPPORT_EFSSERVER = 520,


    IPPORT_BIFFUDP = 512,
    IPPORT_WHOSERVER = 513,
    IPPORT_ROUTESERVER = 520,


    IPPORT_RESERVED = 1024,


    IPPORT_USERRESERVED = 5000
  };



typedef uint32_t in_addr_t;
struct in_addr
  {
    in_addr_t s_addr;
  };
# 190 "/usr/include/netinet/in.h" 3
struct in6_addr
  {
    union
      {
        uint8_t u6_addr8[16];
        uint16_t u6_addr16[8];
        uint32_t u6_addr32[4];
      } in6_u;



  };

extern const struct in6_addr in6addr_any;
extern const struct in6_addr in6addr_loopback;







# 1 "/usr/include/bits/socket.h" 1 3
# 29 "/usr/include/bits/socket.h" 3
# 1 "/usr/lib/gcc-lib/i386-pld-linux/3.0.1/include/stddef.h" 1 3
# 30 "/usr/include/bits/socket.h" 2 3

# 1 "/usr/lib/gcc-lib/i386-pld-linux/3.0.1/include/limits.h" 1 3
# 11 "/usr/lib/gcc-lib/i386-pld-linux/3.0.1/include/limits.h" 3
# 1 "/usr/lib/gcc-lib/i386-pld-linux/3.0.1/include/syslimits.h" 1 3






# 1 "/usr/lib/gcc-lib/i386-pld-linux/3.0.1/include/limits.h" 1 3
# 125 "/usr/lib/gcc-lib/i386-pld-linux/3.0.1/include/limits.h" 3
# 1 "/usr/include/limits.h" 1 3
# 26 "/usr/include/limits.h" 3
# 1 "/usr/include/features.h" 1 3
# 27 "/usr/include/limits.h" 2 3
# 144 "/usr/include/limits.h" 3
# 1 "/usr/include/bits/posix1_lim.h" 1 3
# 126 "/usr/include/bits/posix1_lim.h" 3
# 1 "/usr/include/bits/local_lim.h" 1 3
# 36 "/usr/include/bits/local_lim.h" 3
# 1 "/usr/include/linux/limits.h" 1 3
# 37 "/usr/include/bits/local_lim.h" 2 3
# 127 "/usr/include/bits/posix1_lim.h" 2 3
# 145 "/usr/include/limits.h" 2 3



# 1 "/usr/include/bits/posix2_lim.h" 1 3
# 149 "/usr/include/limits.h" 2 3
# 126 "/usr/lib/gcc-lib/i386-pld-linux/3.0.1/include/limits.h" 2 3
# 8 "/usr/lib/gcc-lib/i386-pld-linux/3.0.1/include/syslimits.h" 2 3
# 12 "/usr/lib/gcc-lib/i386-pld-linux/3.0.1/include/limits.h" 2 3
# 32 "/usr/include/bits/socket.h" 2 3
# 1 "/usr/include/sys/types.h" 1 3
# 33 "/usr/include/bits/socket.h" 2 3
# 41 "/usr/include/bits/socket.h" 3
enum __socket_type
{
  SOCK_STREAM = 1,


  SOCK_DGRAM = 2,


  SOCK_RAW = 3,

  SOCK_RDM = 4,

  SOCK_SEQPACKET = 5,


  SOCK_PACKET = 10



};
# 138 "/usr/include/bits/socket.h" 3
# 1 "/usr/include/bits/sockaddr.h" 1 3
# 29 "/usr/include/bits/sockaddr.h" 3
typedef unsigned short int sa_family_t;
# 139 "/usr/include/bits/socket.h" 2 3


struct sockaddr
  {
    sa_family_t sa_family;
    char sa_data[14];
  };
# 158 "/usr/include/bits/socket.h" 3
struct sockaddr_storage
  {
    sa_family_t ss_family;
    __uint32_t __ss_align;
    char __ss_padding[(128 - (2 * sizeof (__uint32_t)))];
  };



enum
  {
    MSG_OOB = 0x01,

    MSG_PEEK = 0x02,

    MSG_DONTROUTE = 0x04,






    MSG_CTRUNC = 0x08,

    MSG_PROXY = 0x10,

    MSG_TRUNC = 0x20,

    MSG_DONTWAIT = 0x40,

    MSG_EOR = 0x80,

    MSG_WAITALL = 0x100,

    MSG_FIN = 0x200,

    MSG_SYN = 0x400,

    MSG_CONFIRM = 0x800,

    MSG_RST = 0x1000,

    MSG_ERRQUEUE = 0x2000,

    MSG_NOSIGNAL = 0x4000

  };




struct msghdr
  {
    void *msg_name;
    socklen_t msg_namelen;

    struct iovec *msg_iov;
    int msg_iovlen;

    void *msg_control;
    socklen_t msg_controllen;

    int msg_flags;
  };


struct cmsghdr
  {
    size_t cmsg_len;

    int cmsg_level;
    int cmsg_type;
    __extension__ unsigned char __cmsg_data [];

  };
# 250 "/usr/include/bits/socket.h" 3
extern struct cmsghdr *__cmsg_nxthdr (struct msghdr *__mhdr,
                                      struct cmsghdr *__cmsg) ;




extern __inline struct cmsghdr *
__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg)
{
  if ((size_t) __cmsg->cmsg_len < sizeof (struct cmsghdr))

    return 0;

  __cmsg = (struct cmsghdr *) ((unsigned char *) __cmsg
                               + (((__cmsg->cmsg_len) + sizeof (size_t) - 1) & (size_t) ~(sizeof (size_t) - 1)));
  if ((unsigned char *) (__cmsg + 1) >= ((unsigned char *) __mhdr->msg_control
                                         + __mhdr->msg_controllen)
      || ((unsigned char *) __cmsg + (((__cmsg->cmsg_len) + sizeof (size_t) - 1) & (size_t) ~(sizeof (size_t) - 1))
          > ((unsigned char *) __mhdr->msg_control + __mhdr->msg_controllen)))

    return 0;
  return __cmsg;
}




enum
  {
    SCM_RIGHTS = 0x01,


    SCM_CREDENTIALS = 0x02,


    __SCM_CONNECT = 0x03
  };



struct ucred
{
  pid_t pid;
  uid_t uid;
  gid_t gid;
};


# 1 "/usr/include/asm/socket.h" 1 3



# 1 "/usr/include/asm/sockios.h" 1 3
# 5 "/usr/include/asm/socket.h" 2 3
# 299 "/usr/include/bits/socket.h" 2 3



struct linger
  {
    int l_onoff;
    int l_linger;
  };
# 213 "/usr/include/netinet/in.h" 2 3



struct sockaddr_in
  {
    sa_family_t sin_family;
    in_port_t sin_port;
    struct in_addr sin_addr;


    unsigned char sin_zero[sizeof (struct sockaddr) -
                           (sizeof (unsigned short int)) -
                           sizeof (in_port_t) -
                           sizeof (struct in_addr)];
  };


struct sockaddr_in6
  {
    sa_family_t sin6_family;
    in_port_t sin6_port;
    uint32_t sin6_flowinfo;
    struct in6_addr sin6_addr;
    uint32_t sin6_scope_id;
  };


struct ipv6_mreq
  {

    struct in6_addr ipv6mr_multiaddr;


    unsigned int ipv6mr_interface;
  };


# 1 "/usr/include/bits/in.h" 1 3
# 66 "/usr/include/bits/in.h" 3
struct ip_opts
  {
    struct in_addr ip_dst;
    char ip_opts[40];
  };


struct ip_mreq
  {
    struct in_addr imr_multiaddr;
    struct in_addr imr_interface;
  };


struct ip_mreqn
  {
    struct in_addr imr_multiaddr;
    struct in_addr imr_address;
    int imr_ifindex;
  };


struct in_pktinfo
  {
    int ipi_ifindex;
    struct in_addr ipi_spec_dst;
    struct in_addr ipi_addr;
  };
# 251 "/usr/include/netinet/in.h" 2 3
# 259 "/usr/include/netinet/in.h" 3
extern uint32_t ntohl (uint32_t __netlong) __attribute__ ((__const__));
extern uint16_t ntohs (uint16_t __netshort)
             __attribute__ ((__const__));
extern uint32_t htonl (uint32_t __hostlong)
             __attribute__ ((__const__));
extern uint16_t htons (uint16_t __hostshort)
             __attribute__ ((__const__));

# 1 "/usr/include/endian.h" 1 3
# 268 "/usr/include/netinet/in.h" 2 3


# 1 "/usr/include/bits/byteswap.h" 1 3
# 271 "/usr/include/netinet/in.h" 2 3
# 333 "/usr/include/netinet/in.h" 3
extern int bindresvport (int __sockfd, struct sockaddr_in *__sock_in) ;


extern int bindresvport6 (int __sockfd, struct sockaddr_in6 *__sock_in)
            ;
# 361 "/usr/include/netinet/in.h" 3
struct in6_pktinfo
  {
    struct in6_addr ipi6_addr;
    unsigned int ipi6_ifindex;
  };
# 36 "sdms.h" 2
# 55 "sdms.h"
struct fstatus
{
    uint16
        f_rsize,
        f_pos,
        f_ksize,
        f_spare;
    int32
        f_cap,
        f_unused;
    unsigned char
        f_totkeys;
};

struct kstatus
{
    uint16
        k_pos,
        k_size;
    char
        k_dups,
        k_ascend,
        k_modify,
        k_filler;
    char
        k_name[15 +1];
    uint16
        k_offset[8],
        k_segsize[8];
};

typedef struct
{
    LLST odbctx;
    char *nulkey;
    int krf;
    int curtx;
    int invalrfa;
    int null_klen;
    int null_oldkrf;
    char rfa[6];
} ODBLST;





typedef struct
{
    uint16
        bktsiz,
        blksiz,
        bufnum,
        bufsiz,
        contig,
        deq,
        rectyp,
        filler1;
} VMS_OPENOPTS;






typedef struct
{
    int32
        c_sd_errno,
        c_rdterm,
        c_rdlen,
        c_recnum,
        c_g_syserr,
        c_g_sysstv;
    uint32
        *c_g_dblopts2;
    char
        *c_g_filnam,
        *c_g_fext,
        *c_g_fextidx;
    LLST t_logic;
    LLST t_chanl;
    WRK_MEM
        c_wrk0,
        c_wrk1,
        c_wrk2,
        cs_wrk1;
    jmp_buf
        isenv;
    char *unused1;
    void (*f_sd_procintr)(int);

    char *(*f_sd_uname)();





    void (*f_sd_infoerr)();
    uint32
        c_flags,
        c_isrev;
    uint32
        *c_g_dblopts;

    char
        *c_scrbuf;
    LLST c_hostl;
    WRK_MEM
        c_scribuf,
        c_scrdbuf;
    int32 c_clnt_endian;
    int32 c_srvr_endian;




    char passwd[80 +1];
    char uname[80 +1];
    char savename[50];
    int32 upass_got;
    int ruser;

    struct in_addr savehp;




} SDMS_CONTROL;
# 316 "sdms.h"
typedef struct
{
    char *fcp;

    int (*f_read)();
    int (*f_reads)();
    int (*f_close)();
    int (*f_store)();
    int (*f_write)();
    int (*f_update)();
    int (*f_writes)();
    int (*f_accept)();
    int (*f_delete)();
    int (*f_stat)();
    int (*f_istatus)();
    int (*f_isinfo)();
    int (*f_keystat)();
    int (*f_ikey)();
    int (*f_unlock)();
    int (*f_free)();
    int (*f_nofunc1)();
    int (*f_flush)();
    int (*f_getrfa)();
    int (*f_posrfa)();
    int (*f_getkrf)();
    int (*f_setkrf)();
    int (*f_putstr)();
    int (*f_expref)();
    int (*f_impref)();
    int (*f_forms)();
    int numtrm;
    int ftype;
    SDMS_CONTROL *sd_ctrl;
    ODBLST *odb_ctxt;
    uint8 *odb_keydups;
    char filnam[255];
    int32 *ops;
} FCNTRL;



typedef struct
{
    char
        k_flags,
        k_density,
        kname[15 +1],
        k_segflags[8];
    uint16
        k_offset[8],
        k_segsize[8],
        k_nulloff,
        ksize;
} KEY_BLD;

typedef struct
{
    uint16
        fmagic;
    uint8
        rev,
        ftype,
        knum,
        blksiz8,
        nknum,
        pad1;
    uint16
        density,
        null,
        nullblksiz,
        recsiz;
    uint32
        allocsiz,
        pad2;
    SDMS_CONTROL *sd_ctrl;

    int32 align;

    KEY_BLD
        key[1];
} FILE_BLD;
# 407 "sdms.h"
typedef struct
{
    char filename[96];
    int32 lock;
    int32 ftype;
    int32 ops[9];
} FILE_LOCK;

typedef struct
{
    LLST flent;
    char username[80 +1];
    int32 files;
    FILE_LOCK filestr[1];
} FILE_LIST;
# 510 "sdms.h"
# 1 "sdmserr.h" 1
# 160 "sdmserr.h"
static struct sdms_etxt
{
    long num;
    char *typ;
} sdms_err_array[] = {

1 ,"Bad ISAM file control",
2 ,"Specified key out of range",
3 ,"Lock failure",
4 ,"Filename length too long",
5 ,"EOF encountered",
6 ,"Index incongruity error",
7 ,"Illegal decimal key of reference",
8 ,"Illegal alpha key of reference",
9 ,"Invalid OPEN mode, Requires update",
10 ,"Invalid RFA",
11 ,"I/O error",
12 ,"Illegal record size",
13 ,"Key not same",
14 ,"No current record established",
15 ,"No duplicates allowed",
16 ,"I/O error: No disk space",
17 ,"Not an ISAM file",
18 ,"Record not locked for WRITE/DELETE",
19 ,"Cannot open data file",
20 ,"Cannot open index file",
21 ,"Qualifier incongruity error",
22 ,"I/O error: Read failure",
23 ,"Record is locked",
24 ,"Input size exceeds destination size	",
25 ,"I/O error: Write failure",
26 ,"Data incongruity, key to deleted rec	",
27 ,"Data compression/uncompression error	",
28 ,"Data freelist error",
29 ,"Deleted record error",
30 ,"Cannot create file",
31 ,"Insufficient memory for attempted op	",
32 ,"Invalid option",
33 ,"Invalid compression option",
34 ,"Invalid key length",
35 ,"Invalid record length",
36 ,"Invalid start position",
37 ,"Missing required parameter",
38 ,"Mismatched segments",
39 ,"Key spans end of record",
40 ,"Existing file, cannot overwrite",
41 ,"Undefined keys, cannot create",
42 ,"Flush error",
43 ,"Encountered old version of ISAM file	",
44 ,"Record not found (No record Read/Found)",
45 ,"Invalid null value",
47 ,"File in use by another user",
48 ,"C-ISAM file corrupted",
49 ,"Too many open files ",
50 ,"Cannot open C-ISAM file",
51 ,"C-ISAM read error",
52 ,"Cannot open BTRIEVE file",
53 ,"BTRIEVE file is corrupted",
54 ,"BTRIEVE requester not loaded",
55 ,"No privilege to this directory",
56 ,"Generic Btrieve Error",
57 ,"File not found",
58 ,"Bad file specification",
59 ,"Invalid I/O mode on open",
60 ,"Bad file org on open",
61 ,"Bad I/O options in I/O statement",
62 ,"Operation timed out",
63 ,"Illegal function for this control",
64 ,"Remote LPQUE error",
65 ,"No caching allowed",
66 ,"Bad decimal key value",
67 ,"Partial numeric key not allowed",
68 ,"Invalid overlay of numeric key",
70 ,"Invalid index page size",
71 ,"Invalid index density",
72 ,"Invalid key type",
73 ,"Invalid key order",
74 ,"Incorrect number of types specified",
75 ,"Incorrect number of orders specified",
76 ,"Invalid non-key integer size",
77 ,"Non-key integer data cannot overlap",
78 ,"Invalid overlay of non-key integer data",
79 ,"Specified segment out of range",
80 ,"Null value doesn't exist for key",
81 ,"Error in XDL file",
82 ,"Error in XDL string",
83 ,"Interrupt detected",
100 ,"Illegal record number",
101 ,"No room to write to file",
102 ,"Invalid relative record",
103 ,"Cannot delete file",
104 ,"Device not available",
105 ,"No FDL file allowed on open yet",
106 ,"Server license limit reached",
107 ,"No winsock",
108 ,"TCP/IP init error",
109 ,"TCP/IP bad remote user name",
110 ,"Cannot connect to port",
111 ,"Cannot create client connection",
112 ,"bad host name",
113 ,"Network problem",
114 ,"Server not running on remote host",
115 ,"Deadlock condition detected",
116 ,"Licensing error, see log for details",
117 ,"Licensing timed out",
118 ,"Network error after open",
119 ,"Version of Xfserver not compatible",
120 ,"Sort failure",
121 ,"Merge failure",
122 ,"Sort work file in use",
123 ,"Error writing to exception file",
124 ,"Bad data segment - correctable",
125 ,"Bad data segment - non-correctable",
126 ,"Index error",
127 ,"Data error",
128 ,"ISAM Utility failure",
0,"",
};
# 511 "sdms.h" 2
# 724 "sdms.h"
extern int sdms_keyc(FILE_BLD *, char *, int32, int32);
extern void sdms_register(int32, void (*func)());
extern const char *sdms_ertxt(int);
extern FILE_BLD *sdms_filec(int32, int32);
extern FCNTRL *sdms_open(char *, int32, char *, int32, int32, char *);
extern int sdms_close(FCNTRL *, int32);
extern int sdms_create(FILE_BLD *, char *, int32);
extern int sdms_clear(char *);
extern int sdms_remove(char *);
extern int sdms_rename(char *, char *, int32);
extern SDMS_CONTROL *sdms_init(void);
extern void sdms_shutdown(SDMS_CONTROL *);
extern int sdms_setlog(char *, char *, LLST *);
# 58 "isam.h" 2

# 1 "sdmsext.h" 1
# 42 "sdmsext.h"
extern char g_eof;

extern int g_warnpos;
extern int g_cis;
# 54 "sdmsext.h"
extern int g_devtime;
extern int iserrno;
# 60 "isam.h" 2

# 1 "utldef.h" 1
# 62 "isam.h" 2
# 108 "isam.h"
typedef struct bf_struc
{
   int bf_stat;
   struct bf_struc *bf_left;
   struct bf_struc *bf_right;
   uint32 blk_pos;
   char bf_buff[1];
} CBLK;

typedef struct
{
    int
        c_fd;
    int
        c_tbyte,
        c_blksiz,
        c_numbufs,
        c_fixedmax,
        c_blkcnt,
        c_transflsh,
        c_seq,
        c_writethru;

    char
        *dcache,
        *dcache_ptr,
        *dcache_end;
    int
        dcache_len;
    int
        dcache_fd;
    FILEOFF
        dcache_pos,
        dcache_lpos;

    uint32
        c_hipos,
        c_hicache;

    uint32

        c_dwrites,

        c_writes,
        c_reads,
        c_purges,
        c_hits;

    CBLK
        c_right,
        c_left,
        *c_last;
} CACHE_CTL;
# 600 "isam.h"
typedef struct mlst
{
    struct mlst
        *next,
        *prev;
} MLST;
# 614 "isam.h"
typedef struct
{
    char
        k_flags,
        k_min,
        k_ixdepth,
        k_qualoff;
    int32
        k_root;
    uint16
        k_offset[8],
        k_segsize[8],
        k_size;
    char
        k_nulloff,
        k_reserved;
    char
        k_name[15 +1];
} OLD_ISAMKEY;

typedef struct
{
    uint16
        b_len,
        b_reserved;
    int32
        b_list;
} OLD_FBUCKET;

typedef struct
{
    uint16
        is_magic;
    char
        is_rev,
        is_ftype,
        is_knum,
        is_bnum,
        is_reserved,
        is_rovh;
    uint16
        is_numfree,
        is_maxklen,
        is_recsiz,
        is_rlostcnt;
    int32
        is_ifree,
        is_nrecs,
        is_nfree;
    OLD_ISAMKEY
        is_key[8];
    OLD_FBUCKET
        is_dfree[32];
    int32
        is_rlost;
    char
        is_null[64];
    uint32 is_revcount;




} OLD_ISAMCONTROL;



typedef struct
{
    char
        k_flags,
        k_nulloff,
        kname[15 +1];
    uint16
        k_offset[8],
        k_segsize[8],
        ksize;
} OKEY_BLD;

typedef struct
{
    uint16
        fmagic,
        recsiz;
    char
        knum,
        filler3[3],
        null[64];
    OKEY_BLD
        key[8];
    SDMS_CONTROL *sd_ctrl;
} OFILE_BLD;



typedef struct
{
    char
        k_flags,
        k_pad0,
        k_density,
        k_pad1,
        k_segflags[8];
    uint16
        k_offset[8],
        k_segsize[8],
        k_nulloff,
        k_size,
        k_qualoff,
        k_pad2;
    char
        k_name[15 +1];
} ISAMKEY;






typedef struct
{
    uint32
        b_list;
    uint8
        b_64,
        b_reserved;
    uint16
        b_len;
} FBUCKET;





typedef struct
{
    char
        nk_flag,
        nk_len;
    uint16
        nk_pos;
} NONKEYDATA;





typedef struct
{
    char
        is_bnum,
        is_padv;
    uint16
        is_revcount,
        is_numfree,
        is_rlostcnt;
    int32
        is_nrecs,
        is_nfree,
        is_rlost;
    int32
        is_ifree;
    FBUCKET
        is_dfree[32];
} RWCONTROL;

typedef struct
{
    uint16
        is_magic;
    uint8
        is_rev,
        is_ftype,
        is_knum,
        is_blksiz8,
        is_nknum,
        is_hdsiz8;
    uint16
        is_rovhp,
        is_rosiz,
        is_rwsiz,
        is_maxklen,
        is_recsiz,
        is_nullsiz;
    uint32
        is_allocsiz,
        is_rwoff,
        is_createdate,
        is_cleardate,
        is_verifydate,
        is_recovrdate;
    char
        is_version[8];
} ROCONTROL;
# 817 "isam.h"
typedef struct isamcontrol
{
    ROCONTROL
        is_ro;
    RWCONTROL
        *is_rw;
    ISAMKEY
        *is_key;
    NONKEYDATA
        *is_nonkey;
    uint8
        *is_null;
    int
        is_kovh,
        is_rovh,
        is_rsize;
    uint32
        is_leafnode,
        is_adjnode[16],
        is_path[16],
        is_idxoff;
    FILEOFF
        is_final,
        is_rfa,
        is_poslock;
    uint32
        is_flags,
        *is_rootp;
    uint16
        *is_fillp;
    uint8
        *is_rwloadpt,
        *is_depthp,
        *is_ibuff,
        *is_kcurr,
        *is_kcomp;
    OLD_ISAMCONTROL
        *is_ocontrol;
    uint8
        *is_separ,
        *is_leafloc,
        *is_last,
        *is_first,
        *is_end;
    SDMS_CONTROL
        *sd_ctrl;
    WRK_MEM
        *is_sibuf,
        *is_data;
    int
        is_endpath,
        is_kcix,
        is_ixcurr,
        is_kclen,
        is_poffs[16];
    FBUCKET *is_bkt;
    MLST is_mlhead;
    int is_infd, is_outfd;
    char *is_qbuff;
    int
        is_wait,
        is_eof,
        is_rfaqual,
        is_idxchg,
        is_sync,
        is_ec16,
        is_peof;
    CACHE_CTL
        *is_ccp;
    struct isamcontrol *is_tmpkey;
    int is_tmpid;
} ISAMCONTROL;
# 897 "isam.h"
typedef struct
{
    uint8
        sd_sepid,
        sd_onumkey;
    uint16
        sd_numkey,
        sd_ffree;
} SEPARDATA;

typedef struct
{
    uint8
        ld_leafid,
        ld_onumkey;
    uint16 ld_numkey;
    int32
        ld_left,
        ld_right;
} LEAFDATA;

typedef struct
{
    uint8 id,
        onumkey;
    uint16 numkey;
} IDATA;


typedef struct ml_block
{
    struct ml_block
        *next,
        *prev;
    int cnt;
    FILEOFF
        rpos[16],
        lpos[16];
} ML_BLK;

typedef struct remote_info
{
    ROCONTROL
        is_ro;
    RWCONTROL
        *is_rw;
    ISAMKEY
        *is_key;
    NONKEYDATA
        *is_nonkey;
    uint8
        *is_null,
        knownkeys;
    int32
        rc_nrecs;
} REMOTE_CONTROL;
# 967 "isam.h"
struct srttmp
{
    uint16
        tmagic;
    uint8
        tmpstate,
        ihdsiz8;
    int32
        nmclst,
        nmruns,
        srtcnt;
    char filename[255];
    char
        mlists[sizeof(int32) * 256],
        mcnts[sizeof(int32) * 256],
        mrecs[sizeof(int32) * 256];
};


extern void infoerr4(int, int, unsigned long, unsigned long);
extern int ichnopn(ISAMCONTROL *);
extern int iclear(SDMS_CONTROL *, char *);
extern int iclose(ISAMCONTROL *);
extern int icreate(FILE_BLD *, char *, int32);
extern int idelete(ISAMCONTROL *, int32);
extern int iflush(ISAMCONTROL *);
extern int igetkrf(ISAMCONTROL *);
extern int igetrfa(ISAMCONTROL *, char *);
extern int ikeystat(ISAMCONTROL *, int, char *, SDMS_CONTROL *);
extern int ikey(ISAMCONTROL *, int32, struct kstatus *);
extern ISAMCONTROL *iopen(SDMS_CONTROL *, char *, int32, char *);
extern int iposrfa(ISAMCONTROL *, char *);
extern int iread(ISAMCONTROL *, DESCRIP *, DESCRIP *, int32,
                                                int32, int32, char *);
extern int irename(SDMS_CONTROL *, char *, char *);
extern int iremove(SDMS_CONTROL *, char *);
extern int iseqread(ISAMCONTROL *, DESCRIP *, int32, int32, char *);
extern int isetkrf(ISAMCONTROL *, int32);
extern int isinfo(ISAMCONTROL *, int32 *, char *, int32,
                                        char *, int32, int32, SDMS_CONTROL *);
extern int istat(char *, ISAMCONTROL *);
extern int istatus(ISAMCONTROL *, struct fstatus *);
extern int istore(ISAMCONTROL *, DESCRIP *, int32, char *);
extern int iimpref(ISAMCONTROL *, int, int, SDMS_CONTROL *);
extern int iexpref(ISAMCONTROL *, char *, int, SDMS_CONTROL *);
extern int iunlock(ISAMCONTROL *, char *);
extern int iwrite(ISAMCONTROL *, DESCRIP *, int32, char *);
extern int dfreescan(ISAMCONTROL *, int);
extern FBUCKET *addbucket(ISAMCONTROL *, FBUCKET *, uint32);
extern FILEOFF dlseek(int, FILEOFF, int, int);
extern int32 loadq(uint8 *);
extern int make_isname(SDMS_CONTROL *, char *, char * volatile *, char * volatile *, int);
extern CACHE_CTL *cache_alloc(int, int, int, int, int, int);
extern int cache_free(CACHE_CTL *, int);
extern long cache_lseek(CACHE_CTL *, int, long, int);
extern int cache_read_Ctl(CACHE_CTL *, int, uint8 *, int, long);
extern int cache_read(CACHE_CTL *, int, uint8 *, int, long);
extern int cache_read_ctl(CACHE_CTL *, int, uint8 *, int, long);
extern int cache_write_ctl(CACHE_CTL *, int, uint8 *, int, long);
extern int cache_write(CACHE_CTL *, int, uint8 *, int, long);
extern int cache_flush(CACHE_CTL *, int);

extern int cache_dwrites(CACHE_CTL *, int, uint8 *, int);
extern void cache_dalloc(CACHE_CTL *, int, int, int, int);

extern int parse_xdl(SDMS_CONTROL *, char **, FILE_BLD * volatile *, char *),
    get_kcnt(char *),
    get_filkwd(FILE *, char *),
    get_strkwd(char **, char *),
    get_filarg(FILE *, char *),
    get_strarg(char **, char *);
extern int valkey(uint8 *, ISAMKEY *, int, int, int, int);
extern int chktbyte(int, char *);
extern int bldkey(uint8 *, uint8 *, ISAMKEY *, int, int, int, int);
extern int ml_add(ISAMCONTROL *, MLST *, int, FILEOFF);
extern int lock_record(ISAMCONTROL *);
extern int irecloc(ISAMCONTROL *, int, int);
extern int ml_chk(ISAMCONTROL *, FILEOFF);
extern void rfa_unlck(ISAMCONTROL *, char *);
extern void cnv_xdl(SDMS_CONTROL *, char *, char * volatile *);
extern void ml_rel(MLST *, ISAMCONTROL *, FILEOFF);
extern void ml_mov(ISAMCONTROL *, FILEOFF, FILEOFF);
extern int itreeloc(ISAMCONTROL *, int);
extern int nolock_treeloc(ISAMCONTROL *, int);
extern int chknul(ISAMCONTROL *, ISAMKEY *, uint8 *, int);
extern int addnull(FILE_BLD *, KEY_BLD *, char *, int);
extern int rd_rfa(ISAMCONTROL *, DESCRIP *, ISAMKEY *, int);
extern int ld_rfa(ISAMCONTROL *, int);
extern int rd_data(int, DESCRIP *, ISAMCONTROL *);
extern void iselect(int, int);
extern void set_rfaqual(ISAMCONTROL *, char *, FILEOFF, int);
extern void itreefree(ISAMCONTROL *, int);
extern void nolock_treefree(ISAMCONTROL *, int);
extern int incr_key(uint8 *, int);
extern int nextleaf(int, uint8 *, ISAMCONTROL *, int);
extern int prevleaf(int, uint8 *, ISAMCONTROL *, int);
extern void endrec(int, uint8 *, ISAMCONTROL *, ISAMKEY *, int);
extern void rfa_unlock(ISAMCONTROL *, char *);
extern int chkrev(ISAMCONTROL *);
extern void bucket_init(ROCONTROL *, RWCONTROL *, int);
extern void obucket_init(OLD_ISAMCONTROL *, int);
extern void get_ocontrol(ISAMCONTROL *, OLD_ISAMCONTROL *);
extern void orderkey(ISAMKEY *, uint8 *, int);
extern void sd_decode_sderr(SDMS_CONTROL *);
extern int bldkey(uint8 *, uint8 *, ISAMKEY *, int, int, int, int),
        lock_record(ISAMCONTROL *), irecloc(ISAMCONTROL *, int, int),
        ml_chk(ISAMCONTROL *, FILEOFF),
        ml_add(ISAMCONTROL *, MLST *, int, FILEOFF);
extern int itreeloc(ISAMCONTROL *, int), nolock_treeloc(ISAMCONTROL *, int),
        chknul(ISAMCONTROL *, ISAMKEY *, uint8 *, int);
extern rd_rfa(ISAMCONTROL *, DESCRIP *, ISAMKEY *, int),
        ld_rfa(ISAMCONTROL *, int),
        rd_data(int, DESCRIP *, ISAMCONTROL *), chkrev(ISAMCONTROL *);
extern void ml_rel(MLST *, ISAMCONTROL *, FILEOFF),
        ml_mov(ISAMCONTROL *, FILEOFF, FILEOFF),
        itreefree(ISAMCONTROL *, int),
        nolock_treefree(ISAMCONTROL *, int);
extern int incr_key(uint8 *, int),
        ml_free(ISAMCONTROL *),
        nextleaf(int, uint8 *, ISAMCONTROL *, int),
        prevleaf(int, uint8 *, ISAMCONTROL *, int);
extern void endrec(int, uint8 *, ISAMCONTROL *, ISAMKEY *, int),
     get_ocontrol(ISAMCONTROL *, OLD_ISAMCONTROL *);
extern void bucket_init(), obucket_init();
extern void orderkey(ISAMKEY *, uint8*, int);
extern void sd_decode_sderr(SDMS_CONTROL *);
extern int lrotate(uint8 *, FILEOFF, ISAMCONTROL *, ISAMKEY *, uint8 *, int, int);






typedef struct
{
    LLST loglist;
    char *logname;
    char *logvalue;
    int32 lnmlen;
} LOGLST;

typedef struct
{
    LLST loglist;
    FCNTRL *fcb;
} CHANLST;
# 1121 "isam.h"
extern int read_irec(ISAMCONTROL *, uint8 *, long);
extern int write_irec(ISAMCONTROL *, uint8 *, int32);
extern void insrtleaf(ISAMCONTROL *, uint8 *, uint8 *, int, uint8 *, FILEOFF, int);
extern void acombine(uint8 *, FILEOFF, ISAMCONTROL *, ISAMKEY *, uint8 *, int);
extern int arotate(uint8 *, int32, ISAMCONTROL *, ISAMKEY *, uint8 *, int, int);
extern void leafdel(ISAMCONTROL *, ISAMKEY *, uint8 *);
extern int findleaf(uint8 *, ISAMCONTROL *, ISAMKEY *);
extern FILE_BLD *copy_filebld(SDMS_CONTROL *, ISAMCONTROL *, char *);
extern int se_dread( int, uint8 *, int, FILEOFF , int);
extern int se_iread( int, uint8 *, int, uint32 , int);
extern int se_dwrite(int, uint8 *, int, FILEOFF, int);
extern int se_iwrite(int, uint8 *, int, uint32, int);
extern int32 ilseek(int, uint32, int, int);


extern int ikeyc(FILE_BLD *, char *, int32, int32);
extern FILE_BLD *ifilec(SDMS_CONTROL *, int32, int32);
# 28 "iutldef.h" 2
# 1 "/usr/include/setjmp.h" 1 3
# 29 "iutldef.h" 2
# 1 "/usr/include/stdio.h" 1 3
# 30 "iutldef.h" 2
# 1 "dblvers.h" 1
# 31 "iutldef.h" 2
# 31 "irecovr.c" 2
# 1 "/usr/include/sys/stat.h" 1 3
# 26 "/usr/include/sys/stat.h" 3
# 1 "/usr/include/features.h" 1 3
# 27 "/usr/include/sys/stat.h" 2 3

# 1 "/usr/include/bits/types.h" 1 3
# 29 "/usr/include/sys/stat.h" 2 3
# 98 "/usr/include/sys/stat.h" 3
# 1 "/usr/include/bits/stat.h" 1 3
# 36 "/usr/include/bits/stat.h" 3
struct stat
  {
    __dev_t st_dev;
    unsigned short int __pad1;

    __ino_t st_ino;



    __mode_t st_mode;
    __nlink_t st_nlink;
    __uid_t st_uid;
    __gid_t st_gid;
    __dev_t st_rdev;
    unsigned short int __pad2;

    __off_t st_size;



    __blksize_t st_blksize;


    __blkcnt_t st_blocks;



    __time_t st_atime;
    unsigned long int __unused1;
    __time_t st_mtime;
    unsigned long int __unused2;
    __time_t st_ctime;
    unsigned long int __unused3;

    unsigned long int __unused4;
    unsigned long int __unused5;



  };
# 99 "/usr/include/sys/stat.h" 2 3
# 200 "/usr/include/sys/stat.h" 3
extern int stat (__const char *__restrict __file,
                 struct stat *__restrict __buf) ;



extern int fstat (int __fd, struct stat *__buf) ;
# 228 "/usr/include/sys/stat.h" 3
extern int lstat (__const char *__restrict __file,
                  struct stat *__restrict __buf) ;
# 249 "/usr/include/sys/stat.h" 3
extern int chmod (__const char *__file, __mode_t __mode) ;



extern int fchmod (int __fd, __mode_t __mode) ;





extern __mode_t umask (__mode_t __mask) ;
# 268 "/usr/include/sys/stat.h" 3
extern int mkdir (__const char *__path, __mode_t __mode) ;





extern int mknod (__const char *__path, __mode_t __mode, __dev_t __dev)
            ;




extern int mkfifo (__const char *__path, __mode_t __mode) ;
# 306 "/usr/include/sys/stat.h" 3
extern int __fxstat (int __ver, int __fildes, struct stat *__stat_buf) ;
extern int __xstat (int __ver, __const char *__filename,
                    struct stat *__stat_buf) ;
extern int __lxstat (int __ver, __const char *__filename,
                     struct stat *__stat_buf) ;
# 337 "/usr/include/sys/stat.h" 3
extern int __xmknod (int __ver, __const char *__path, __mode_t __mode,
                     __dev_t *__dev) ;




extern __inline__ int stat (__const char *__path,
                            struct stat *__statbuf)
{
  return __xstat (3, __path, __statbuf);
}


extern __inline__ int lstat (__const char *__path,
                             struct stat *__statbuf)
{
  return __lxstat (3, __path, __statbuf);
}


extern __inline__ int fstat (int __fd, struct stat *__statbuf)
{
  return __fxstat (3, __fd, __statbuf);
}


extern __inline__ int mknod (__const char *__path, __mode_t __mode,
                             __dev_t __dev)
{
  return __xmknod (1, __path, __mode, &__dev);
}
# 32 "irecovr.c" 2

static const char *sccsid = "@(#)ISAM Recover Version 7.4.2a  10/22/2001";
# 72 "irecovr.c"
static void printerr(int, char *);
static int printExpRecord(DESCRIP);
void printsdmserr(int32, char *);
void procintr(int);







__inline static long
to_intreg(int val);

typedef struct
{
   char o_ascend, o_atend, o_dups, o_modify,
      o_segment, o_reserved, o_min, o_ixdepth;
   int32 o_root;
   uint16 o_offset[8], o_segsize[8], o_qualoff, o_size;
   char o_name[16];
} OLDKEY;

typedef struct
{
   int16 o_magic, o_knum, o_rsize, o_rlen, o_numfree, o_maxklen;
   int32 o_dfree, o_ifree, o_nrecs;
   OLDKEY o_key[8];
} OLDCONTROL;




static char
    compress = 0,
    static_rfa = 0,
    dataonly = 1,
    quiet = 0,
    verbose = 0,
    fastload = 0,
    pmod = 0,
    correct_data = 0,
    pnull = 0,
    fixtype = 0;
static int



    lock = 1,
    notify_chg = 0,
    large_seg = 0,
    dscan = 1,
    s_cflag = 0,
    badcnt = 0,
    exceptions = 0,
    percent = 0,
    totrecs = 0,
    o_rovh = 0,
    hdsiz,
    new_isrev = 0,
    keep_qual = 0x02000000L,
    chgodir = 0;
static char
    o_vseg = 0,
    o_vrfa = 0,
    o_crec = 0;
static char
    *blkmemory = ((void *)0),
    *s_uncrec = ((void *)0),
    *outdir = ((void *)0);
static int32
    newpct = -1,
    curpct = -1;
double bigval;
static ISAMCONTROL *g_control = ((void *)0);
static jmp_buf utlenv;
static char *isamver = "7.4.2a ";
static char o_ver[7];
static char *s_iname, *s_dname;
static char tname[255 +1];
static char outnam[255 +1], *outnamp;
static char g_tmpnam[255 +1];
static SDMS_CONTROL *sd_ctrl;
static char *s_filename;
static char excfilnam[255 +1];
static char newfilnam[255 +1];
static char *tmp_string = ((void *)0);
static int tmp_string_len = 0;
static FCNTRL *excfctl = ((void *)0);
static int openexcfil = 0;




struct stat buf;

static int exceptfile = 1;



static int
    b_read(int, char *, int32),
    b_readnew(int, char *, int, int),
    icnt_close(FCNTRL *),
    enval(char *, int);
static int32
    getrec(int, char *, int32, ISAMCONTROL *);
static void
    set_new_control(ISAMCONTROL *),
    recover_data(char *),
    recover_index(char *),
    getbuf(int),
    do_recover(ISAMCONTROL *, int, int),
    do_old_recover(ISAMCONTROL *, int),
    load_sequential(ISAMCONTROL *, int),
    load_isam(char *, char *);
static ISAMCONTROL
    *get_old_control(),
    *get_control(char *);


extern int d_uncompr();







static char *b_buff = ((void *)0), *b_last = ((void *)0), *b_ptr = ((void *)0);
static int32 b_bufsiz;





void
utl_ext(status)
int status;
{
   flush_exit(status);
}

int
flush_exit(status)
int status;
{
    fflush(stderr);
    fflush(stdout);
    if (openexcfil)
    {
        icnt_close(excfctl);
        if (tmp_string)
            rel_vm((char *)tmp_string, "irecovr.c", 225);
    }
    sdms_shutdown(sd_ctrl);
    MEM_quit("irecovr.c", 228);
    exit(status);
    return(0);
}

int
main(argc, argv)
int argc; char **argv;
{
    register char *sptr, *sname = ((void *)0);
    char *envp;

    MEM_begin(argc, argv, "irecovr.c", 240);
    sd_ctrl = sdms_init();

    if (!__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (*argv) && __builtin_constant_p ("istamp") && (__s1_len = strlen (*argv), __s2_len = strlen ("istamp"), (!((size_t)(const void *)((*argv) + 1) - (size_t)(const void *)(*argv) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("istamp") + 1) - (size_t)(const void *)("istamp") == 1) || __s2_len >= 4)) ? memcmp ((__const char *) (*argv), (__const char *) ("istamp"), (__s1_len < __s2_len ? __s1_len : __s2_len) + 1) : (__builtin_constant_p (*argv) && ((size_t)(const void *)((*argv) + 1) - (size_t)(const void *)(*argv) == 1) && (__s1_len = strlen (*argv), __s1_len < 4) ? (__builtin_constant_p ("istamp") && ((size_t)(const void *)(("istamp") + 1) - (size_t)(const void *)("istamp") == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (*argv))[0] - ((__const unsigned char *) (__const char *)("istamp"))[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (*argv))[1] - ((__const unsigned char *) (__const char *) ("istamp"))[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (*argv))[2] - ((__const unsigned char *) (__const char *) ("istamp"))[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (*argv))[3] - ((__const unsigned char *) (__const char *) ("istamp"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("istamp"); register int __result = (((__const unsigned char *) (__const char *) (*argv))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (*argv))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (*argv))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (*argv))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("istamp") && ((size_t)(const void *)(("istamp") + 1) - (size_t)(const void *)("istamp") == 1) && (__s2_len = strlen ("istamp"), __s2_len < 4) ? (__builtin_constant_p (*argv) && ((size_t)(const void *)((*argv) + 1) - (size_t)(const void *)(*argv) == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (*argv))[0] - ((__const unsigned char *) (__const char *)("istamp"))[0]); if (__s2_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (*argv))[1] - ((__const unsigned char *) (__const char *) ("istamp"))[1]); if (__s2_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (*argv))[2] - ((__const unsigned char *) (__const char *) ("istamp"))[2]); if (__s2_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (*argv))[3] - ((__const unsigned char *) (__const char *) ("istamp"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (*argv); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("istamp"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("istamp"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("istamp"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("istamp"))[3]); } } __result; }))) : strcmp (*argv, "istamp")))); }))
        istamp(argv, argc);
    if (argc < 2)
        printerr(0, ((void *)0));
    for (; (--argc > 0) && (**++argv == '-'); )
    {
        for (sptr = *argv + 1; *sptr; )
        {
            switch (*sptr++)
            {
                case 'a':
                case 'A':
                    correct_data = 1;
                    break;
                case 'c':
                case 'C':
                    compress = 1;
                    break;
                case 'd':
                case 'D':
                    dataonly = 1;
                    break;
                case 'f':
                case 'F':
                    if (--argc)
                        sname = *++argv;
                    fastload = 1;
                    break;
                case 'k':
                case 'K':
                    s_cflag = 1;
                    break;
                case 'l':
                case 'L':
                    lock = 0;
                    break;
                case 'o':
                case 'O':
                    if (--argc)
                    {
                        outdir = *++argv;
                        chgodir = 1;
                    }
                    break;
                case 'q':
                case 'Q':
                    quiet = 1;
                    break;
                case 'r':
                case 'R':
                    keep_qual = 0;
                    break;
                case 's':
                case 'S':
                    static_rfa = 1;
                    break;
                case 't':
                case 'T':
                    if (--argc)
                        notify_chg = atoi(*++argv);
                    verbose = 1;
                    break;
                case 'v':
                case 'V':
                    verbose = 1;
                    notify_chg = 1;
                    break;
                case 'x':
                case 'X':
                    exceptfile = 1;
                    if (--argc)
                        (__extension__ (__builtin_constant_p (*++argv) ? (((size_t)(const void *)((*++argv) + 1) - (size_t)(const void *)(*++argv) == 1) && strlen (*++argv) + 1 <= 8 ? __strcpy_small (excfilnam, __extension__ (((__const unsigned char *) (__const char *) (*++argv))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) (*++argv))[0]), __extension__ (((__const unsigned char *) (__const char *) (*++argv))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) (*++argv))[4]), __extension__ (((((__const unsigned char *) (__const char *) (*++argv))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) (*++argv))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) (*++argv))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) (*++argv))[0]), __extension__ (((((__const unsigned char *) (__const char *) (*++argv))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) (*++argv))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) (*++argv))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) (*++argv))[4]), strlen (*++argv) + 1) : (char *) memcpy (excfilnam, *++argv, strlen (*++argv) + 1)) : strcpy (excfilnam, *++argv)));
                    break;
                case '%':
                    percent = 1;
                    break;
                default:
                    printerr(0, ((void *)0));
                    break;
            }
        }
    }
    if (argc <= 0)
        printerr(0, ((void *)0));


    if (envp = getenv("RECVCTL"))
    {
        if (!__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (envp) && __builtin_constant_p ("NO_DSCAN") && (__s1_len = strlen (envp), __s2_len = strlen ("NO_DSCAN"), (!((size_t)(const void *)((envp) + 1) - (size_t)(const void *)(envp) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("NO_DSCAN") + 1) - (size_t)(const void *)("NO_DSCAN") == 1) || __s2_len >= 4)) ? memcmp ((__const char *) (envp), (__const char *) ("NO_DSCAN"), (__s1_len < __s2_len ? __s1_len : __s2_len) + 1) : (__builtin_constant_p (envp) && ((size_t)(const void *)((envp) + 1) - (size_t)(const void *)(envp) == 1) && (__s1_len = strlen (envp), __s1_len < 4) ? (__builtin_constant_p ("NO_DSCAN") && ((size_t)(const void *)(("NO_DSCAN") + 1) - (size_t)(const void *)("NO_DSCAN") == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (envp))[0] - ((__const unsigned char *) (__const char *)("NO_DSCAN"))[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (envp))[1] - ((__const unsigned char *) (__const char *) ("NO_DSCAN"))[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (envp))[2] - ((__const unsigned char *) (__const char *) ("NO_DSCAN"))[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (envp))[3] - ((__const unsigned char *) (__const char *) ("NO_DSCAN"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("NO_DSCAN"); register int __result = (((__const unsigned char *) (__const char *) (envp))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (envp))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (envp))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (envp))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("NO_DSCAN") && ((size_t)(const void *)(("NO_DSCAN") + 1) - (size_t)(const void *)("NO_DSCAN") == 1) && (__s2_len = strlen ("NO_DSCAN"), __s2_len < 4) ? (__builtin_constant_p (envp) && ((size_t)(const void *)((envp) + 1) - (size_t)(const void *)(envp) == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (envp))[0] - ((__const unsigned char *) (__const char *)("NO_DSCAN"))[0]); if (__s2_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (envp))[1] - ((__const unsigned char *) (__const char *) ("NO_DSCAN"))[1]); if (__s2_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (envp))[2] - ((__const unsigned char *) (__const char *) ("NO_DSCAN"))[2]); if (__s2_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (envp))[3] - ((__const unsigned char *) (__const char *) ("NO_DSCAN"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (envp); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("NO_DSCAN"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("NO_DSCAN"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("NO_DSCAN"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("NO_DSCAN"))[3]); } } __result; }))) : strcmp (envp, "NO_DSCAN")))); }))
            dscan = 0;
    }
    if (envp = getenv("ISEGSIZ"))
    {
        large_seg = atoi(envp);
        if ((large_seg < 0) || (large_seg > 5*1024*1024))
            large_seg = 0;
    }
    if (envp = getenv("ISAMC_REV"))
    {
        new_isrev = atoi(envp);
        if ((new_isrev < 2) || (new_isrev > 4))
            printerr(24, (char *)to_intreg(new_isrev));
    }

    if (chgodir)
    {
        if (!stat(outdir, &buf))
        {
            if (!((((buf.st_mode)) & 0170000) == (0040000)))
                printerr(18, outdir);
            (__extension__ (__builtin_constant_p (outdir) ? (((size_t)(const void *)((outdir) + 1) - (size_t)(const void *)(outdir) == 1) && strlen (outdir) + 1 <= 8 ? __strcpy_small (outnam, __extension__ (((__const unsigned char *) (__const char *) (outdir))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) (outdir))[0]), __extension__ (((__const unsigned char *) (__const char *) (outdir))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) (outdir))[4]), __extension__ (((((__const unsigned char *) (__const char *) (outdir))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) (outdir))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) (outdir))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) (outdir))[0]), __extension__ (((((__const unsigned char *) (__const char *) (outdir))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) (outdir))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) (outdir))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) (outdir))[4]), strlen (outdir) + 1) : (char *) memcpy (outnam, outdir, strlen (outdir) + 1)) : strcpy (outnam, outdir)));
            outnamp = outnam + strlen(outnam);
            *outnamp++ = '/';
        }
        else
            printerr(18, outdir);
    }
    do
    {
        s_filename = *argv++;
        --argc;
        s_iname = s_dname = ((void *)0);
        curpct = -1;
        if (exceptfile)
        {
            if (excfctl)
            {
                icnt_close(excfctl);
                if (tmp_string)
                {
                    rel_vm((char *)tmp_string, "irecovr.c", 373);
                    tmp_string = ((void *)0);
                }
                openexcfil = 0;
            }
            if (strlen(excfilnam))
            {
                if (argc > 0)
                    printerr(22, ((void *)0));
                (__extension__ (__builtin_constant_p (excfilnam) ? (((size_t)(const void *)((excfilnam) + 1) - (size_t)(const void *)(excfilnam) == 1) && strlen (excfilnam) + 1 <= 8 ? __strcpy_small (newfilnam, __extension__ (((__const unsigned char *) (__const char *) (excfilnam))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) (excfilnam))[0]), __extension__ (((__const unsigned char *) (__const char *) (excfilnam))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) (excfilnam))[4]), __extension__ (((((__const unsigned char *) (__const char *) (excfilnam))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) (excfilnam))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) (excfilnam))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) (excfilnam))[0]), __extension__ (((((__const unsigned char *) (__const char *) (excfilnam))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) (excfilnam))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) (excfilnam))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) (excfilnam))[4]), strlen (excfilnam) + 1) : (char *) memcpy (newfilnam, excfilnam, strlen (excfilnam) + 1)) : strcpy (newfilnam, excfilnam)));
                d_makename(newfilnam, ".exc", 1, 1);
            }
            else
            {
                char *dot;
                (__extension__ (__builtin_constant_p (s_filename) ? (((size_t)(const void *)((s_filename) + 1) - (size_t)(const void *)(s_filename) == 1) && strlen (s_filename) + 1 <= 8 ? __strcpy_small (newfilnam, __extension__ (((__const unsigned char *) (__const char *) (s_filename))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) (s_filename))[0]), __extension__ (((__const unsigned char *) (__const char *) (s_filename))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) (s_filename))[4]), __extension__ (((((__const unsigned char *) (__const char *) (s_filename))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) (s_filename))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) (s_filename))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) (s_filename))[0]), __extension__ (((((__const unsigned char *) (__const char *) (s_filename))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) (s_filename))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) (s_filename))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) (s_filename))[4]), strlen (s_filename) + 1) : (char *) memcpy (newfilnam, s_filename, strlen (s_filename) + 1)) : strcpy (newfilnam, s_filename)));
                d_makename(newfilnam, ".ism", 1, 1);
                if (dot = rindex(newfilnam, '.'))
                    *dot = '\0';
                d_makename(newfilnam, ".exc", 1, 1);
            }

            if (chgodir)
            {
                strcat(outdir, newfilnam);
                (__extension__ (__builtin_constant_p (outdir) ? (((size_t)(const void *)((outdir) + 1) - (size_t)(const void *)(outdir) == 1) && strlen (outdir) + 1 <= 8 ? __strcpy_small (newfilnam, __extension__ (((__const unsigned char *) (__const char *) (outdir))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) (outdir))[0]), __extension__ (((__const unsigned char *) (__const char *) (outdir))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) (outdir))[4]), __extension__ (((((__const unsigned char *) (__const char *) (outdir))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) (outdir))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) (outdir))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) (outdir))[0]), __extension__ (((((__const unsigned char *) (__const char *) (outdir))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) (outdir))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) (outdir))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) (outdir))[4]), strlen (outdir) + 1) : (char *) memcpy (newfilnam, outdir, strlen (outdir) + 1)) : strcpy (newfilnam, outdir)));
            }
            if (!stat(newfilnam, &buf))
                printerr(23, newfilnam);
        }
        if (fastload)
            load_isam(sname, s_filename);
        else
        {
            if (dataonly)
                recover_data(s_filename);
            else
                recover_index(s_filename);
        }
        if (openexcfil)
            fprintf (stdout, "%d exception records written to %s\n", exceptions, newfilnam);

    } while (argc);
    flush_exit(0);
}
# 432 "irecovr.c"
static void
load_isam(sname, fname)
char *sname;
char *fname;
{
    register ISAMCONTROL * volatile control = ((void *)0);
    int mode;
    volatile int fd = (int)-1;
    char *volatile seqname, * volatile bufsenv = ((void *)0), * volatile cdatenv = ((void *)0);

    dsignal( 2, (procintr));
    seqname = ((void *)0);
    if (((sd_ctrl)->c_sd_errno = _setjmp (utlenv)))
    {
        if (fd >= 0)
            close(fd);
        if (seqname)
            rel_vm((char *)seqname, "irecovr.c", 449);
        if (b_buff)
            rel_vm((char *)b_buff, "irecovr.c", 451);
        if (((sd_ctrl)->c_sd_errno) == 29)
            printerr(29, 0);
        else
            printsdmserr(((sd_ctrl)->c_sd_errno), ((sd_ctrl)->c_g_filnam));
    }
    if (make_isname(sd_ctrl, fname, &s_iname, &s_dname, 1))
        longjmp(utlenv, ((sd_ctrl)->c_sd_errno));
    (__extension__ (__builtin_constant_p ((char *)s_iname) ? (((size_t)(const void *)(((char *)s_iname) + 1) - (size_t)(const void *)((char *)s_iname) == 1) && strlen ((char *)s_iname) + 1 <= 8 ? __strcpy_small (((sd_ctrl)->c_g_filnam), __extension__ (((__const unsigned char *) (__const char *) ((char *)s_iname))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) ((char *)s_iname))[0]), __extension__ (((__const unsigned char *) (__const char *) ((char *)s_iname))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) ((char *)s_iname))[4]), __extension__ (((((__const unsigned char *) (__const char *) ((char *)s_iname))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) ((char *)s_iname))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ((char *)s_iname))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ((char *)s_iname))[0]), __extension__ (((((__const unsigned char *) (__const char *) ((char *)s_iname))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) ((char *)s_iname))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) ((char *)s_iname))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) ((char *)s_iname))[4]), strlen ((char *)s_iname) + 1) : (char *) memcpy (((sd_ctrl)->c_g_filnam), (char *)s_iname, strlen ((char *)s_iname) + 1)) : strcpy (((sd_ctrl)->c_g_filnam), (char *)s_iname)));
    if (!(seqname = d_makename_p(sname, ".ddf", 1, 1)))
        printerr(2, (char *)(strlen(sname)+1));
    if (compress)
        fprintf (stdout, "-C ignored with fast load option\n");
    if (!quiet)
        fprintf (stdout, "Loading '%s' from sequential file '%s'\n", s_iname, seqname);

    fd = io_open(seqname, 00|0, 0, (*(sd_ctrl)->c_g_dblopts2));
    if (((fd) < 0 ))
    {
        if (s_iname)
            rel_vm((char *)s_iname, "irecovr.c", 471);
        if (s_dname)
            rel_vm((char *)s_dname, "irecovr.c", 473);
        (__extension__ (__builtin_constant_p (seqname) ? (((size_t)(const void *)((seqname) + 1) - (size_t)(const void *)(seqname) == 1) && strlen (seqname) + 1 <= 8 ? __strcpy_small (g_tmpnam, __extension__ (((__const unsigned char *) (__const char *) (seqname))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) (seqname))[0]), __extension__ (((__const unsigned char *) (__const char *) (seqname))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) (seqname))[4]), __extension__ (((((__const unsigned char *) (__const char *) (seqname))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) (seqname))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) (seqname))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) (seqname))[0]), __extension__ (((((__const unsigned char *) (__const char *) (seqname))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) (seqname))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) (seqname))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) (seqname))[4]), strlen (seqname) + 1) : (char *) memcpy (g_tmpnam, seqname, strlen (seqname) + 1)) : strcpy (g_tmpnam, seqname)));
        rel_vm((char *)seqname, "irecovr.c", 475);
        s_dname = s_iname = ((void *)0);
        printerr(3, g_tmpnam);
    }

    if (!getenv("NUMBUFS"))
    {
        bufsenv = get_vm(12, "irecovr.c", 482, ((void *)0));
        (__extension__ (__builtin_constant_p ("NUMBUFS=64") ? (((size_t)(const void *)(("NUMBUFS=64") + 1) - (size_t)(const void *)("NUMBUFS=64") == 1) && strlen ("NUMBUFS=64") + 1 <= 8 ? __strcpy_small (bufsenv, __extension__ (((__const unsigned char *) (__const char *) ("NUMBUFS=64"))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) ("NUMBUFS=64"))[0]), __extension__ (((__const unsigned char *) (__const char *) ("NUMBUFS=64"))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) ("NUMBUFS=64"))[4]), __extension__ (((((__const unsigned char *) (__const char *) ("NUMBUFS=64"))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) ("NUMBUFS=64"))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("NUMBUFS=64"))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("NUMBUFS=64"))[0]), __extension__ (((((__const unsigned char *) (__const char *) ("NUMBUFS=64"))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) ("NUMBUFS=64"))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("NUMBUFS=64"))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("NUMBUFS=64"))[4]), strlen ("NUMBUFS=64") + 1) : (char *) memcpy (bufsenv, "NUMBUFS=64", strlen ("NUMBUFS=64") + 1)) : strcpy (bufsenv, "NUMBUFS=64")));
        putenv(bufsenv);
    }
    if (!getenv("CACHE_DATA"))
    {
        cdatenv = get_vm(16, "irecovr.c", 488, ((void *)0));
        (__extension__ (__builtin_constant_p ("CACHE_DATA=Y") ? (((size_t)(const void *)(("CACHE_DATA=Y") + 1) - (size_t)(const void *)("CACHE_DATA=Y") == 1) && strlen ("CACHE_DATA=Y") + 1 <= 8 ? __strcpy_small (cdatenv, __extension__ (((__const unsigned char *) (__const char *) ("CACHE_DATA=Y"))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) ("CACHE_DATA=Y"))[0]), __extension__ (((__const unsigned char *) (__const char *) ("CACHE_DATA=Y"))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) ("CACHE_DATA=Y"))[4]), __extension__ (((((__const unsigned char *) (__const char *) ("CACHE_DATA=Y"))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) ("CACHE_DATA=Y"))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("CACHE_DATA=Y"))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("CACHE_DATA=Y"))[0]), __extension__ (((((__const unsigned char *) (__const char *) ("CACHE_DATA=Y"))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) ("CACHE_DATA=Y"))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("CACHE_DATA=Y"))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("CACHE_DATA=Y"))[4]), strlen ("CACHE_DATA=Y") + 1) : (char *) memcpy (cdatenv, "CACHE_DATA=Y", strlen ("CACHE_DATA=Y") + 1)) : strcpy (cdatenv, "CACHE_DATA=Y")));
        putenv(cdatenv);
    }

    mode = lock ? (0x00000001L | 0x00000010L) : (0x00000001L | 0x01000000L);
    if (!(control = (ISAMCONTROL *)iopen(sd_ctrl, s_iname, mode | 0x00020000L, 0)))
    {
        if (s_dname)
            rel_vm((char *)s_dname, "irecovr.c", 497);
        rel_vm((char *)seqname, "irecovr.c", 498);
        (__extension__ (__builtin_constant_p (s_iname) ? (((size_t)(const void *)((s_iname) + 1) - (size_t)(const void *)(s_iname) == 1) && strlen (s_iname) + 1 <= 8 ? __strcpy_small (g_tmpnam, __extension__ (((__const unsigned char *) (__const char *) (s_iname))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) (s_iname))[0]), __extension__ (((__const unsigned char *) (__const char *) (s_iname))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) (s_iname))[4]), __extension__ (((((__const unsigned char *) (__const char *) (s_iname))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) (s_iname))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) (s_iname))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) (s_iname))[0]), __extension__ (((((__const unsigned char *) (__const char *) (s_iname))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) (s_iname))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) (s_iname))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) (s_iname))[4]), strlen (s_iname) + 1) : (char *) memcpy (g_tmpnam, s_iname, strlen (s_iname) + 1)) : strcpy (g_tmpnam, s_iname)));
        rel_vm((char *)s_iname, "irecovr.c", 500);
        s_dname = s_iname = ((void *)0);
        printerr(3, g_tmpnam);
    }
    if (bufsenv)
        rel_vm((char *)bufsenv, "irecovr.c", 505);
    if (cdatenv)
        rel_vm((char *)cdatenv, "irecovr.c", 507);
    g_control = control;
    if (control->is_rw->is_nrecs)
    {
        close (fd);
        rel_vm((char *)seqname, "irecovr.c", 512);
        printerr(16, s_iname);
    }

    load_sequential(control, fd);

    iclose(control);
    close(fd);
    rel_vm((char *)s_dname, "irecovr.c", 520);
    rel_vm((char *)seqname, "irecovr.c", 521);
    rel_vm((char *)s_iname, "irecovr.c", 522);
    s_dname = s_iname = ((void *)0);
    fflush(stderr);
    fflush(stdout);
    return;
}
# 548 "irecovr.c"
static void
load_sequential(control, sfd)
ISAMCONTROL *control;
int sfd;
{
    int b_bufsiz, idx = 0, srec_idx = 0, fmore, storec = 0, skip = 0;
    DESCRIP source;
    int status = 0;

    b_bufsiz = enval("IDATASIZ", 8 * 1024);
    if ((control->is_rsize + 1) > b_bufsiz)
        b_bufsiz = control->is_rsize + 1;
    if (!(b_buff = get_vm(b_bufsiz, "irecovr.c", 560, ((void *)0))))
        printerr(2, (char *)to_intreg(b_bufsiz));

    if ((control->is_rsize + 1) > (b_bufsiz/2))
    {
        fprintf(stderr, "Warning!  Cache effectiveness exceeded\n");
        fprintf(stderr, "Set IDATASIZ to (n * %d) for greater optimization",
           control->is_rsize + 1);
    }

    fmore = b_readnew(sfd, b_buff, b_bufsiz, 0);

    while (fmore > 0)
    {
        if (s_cflag)
        {
            if (fmore <= 2)
                break;
            source.len = *(uint16 *)(b_buff+idx);
            if (!source.len || (source.len == 0xFFFF))
                break;
            if (source.len & 1)
                source.len++;
            if (source.len > (fmore - sizeof(uint16)))
            {
                if (( fmore =
                 b_readnew(sfd, b_buff, b_bufsiz, b_bufsiz-idx))
                  <= 0)
                    printerr(17,((void *)0));
                idx = 0;
                source.addr = b_buff + sizeof(uint16);
            }
            else
                source.addr = b_buff + idx + sizeof(uint16);
            idx += source.len + sizeof(uint16);
            fmore -= source.len + sizeof(uint16);
        }
        else
        {
            source.addr = b_buff + idx;
            while ((*(b_buff+idx) != 10) && (*(b_buff+idx) != 13))
            {
                idx++;
                if ((idx - srec_idx) == fmore)
                {
                    if (( fmore =
                     b_readnew(sfd, b_buff, b_bufsiz, b_bufsiz-srec_idx))
                      <= 0)
                         printerr(17,((void *)0));
                    idx -= srec_idx, srec_idx = 0;
                    source.addr = b_buff;
                }
            }
            source.len = idx - srec_idx;
            fmore -= idx - srec_idx;
            srec_idx = idx;
        }
        if (istore(control, &source, 0L, ((void *)0)) < 0)
        {
            switch (((sd_ctrl)->c_sd_errno))
            {
                case 12:
                    fprintf(stderr, "Illegal record size\n");
                    if (status = printExpRecord(source))
                    {
                        rel_vm((char *)b_buff, "irecovr.c", 625);
                        b_buff = ((void *)0);
                        badcnt++;
                        printerr(status, newfilnam);
                    }
                    break;
                case 15:
                    fprintf(stderr, "No duplicates allowed\n");
                    if (status = printExpRecord(source))
                    {
                        rel_vm((char *)b_buff, "irecovr.c", 635);
                        b_buff = ((void *)0);
                        badcnt++;
                        printerr(status, newfilnam);
                    }
                    break;
                case 101:
                case 16:
                    rel_vm((char *)b_buff, "irecovr.c", 643);
                    b_buff = ((void *)0);
                    badcnt++;
                    printerr(15, "load");
                    break;
                case 25:
                    rel_vm((char *)b_buff, "irecovr.c", 649);
                    b_buff = ((void *)0);
                    badcnt++;
                    printerr(8, s_iname);
                    break;
                default:
                    fprintf(stderr, "STORE: - System error #%d from SDMS\n",
                        ((sd_ctrl)->c_sd_errno));
                    if (status = printExpRecord(source))
                    {
                        rel_vm((char *)b_buff, "irecovr.c", 659);
                        b_buff = ((void *)0);
                        badcnt++;
                        printerr(status, newfilnam);
                    }
            }
        }
        if (!s_cflag)
        {
            while ((*(b_buff+idx) == 10) || (*(b_buff+idx) == 13))
            {
                idx++;
                if ((idx - srec_idx) == fmore)
                {
                    fmore = b_readnew(sfd, b_buff, b_bufsiz, 0);
                    idx = 0, srec_idx = 0;
                    source.addr = b_buff;
                }
            }
            fmore -= idx - srec_idx;
            srec_idx = idx;
        }
        else if ( fmore == 0 )
        {
            fmore = b_readnew(sfd, b_buff, b_bufsiz, 0);
            idx = 0;
        }
        if (verbose && ((++storec - skip) >= notify_chg))
        {
            fprintf (stdout, "%8d\r", storec);
            skip = storec;
            fflush(stdout);
        }




    }
    if (percent || verbose)
        fprintf (stdout, "\n");
    rel_vm((char *)b_buff, "irecovr.c", 699);
    b_buff = ((void *)0);
}
# 717 "irecovr.c"
static int
b_readnew(fh, buff, bufsiz, rlen)
int fh;
char *buff;
int bufsiz, rlen;
{
    int num;
    if (rlen)
        memcpy(buff, buff+bufsiz-rlen, rlen);
    if ((num = read(fh, buff+rlen, bufsiz-rlen)) > 0)
        return(num+rlen);
    else if ( num < 0 )
        printerr(11,((void *)0));
    return(num);
}
# 746 "irecovr.c"
static void
recover_data(fname)
char *fname;
{
    register ISAMCONTROL * control;
    register int regint;
    int fd1, fd2;
    int mode, oldrev, noindex = 0;
    char *envptr = ((void *)0), *cdatenv = ((void *)0), *ign2env = ((void *)0);
    FILE_BLD *fb = ((void *)0);
    char filename[255];
    char *hdbuf;
    time_t cleardate = 0;
    char *ext;

    if (regint = _setjmp (utlenv))
    {
        if (s_iname)
            rel_vm((char *)s_iname, "irecovr.c", 764);
        if (s_dname)
            rel_vm((char *)s_dname, "irecovr.c", 766);
        s_iname = s_dname = ((void *)0);
        if (regint == -1)
            printerr(9, tname);
        printsdmserr(((sd_ctrl)->c_sd_errno), ((sd_ctrl)->c_g_filnam));
    }
    if (make_isname(sd_ctrl, fname, &s_iname, &s_dname, 1))
        longjmp(utlenv, 1);
    (__extension__ (__builtin_constant_p ((char *)s_iname) ? (((size_t)(const void *)(((char *)s_iname) + 1) - (size_t)(const void *)((char *)s_iname) == 1) && strlen ((char *)s_iname) + 1 <= 8 ? __strcpy_small (((sd_ctrl)->c_g_filnam), __extension__ (((__const unsigned char *) (__const char *) ((char *)s_iname))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) ((char *)s_iname))[0]), __extension__ (((__const unsigned char *) (__const char *) ((char *)s_iname))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) ((char *)s_iname))[4]), __extension__ (((((__const unsigned char *) (__const char *) ((char *)s_iname))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) ((char *)s_iname))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ((char *)s_iname))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ((char *)s_iname))[0]), __extension__ (((((__const unsigned char *) (__const char *) ((char *)s_iname))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) ((char *)s_iname))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) ((char *)s_iname))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) ((char *)s_iname))[4]), strlen ((char *)s_iname) + 1) : (char *) memcpy (((sd_ctrl)->c_g_filnam), (char *)s_iname, strlen ((char *)s_iname) + 1)) : strcpy (((sd_ctrl)->c_g_filnam), (char *)s_iname)));
    if (!quiet)
        fprintf (stdout, "Recovering '%s' from data file\n", s_iname);





    (__extension__ (__builtin_constant_p (s_iname) ? (((size_t)(const void *)((s_iname) + 1) - (size_t)(const void *)(s_iname) == 1) && strlen (s_iname) + 1 <= 8 ? __strcpy_small (tname, __extension__ (((__const unsigned char *) (__const char *) (s_iname))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) (s_iname))[0]), __extension__ (((__const unsigned char *) (__const char *) (s_iname))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) (s_iname))[4]), __extension__ (((((__const unsigned char *) (__const char *) (s_iname))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) (s_iname))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) (s_iname))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) (s_iname))[0]), __extension__ (((((__const unsigned char *) (__const char *) (s_iname))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) (s_iname))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) (s_iname))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) (s_iname))[4]), strlen (s_iname) + 1) : (char *) memcpy (tname, s_iname, strlen (s_iname) + 1)) : strcpy (tname, s_iname)));
    ext = rindex(tname, '.');
    sprintf(ext, "_%s.is2", ext+1);
    if (!stat(tname, &buf))
    {
        int tfd;
        int omode;
        int16 magic;
        omode = 00;



        if (tfd = io_open(tname, omode, 0, 0))
        {
            read(tfd, &magic, sizeof(int16));
            close(tfd);
            if (magic != (uint16)(0x5CB5))
                printerr(27, tname);
        }
        printerr(26, tname);
    }



    control = g_control = get_control(fname);

    if (chgodir && !(control->is_ro.is_rev))
    {
        iclose(control);
        printerr(19, "-o");
    }

    hdsiz = (((control->is_ro.is_hdsiz8)) << 8);
    oldrev = (control->is_ro.is_rev);
    if (((control->is_infd) < 0 ))
        noindex = 1;
    exceptions = 0;
    if (dscan)
        scandata(control, control->is_outfd, oldrev);
    hdbuf = get_vm(hdsiz, "irecovr.c", 821, ((void *)0));
    if ((oldrev != new_isrev) || compress || static_rfa || noindex || pmod ||
         pnull || fixtype)
    {
        (__extension__ (__builtin_constant_p (s_iname) ? (((size_t)(const void *)((s_iname) + 1) - (size_t)(const void *)(s_iname) == 1) && strlen (s_iname) + 1 <= 8 ? __strcpy_small (filename, __extension__ (((__const unsigned char *) (__const char *) (s_iname))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) (s_iname))[0]), __extension__ (((__const unsigned char *) (__const char *) (s_iname))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) (s_iname))[4]), __extension__ (((((__const unsigned char *) (__const char *) (s_iname))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) (s_iname))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) (s_iname))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) (s_iname))[0]), __extension__ (((((__const unsigned char *) (__const char *) (s_iname))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) (s_iname))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) (s_iname))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) (s_iname))[4]), strlen (s_iname) + 1) : (char *) memcpy (filename, s_iname, strlen (s_iname) + 1)) : strcpy (filename, s_iname)));
        fb = copy_filebld(sd_ctrl, control, filename);
    }
    else
    {
        if (oldrev >= 4)
            cleardate = (control->is_ro.is_cleardate);
    }
    iclose(control);
    if (g_control)
        g_control = ((void *)0);
    if (rrename(s_dname, tname))
    {
        rel_vm((char *)hdbuf, "irecovr.c", 838);
        printerr(10, tname);
    }


    if (chgodir)
    {
        char *namp;

        if (namp = rindex(fname, '/'))
            namp++;
        else
            namp = fname;
        (__extension__ (__builtin_constant_p (namp) ? (((size_t)(const void *)((namp) + 1) - (size_t)(const void *)(namp) == 1) && strlen (namp) + 1 <= 8 ? __strcpy_small (outnamp, __extension__ (((__const unsigned char *) (__const char *) (namp))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) (namp))[0]), __extension__ (((__const unsigned char *) (__const char *) (namp))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) (namp))[4]), __extension__ (((((__const unsigned char *) (__const char *) (namp))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) (namp))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) (namp))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) (namp))[0]), __extension__ (((((__const unsigned char *) (__const char *) (namp))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) (namp))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) (namp))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) (namp))[4]), strlen (namp) + 1) : (char *) memcpy (outnamp, namp, strlen (namp) + 1)) : strcpy (outnamp, namp)));
        (unlink(s_iname));
        rel_vm((char *)s_iname, "irecovr.c", 853);
        rel_vm((char *)s_dname, "irecovr.c", 854);
        make_isname(sd_ctrl, outnam, &s_iname, &s_dname, 1);
    }


    if (!getenv("NUMBUFS"))
    {
        envptr = get_vm(12, "irecovr.c", 861, ((void *)0));
        (__extension__ (__builtin_constant_p ("NUMBUFS=64") ? (((size_t)(const void *)(("NUMBUFS=64") + 1) - (size_t)(const void *)("NUMBUFS=64") == 1) && strlen ("NUMBUFS=64") + 1 <= 8 ? __strcpy_small (envptr, __extension__ (((__const unsigned char *) (__const char *) ("NUMBUFS=64"))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) ("NUMBUFS=64"))[0]), __extension__ (((__const unsigned char *) (__const char *) ("NUMBUFS=64"))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) ("NUMBUFS=64"))[4]), __extension__ (((((__const unsigned char *) (__const char *) ("NUMBUFS=64"))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) ("NUMBUFS=64"))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("NUMBUFS=64"))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("NUMBUFS=64"))[0]), __extension__ (((((__const unsigned char *) (__const char *) ("NUMBUFS=64"))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) ("NUMBUFS=64"))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("NUMBUFS=64"))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("NUMBUFS=64"))[4]), strlen ("NUMBUFS=64") + 1) : (char *) memcpy (envptr, "NUMBUFS=64", strlen ("NUMBUFS=64") + 1)) : strcpy (envptr, "NUMBUFS=64")));
        putenv(envptr);
    }
    if (!getenv("CACHE_DATA"))
    {
        cdatenv = get_vm(16, "irecovr.c", 867, ((void *)0));
        (__extension__ (__builtin_constant_p ("CACHE_DATA=Y") ? (((size_t)(const void *)(("CACHE_DATA=Y") + 1) - (size_t)(const void *)("CACHE_DATA=Y") == 1) && strlen ("CACHE_DATA=Y") + 1 <= 8 ? __strcpy_small (cdatenv, __extension__ (((__const unsigned char *) (__const char *) ("CACHE_DATA=Y"))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) ("CACHE_DATA=Y"))[0]), __extension__ (((__const unsigned char *) (__const char *) ("CACHE_DATA=Y"))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) ("CACHE_DATA=Y"))[4]), __extension__ (((((__const unsigned char *) (__const char *) ("CACHE_DATA=Y"))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) ("CACHE_DATA=Y"))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("CACHE_DATA=Y"))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("CACHE_DATA=Y"))[0]), __extension__ (((((__const unsigned char *) (__const char *) ("CACHE_DATA=Y"))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) ("CACHE_DATA=Y"))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("CACHE_DATA=Y"))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("CACHE_DATA=Y"))[4]), strlen ("CACHE_DATA=Y") + 1) : (char *) memcpy (cdatenv, "CACHE_DATA=Y", strlen ("CACHE_DATA=Y") + 1)) : strcpy (cdatenv, "CACHE_DATA=Y")));
        putenv(cdatenv);
    }


    if (!getenv("IGNIS2"))
    {
        ign2env = get_vm(10, "irecovr.c", 875, ((void *)0));
        (__extension__ (__builtin_constant_p ("IGNIS2=Y") ? (((size_t)(const void *)(("IGNIS2=Y") + 1) - (size_t)(const void *)("IGNIS2=Y") == 1) && strlen ("IGNIS2=Y") + 1 <= 8 ? __strcpy_small (ign2env, __extension__ (((__const unsigned char *) (__const char *) ("IGNIS2=Y"))[0 + 1] << 8 | ((__const unsigned char *) (__const char *) ("IGNIS2=Y"))[0]), __extension__ (((__const unsigned char *) (__const char *) ("IGNIS2=Y"))[4 + 1] << 8 | ((__const unsigned char *) (__const char *) ("IGNIS2=Y"))[4]), __extension__ (((((__const unsigned char *) (__const char *) ("IGNIS2=Y"))[0 + 3] << 8 | ((__const unsigned char *) (__const char *) ("IGNIS2=Y"))[0 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("IGNIS2=Y"))[0 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("IGNIS2=Y"))[0]), __extension__ (((((__const unsigned char *) (__const char *) ("IGNIS2=Y"))[4 + 3] << 8 | ((__const unsigned char *) (__const char *) ("IGNIS2=Y"))[4 + 2]) << 8 | ((__const unsigned char *) (__const char *) ("IGNIS2=Y"))[4 + 1]) << 8 | ((__const unsigned char *) (__const char *) ("IGNIS2=Y"))[4]), strlen ("IGNIS2=Y") + 1) : (char *) memcpy (ign2env, "IGNIS2=Y", strlen ("IGNIS2=Y") + 1)) : strcpy (ign2env, "IGNIS2=Y")));
        putenv(ign2env);
    }


    mode = 00 | 0;



    fd1 = io_open(tname, mode, 0, (*(sd_ctrl)->c_g_dblopts2));
    if (((fd1) < 0 ))
        printerr(3, tname);
    if ((oldrev == new_isrev) && !compress && !static_rfa && !noindex &&
         !pmod && !pnull && !fixtype)
    {
        mode = 02 | 0 | 0100 | 0200;



        fd2 = io_open(s_dname, mode, 0, (*(sd_ctrl)->c_g_dblopts2));
        if (((fd2) < 0 ))
            printerr(3, s_dname);
        read(fd1, hdbuf, hdsiz);
        write(fd2, hdbuf, hdsiz);
        close(fd2);
        iclear(sd_ctrl, s_iname);
        rel_vm((char *)hdbuf, "irecovr.c", 902);
    }
    else
    {
        rel_vm((char *)hdbuf, "irecovr.c", 906);
        if (new_isrev == 4)
        {
            if (icreate(fb, filename, 0x00200000L))
            {
                if (cdatenv)
                    rel_vm((char *)cdatenv, "irecovr.c", 912);
                if (envptr)
                    rel_vm((char *)envptr, "irecovr.c", 914);
                if (ign2env)
                    rel_vm((char *)ign2env, "irecovr.c", 916);
                printsdmserr(((sd_ctrl)->c_sd_errno), s_iname);
            }
        }
        else
        {
            if (oldicreate(fb, filename, 0x00200000L, new_isrev))
            {
                if (cdatenv)
                    rel_vm((char *)cdatenv, "irecovr.c", 925);
                if (envptr)
                    rel_vm((char *)envptr, "irecovr.c", 927);
                if (ign2env)
                    rel_vm((char *)ign2env, "irecovr.c", 929);
                printsdmserr(((sd_ctrl)->c_sd_errno), s_iname);
            }
        }
    }

    mode = lock ? (0x00000001L | 0x00000010L) : (0x00000001L | 0x01000000L);
    mode |= (0x00020000L);
    if (!(control = g_control = (ISAMCONTROL *)iopen(sd_ctrl, s_iname, mode, 0)))
        printsdmserr(((sd_ctrl)->c_sd_errno), s_iname);
    if (cdatenv)
        rel_vm((char *)cdatenv, "irecovr.c", 940);
    if (envptr)
        rel_vm((char *)envptr, "irecovr.c", 942);
    if (ign2env)
        rel_vm((char *)ign2env, "irecovr.c", 944);




    if (!oldrev)
    {
        if (!quiet)
            fprintf (stdout, "Upgraded to new ISAM version (%s -->%s )\n", o_ver,isamver);
        do_old_recover(control, fd1);
    }
    else
        do_recover(control, fd1, oldrev);
    if (new_isrev >= 4)
    {

        long hdoff;
        (control->is_ro.is_recovrdate) = (uint32)(time(0));
        hdoff = (char *)&(control->is_ro.is_recovrdate) - (char *)&control->is_ro;
        lseek(control->is_infd, hdoff, 0);
        write(control->is_infd, (char *)&(control->is_ro.is_recovrdate), sizeof(int32));
        if (cleardate)
        {
            hdoff = (char *)&(control->is_ro.is_cleardate) - (char *)&control->is_ro;
            lseek(control->is_infd, hdoff, 0);
            write(control->is_infd, (char *)&cleardate, sizeof(int32));
        }
    }
    iclose(control);
    if (g_control)
        g_control = ((void *)0);



    close(fd1);
    if (!badcnt) (unlink(tname));
    if (s_dname) rel_vm((char *)s_dname, "irecovr.c", 980);
    if (s_iname) rel_vm((char *)s_iname, "irecovr.c", 981);
    fflush(stderr);
    fflush(stdout);
    return;
}

static void
do_recover(control, fd, oldrev)
register ISAMCONTROL *control;
int fd;
int oldrev;
{
    register int32 regint;
    register char *buffp, *memp, *vlenp;
    DESCRIP recdsc;
    int32 reccnt = 0, savcnt = 0, delcnt = 0;
    int dupord, status;
    int32 maxrecsiz, allocsiz;
    int lexceptions = exceptions;

    badcnt = 0;
    maxrecsiz = control->is_rsize + o_rovh;
    allocsiz = control->is_rsize + (control->is_rovh) + 1 + 2;
    if (large_seg)
        allocsiz = (((large_seg) > (allocsiz)) ? (large_seg) : (allocsiz));
    if (!(memp = get_vm(allocsiz, "irecovr.c", 1006, ((void *)0))))
        printerr(2, (char *)to_intreg(allocsiz));
    lseek(fd, (long)hdsiz, 0);
    recdsc.addr = memp + (control->is_rovh);
    recdsc.len = control->is_rsize;
    buffp = recdsc.addr - o_rovh;
    if (o_vseg)
    {
        if (((control->is_ro.is_ftype) & (0x02)))
            vlenp = buffp + sizeof(int16) + 1;
        if (o_vrfa)
        {
            if (oldrev == 0)
                vlenp += sizeof(int32);
            else
                vlenp += 6;
        }
        if (o_crec && !s_uncrec)
            if (!(s_uncrec = get_vm(control->is_rsize+1, "irecovr.c", 1024, ((void *)0))))
                printerr(2, (char *)(control->is_rsize+1));
    }
    getbuf(fd);
    dupord = 1;
    while (regint = getrec(fd, buffp, maxrecsiz, control))
    {
        if (regint < 0)
            longjmp(utlenv, -1);
        if (!o_vseg && (regint < maxrecsiz))
        {
            reccnt++;
            recdsc.len = regint;
            memcpy(recdsc.addr, buffp, regint);
            if (status = printExpRecord(recdsc))
            {
                (unlink(s_iname));
                (unlink(s_dname));
                rel_vm((char *)memp, "irecovr.c", 1042);
                rel_vm((char *)b_buff, "irecovr.c", 1043);
                b_buff = ((void *)0);
                memp = ((void *)0);
                rel_vm((char *)s_uncrec, "irecovr.c", 1046);
                s_uncrec = ((void *)0);
                badcnt++;
                printerr(status, newfilnam);
            }
            continue;
        }
        if ((o_vseg ? (*(char *)(buffp + sizeof(int16)) & 0x80) : (*(char *)(buffp) & 0x80)))
            ++delcnt;
        else
        {
            if (((control->is_ro.is_ftype) & (0x02)))
                recdsc.len = *(uint16 *)(vlenp);
            ++reccnt;
            if (o_crec)
            {
                if ((d_uncompr((unsigned char *)s_uncrec,
                           (unsigned char *)recdsc.addr, recdsc.len, 0)) == -1)
                {
                    memcpy(recdsc.addr, s_uncrec, recdsc.len);
                    if (status = printExpRecord(recdsc))
                    {
                        (unlink(s_iname));
                        (unlink(s_dname));
                        rel_vm((char *)memp, "irecovr.c", 1070);
                        rel_vm((char *)b_buff, "irecovr.c", 1071);
                        b_buff = ((void *)0);
                        memp = ((void *)0);
                        rel_vm((char *)s_uncrec, "irecovr.c", 1074);
                        s_uncrec = ((void *)0);
                        badcnt++;
                        printerr(status, newfilnam);
                    }
                    continue;
                }
                memcpy(recdsc.addr, s_uncrec, recdsc.len);
            }
            if (percent && totrecs)
            {
                bigval = (double)reccnt * 100;
                newpct = bigval / totrecs;
                if (verbose)
                {
                    if ((reccnt - savcnt) >= notify_chg)
                        savcnt = reccnt;
                    fprintf (stdout, "%8d records - %3d%% completed\r", savcnt, newpct);
                    fflush(stdout);
                }
                else if (newpct > curpct)
                {
                    fprintf (stdout, "%3d%% completed\r", newpct);
                    fflush(stdout);
                    curpct = newpct;
                }
            }
            else if (verbose)
            {
                if ((reccnt - savcnt) >= notify_chg)
                {
                    fprintf (stdout, "%8d\r", reccnt);
                    savcnt = reccnt;
                    fflush(stdout);
                }
            }

            if (istore(control, &recdsc, keep_qual, ((void *)0)) < 0)
            {
                switch (((sd_ctrl)->c_sd_errno))
                {
                    case 12:
                        fprintf(stderr, "Illegal record size\n");
                        if (status = printExpRecord(recdsc))
                        {
                            (unlink(s_iname));
                            (unlink(s_dname));
                            rel_vm((char *)memp, "irecovr.c", 1121);
                            rel_vm((char *)b_buff, "irecovr.c", 1122);
                            b_buff = ((void *)0);
                            memp = ((void *)0);
                            if (s_uncrec)
                            {
                                rel_vm((char *)s_uncrec, "irecovr.c", 1127);
                                s_uncrec = ((void *)0);
                            }
                            badcnt++;
                            printerr(status, newfilnam);
                        }
                        break;
                    case 15:
                        fprintf(stderr, "No duplicates allowed\n");
                        if (status = printExpRecord(recdsc))
                        {
                            (unlink(s_iname));
                            (unlink(s_dname));
                            rel_vm((char *)memp, "irecovr.c", 1140);
                            rel_vm((char *)b_buff, "irecovr.c", 1141);
                            b_buff = ((void *)0);
                            memp = ((void *)0);
                            if (s_uncrec)
                            {
                                rel_vm((char *)s_uncrec, "irecovr.c", 1146);
                                s_uncrec = ((void *)0);
                            }
                            badcnt++;
                            printerr(status, newfilnam);
                        }
                        break;
                    case 101:
                    case 16:
                        if (!(istore(control, &recdsc, 0, ((void *)0)) < 0))
                        {
                            dupord = 0;
                            break;
                        }
                        (unlink(s_iname));
                        (unlink(s_dname));
                        rel_vm((char *)memp, "irecovr.c", 1162);
                        rel_vm((char *)b_buff, "irecovr.c", 1163);
                        b_buff = ((void *)0);
                        memp = ((void *)0);
                        if (s_uncrec)
                        {
                            rel_vm((char *)s_uncrec, "irecovr.c", 1168);
                            s_uncrec = ((void *)0);
                        }
                        badcnt++;
                        printerr(15, "recover");
                        break;
                    case 25:
                        (unlink(s_iname));
                        (unlink(s_dname));
                        rel_vm((char *)memp, "irecovr.c", 1177);
                        rel_vm((char *)b_buff, "irecovr.c", 1178);
                        b_buff = ((void *)0);
                        memp = ((void *)0);
                        if (s_uncrec)
                        {
                            rel_vm((char *)s_uncrec, "irecovr.c", 1183);
                            s_uncrec = ((void *)0);
                        }
                        badcnt++;
                        printerr(8, s_iname);
                        break;
                    default:
                        fprintf(stderr,
                            "STORE: - System error #%d from SDMS\n",
                                                ((sd_ctrl)->c_sd_errno));
                        if (status = printExpRecord(recdsc))
                        {
                            (unlink(s_iname));
                            (unlink(s_dname));
                            rel_vm((char *)memp, "irecovr.c", 1197);
                            rel_vm((char *)b_buff, "irecovr.c", 1198);
                            b_buff = ((void *)0);
                            memp = ((void *)0);
                            if (s_uncrec)
                            {
                                rel_vm((char *)s_uncrec, "irecovr.c", 1203);
                                s_uncrec = ((void *)0);
                            }
                            badcnt++;
                            printerr(status, newfilnam);
                        }
                }
            }
        }
    }
    if (memp)
    {
        rel_vm((char *)memp, "irecovr.c", 1215);
        memp = ((void *)0);
    }
    if (b_buff)
    {
        rel_vm((char *)b_buff, "irecovr.c", 1220);
        b_buff = ((void *)0);
    }
    if (s_uncrec)
    {
        rel_vm((char *)s_uncrec, "irecovr.c", 1225);
        s_uncrec = ((void *)0);
    }
    if (lexceptions)
        lexceptions -= exceptions;
    else
        lexceptions = exceptions;
    if (!badcnt && lexceptions)
        badcnt = lexceptions;
    else if (badcnt && lexceptions)
        lexceptions = 0;

    if (!quiet)
    {






        fprintf (stdout, "\r%d records stored, %d deleted records skipped\n", reccnt - badcnt, delcnt);

        if (badcnt)
            fprintf (stdout, "Of %d attempted stores, %d failed\n", reccnt, badcnt);
        if (!dupord)
            fprintf (stdout, "The order of duplicates has not been preserved\n");

    }
    else if (verbose || percent)
        fprintf (stdout, "\n");
    if (lexceptions)
        badcnt = 0;

    return;
}

static void
do_old_recover(control, fd)
register ISAMCONTROL *control;
int fd;
{
    register int32 regint;
    int32 rdsiz, first = 1;
    register char *buffp, *delp, *newqp, *oldqp;
    DESCRIP recdsc;
    int32 reccnt = 0, savcnt = 0, delcnt = 0;
    int dupord, status, orlen;

    badcnt = 0;

    regint = control->is_rsize + o_rovh + (control->is_rovh);
    if (!(buffp = get_vm(regint, "irecovr.c", 1276, ((void *)0))))
        printerr(2, (char *)to_intreg(regint));
    rdsiz = control->is_rsize + o_rovh;
    recdsc.addr = buffp + (control->is_rovh);
    recdsc.len = control->is_rsize;
    delp = recdsc.addr + control->is_rsize;
    oldqp = delp + 1;
    newqp = buffp + 1;

    if (((control->is_ro.is_ftype) & (0x20)))
    {
        if (((control->is_ro.is_ftype) & (0x04)))
            newqp += sizeof(int16);
        if (((control->is_ro.is_ftype) & (0x10)))
            newqp += 6;
    }
    else
        (control->is_ro.is_ftype) &= ~0x10;

    orlen = o_rovh - 1;
    getbuf(fd);
    dupord = 1;
    while (regint = b_read(fd, recdsc.addr, rdsiz))
    {
        if ((regint < 0) || (regint != rdsiz))
        {
            if (first && (regint == 1024))
                break;
            longjmp(utlenv, -1);
        }
        first = 0;
        if (*delp)
            ++delcnt;
        else
        {
            memcpy(newqp, oldqp, orlen);
            ++reccnt;
            if (percent && totrecs)
            {
                bigval = (double)reccnt * 100;
                newpct = bigval / totrecs;
                if (verbose)
                {
                    if ((reccnt - savcnt) >= notify_chg)
                        savcnt = reccnt;
                    fprintf (stdout, "%8d records - %3d%% completed\r", savcnt, newpct);
                    fflush(stdout);
                }
                if (newpct > curpct)
                {
                    fprintf (stdout, "%3d%% completed\r", newpct);
                    fflush(stdout);
                    curpct = newpct;
                }
            }
            else if (verbose)
            {
                if ((reccnt - savcnt) >= notify_chg)
                {
                    fprintf (stdout, "%8d\r", reccnt);
                    savcnt = reccnt;
                    fflush(stdout);
                }
            }

            if (istore(control, &recdsc, keep_qual, ((void *)0)))
            {
                switch (((sd_ctrl)->c_sd_errno))
                {
                    case 12:
                        fprintf(stderr, "Illegal record size\n");
                        if (status = printExpRecord(recdsc))
                        {
                            iclose(control);
                            (unlink(s_iname));
                            (unlink(s_dname));
                            rel_vm((char *)buffp, "irecovr.c", 1352);
                            rel_vm((char *)b_buff, "irecovr.c", 1353);
                            buffp = b_buff = ((void *)0);
                            badcnt++;
                            printerr(status, newfilnam);
                        }
                        break;
                    case 15:
                        fprintf(stderr, "No duplicates allowed\n");
                        if (status = printExpRecord(recdsc))
                        {
                            iclose(control);
                            (unlink(s_iname));
                            (unlink(s_dname));
                            rel_vm((char *)buffp, "irecovr.c", 1366);
                            rel_vm((char *)b_buff, "irecovr.c", 1367);
                            buffp = b_buff = ((void *)0);
                            badcnt++;
                            printerr(status, newfilnam);
                        }
                        break;
                    case 101:
                    case 16:
                        if (!(istore(control, &recdsc, 0, ((void *)0)) < 0))
                        {
                            dupord = 0;
                            break;
                        }
                        iclose(control);
                        (unlink(s_iname));
                        (unlink(s_dname));
                        rel_vm((char *)buffp, "irecovr.c", 1383);
                        rel_vm((char *)b_buff, "irecovr.c", 1384);
                        buffp = b_buff = ((void *)0);
                        badcnt++;
                        printerr(15, "recover");
                        break;
                    case 25:
                        iclose(control);
                        (unlink(s_iname));
                        (unlink(s_dname));
                        rel_vm((char *)buffp, "irecovr.c", 1393);
                        rel_vm((char *)b_buff, "irecovr.c", 1394);
                        buffp = b_buff = ((void *)0);
                        badcnt++;
                        printerr(8, s_iname);
                        break;
                    default:
                        fprintf(stderr,
                            "STORE: - System error #%d from SDMS\n",
                                                        ((sd_ctrl)->c_sd_errno));
                        if (status = printExpRecord(recdsc))
                        {
                            iclose(control);
                            (unlink(s_iname));
                            (unlink(s_dname));
                            rel_vm((char *)buffp, "irecovr.c", 1408);
                            rel_vm((char *)b_buff, "irecovr.c", 1409);
                            buffp = b_buff = ((void *)0);
                            badcnt++;
                            printerr(status, newfilnam);
                        }
                }
            }
        }
    }
    rel_vm((char *)buffp, "irecovr.c", 1418);
    rel_vm((char *)b_buff, "irecovr.c", 1419);
    buffp = b_buff = ((void *)0);
    if (!quiet)
    {
        fprintf (stdout, "\r%ld records stored, %ld deleted records skipped\n", reccnt - badcnt, delcnt);

        if (badcnt)
            fprintf (stdout, "Of %ld attempted stores, %ld failed\n", reccnt, badcnt);
        if (!dupord)
            fprintf (stdout, "The order of duplicates has not been preserved\n");
    }
    else if (verbose || percent)
        fprintf (stdout, "\n");
    return;
}

static ISAMCONTROL *
get_control(fname)
char *fname;
{
    int fd;
    ISAMCONTROL *control;
    OLDCONTROL *ocontrol;
    char buffp[1024];
    int mode;

    mode = correct_data ? (0x00000001L | 0x00000010L) : (0x00000002L | 0x00000010L);
    if (!(control = iopen(sd_ctrl, fname, mode, 0)))
    {
        if (((sd_ctrl)->c_sd_errno) == 122)
            printerr(28, fname);
        if (((sd_ctrl)->c_sd_errno) != 43)
        {
            if (!(control = iopen(sd_ctrl, fname, mode | 0x10000000L, 0)))
            {
                if (((sd_ctrl)->c_sd_errno) != 43)
                    printsdmserr(((sd_ctrl)->c_sd_errno), fname);
            }
        }
    }
    if (control &&
        (((!((control->is_infd) < 0 )) && ((control->is_ro.is_magic) == (uint16)(0x5CA5))) ||
        ((((control->is_infd) < 0 )) && ((control->is_ro.is_magic) == (uint16)(0x5CB5)))))
        set_new_control(control);
    else
    {
        ocontrol = (OLDCONTROL *)buffp;
        fd = io_open(s_iname, 00|0, 0, (*(sd_ctrl)->c_g_dblopts2));
        if (((fd) < 0 ))
            printerr(3, s_iname);
        read(fd, buffp, 1024);
        close(fd);
        if ((ocontrol->o_magic == 0x6CA6)
          || (ocontrol->o_magic == 0x7CA7))
            control = get_old_control(ocontrol);
        else
        {
            rel_vm((char *)ocontrol, "irecovr.c", 1476);
            control = ((void *)0);
            printerr(5, s_dname);
        }
    }

    return(control);
}

static void
set_new_control(control)
ISAMCONTROL *control;
{
    ISAMKEY *keyp;
    int kix, six, segtype;

    o_rovh = (control->is_rovh);
    o_crec = ((control->is_ro.is_ftype) & 0x04) ? 1 : 0;
    o_vseg = ((control->is_ro.is_ftype) & 0x20) ? 1 : 0;
    o_vrfa = ((control->is_ro.is_ftype) & 0x10) ? 1 : 0;

    if (!o_crec && compress)
        (control->is_ro.is_ftype) |= (0x04|0x20);

    if (((control->is_key)->k_flags & (0x8)))
    {
        ((control->is_key)->k_flags &= ~(0x8));
        pmod = 1;
    }

    if (((control->is_key)->k_flags & (0x70)))
    {
        ((control->is_key)->k_flags &= ~(0x70));
        pnull = 1;
    }


    for (keyp = control->is_key, kix = 0; kix < (control->is_ro.is_knum); kix++, keyp++)
    {
        for (six = 0; six < 8 && keyp->k_segsize[six]; six++)
        {

            segtype = keyp->k_segflags[six] & 0x1F;
            if (!segtype)
                fixtype = 1;
            if (((segtype & 0x1) && (segtype & ~0x1))
                || ((segtype & 0x2) && (segtype & ~0x2))
                || ((segtype & 0x4) && (segtype & ~0x4))
                || ((segtype & 0x8) && (segtype & ~0x8))
                || ((segtype & 0x10) && (segtype & ~0x10)))
            {
                printerr(12, (char *)to_intreg(kix));
            }
        }
    }

    if ((!o_vrfa && static_rfa) || (((control->is_ro.is_ftype) & (0x08)) && ((control->is_ro.is_ftype) & (0x20)) && !((control->is_ro.is_ftype) & (0x10))))
    {
        if (((control->is_ro.is_ftype) & (0x20)))
            (control->is_ro.is_ftype) |= (0x10|0x08);
        else
            (control->is_ro.is_ftype) |= 0x08;
    }






    if (new_isrev && (new_isrev != (control->is_ro.is_rev)))
    {

        if (!quiet && (new_isrev >= 2) && (new_isrev <= 4))
        {
            if (new_isrev > (control->is_ro.is_rev))
                fprintf (stdout, "Upgrading File Revision (%d --> %d)\n", (control->is_ro.is_rev), new_isrev);

            else
                fprintf (stdout, "Downgrading File Revision (%d --> %d)\n", (control->is_ro.is_rev), new_isrev);

        }
    }
    else
        new_isrev = (control->is_ro.is_rev);

    if (new_isrev > 4)
    {
        fprintf(stderr, "Warning: %s (rev %d), irecover (rev %d)\n",
            s_iname, new_isrev, 4);
        printerr(13, s_dname);
    }
    return;
}

static ISAMCONTROL *
get_old_control(ocontrol)
OLDCONTROL *ocontrol;
{
    ISAMCONTROL *control;
    int alocsiz, ix, kix, size;
    int16 rovh;
    ISAMKEY *keyp;
    OLDKEY *okeyp;
    char *p;

    if (!new_isrev)
        new_isrev = 4;
    alocsiz = sizeof(ISAMCONTROL) + (ocontrol->o_knum * sizeof(ISAMKEY));
    control = (ISAMCONTROL *)get_vm(alocsiz, "irecovr.c", 1584, ((void *)0));

    (__extension__ (__builtin_constant_p (alocsiz) && (alocsiz) <= 16 ? ((alocsiz) == 1 ? ({ void *__s = (control); *((__uint8_t *) __s) = (__uint8_t) 0; __s; }) : ({ void *__s = (control); union { unsigned int __ui; unsigned short int __usi; unsigned char __uc; } *__u = __s; __uint8_t __c = (__uint8_t) (0); switch ((unsigned int) (alocsiz)) { case 15: __u->__ui = __c * 0x01010101; __u = __extension__ ((void *) __u + 4); case 11: __u->__ui = __c * 0x01010101; __u = __extension__ ((void *) __u + 4); case 7: __u->__ui = __c * 0x01010101; __u = __extension__ ((void *) __u + 4); case 3: __u->__usi = (unsigned short int) __c * 0x0101; __u = __extension__ ((void *) __u + 2); __u->__uc = (unsigned char) __c; break; case 14: __u->__ui = __c * 0x01010101; __u = __extension__ ((void *) __u + 4); case 10: __u->__ui = __c * 0x01010101; __u = __extension__ ((void *) __u + 4); case 6: __u->__ui = __c * 0x01010101; __u = __extension__ ((void *) __u + 4); case 2: __u->__usi = (unsigned short int) __c * 0x0101; break; case 13: __u->__ui = __c * 0x01010101; __u = __extension__ ((void *) __u + 4); case 9: __u->__ui = __c * 0x01010101; __u = __extension__ ((void *) __u + 4); case 5: __u->__ui = __c * 0x01010101; __u = __extension__ ((void *) __u + 4); case 1: __u->__uc = (unsigned char) __c; break; case 16: __u->__ui = __c * 0x01010101; __u = __extension__ ((void *) __u + 4); case 12: __u->__ui = __c * 0x01010101; __u = __extension__ ((void *) __u + 4); case 8: __u->__ui = __c * 0x01010101; __u = __extension__ ((void *) __u + 4); case 4: __u->__ui = __c * 0x01010101; case 0: break; } __s; })) : (__builtin_constant_p (0) && (0) == '\0' ? ({ void *__s = (control); __builtin_memset (__s, '\0', alocsiz); __s; }) : memset (control, 0, alocsiz))));
    p = (char *)control + sizeof(ISAMCONTROL);
    control->is_key = (ISAMKEY *)p;
    control->sd_ctrl = sd_ctrl;
    (&control->is_mlhead)->next = (&control->is_mlhead), (&control->is_mlhead)->prev = (&control->is_mlhead);
    (control->is_ro.is_magic) = ocontrol->o_magic;
    (control->is_ro.is_rev) = 0;
    (control->is_ro.is_ftype) = 0;
    if (compress)
        (control->is_ro.is_ftype) |= (0x04|0x20);
    if (static_rfa)
    {
        if (((control->is_ro.is_ftype) & (0x20)))
            (control->is_ro.is_ftype) |= (0x10|0x08);
        else
            (control->is_ro.is_ftype) |= 0x08;
    }
    (control->is_ro.is_knum) = ocontrol->o_knum;
    (control->is_ro.is_blksiz8) = ((1024) >> 8);
    (control->is_ro.is_hdsiz8) = ((1024) >> 8);
    rovh = ocontrol->o_rlen - ocontrol->o_rsize;
    (control->is_ro.is_rovhp) = (uint16)(rovh + 1);
    o_rovh = rovh;

    (control->is_ro.is_rosiz) = 0;
    (control->is_ro.is_rwsiz) = 0;
    (control->is_ro.is_maxklen) = (uint16)(ocontrol->o_maxklen);
    (control->is_ro.is_recsiz) = (uint16)(ocontrol->o_rsize);

    ((6) < (8) ? (memmove(((control->is_ro.is_version)), (((char *)ocontrol + (1024 -6))), (6)), (__extension__ (__builtin_constant_p ((8) - (6)) && ((8) - (6)) <= 16 ? (((8) - (6)) == 1 ? ({ void *__s = (((control->is_ro.is_version)) + (6)); *((__uint8_t *) __s) = (__uint8_t) ('\0'); __s; }) : ({ void *__s = (((control->is_ro.is_version)) + (6)); union { unsigned int __ui; unsigned short int __usi; unsigned char __uc; } *__u = __s; __uint8_t __c = (__uint8_t) (('\0')); switch ((unsigned int) ((8) - (6))) { case 15: __u->__ui = __c * 0x01010101; __u = __extension__ ((void *) __u + 4); case 11: __u->__ui = __c * 0x01010101; __u = __extension__ ((void *) __u + 4); case 7: __u->__ui = __c * 0x01010101; __u = __extension__ ((void *) __u + 4); case 3: __u->__usi = (unsigned short int) __c * 0x0101; __u = __extension__ ((void *) __u + 2); __u->__uc = (unsigned char) __c; break; case 14: __u->__ui = __c * 0x01010101; __u = __extension__ ((void *) __u + 4); case 10: __u->__ui = __c * 0x01010101; __u = __extension__ ((void *) __u + 4); case 6: __u->__ui = __c * 0x01010101; __u = __extension__ ((void *) __u + 4); case 2: __u->__usi = (unsigned short int) __c * 0x0101; break; case 13: __u->__ui = __c * 0x01010101; __u = __extension__ ((void *) __u + 4); case 9: __u->__ui = __c * 0x01010101; __u = __extension__ ((void *) __u + 4); case 5: __u->__ui = __c * 0x01010101; __u = __extension__ ((void *) __u + 4); case 1: __u->__uc = (unsigned char) __c; break; case 16: __u->__ui = __c * 0x01010101; __u = __extension__ ((void *) __u + 4); case 12: __u->__ui = __c * 0x01010101; __u = __extension__ ((void *) __u + 4); case 8: __u->__ui = __c * 0x01010101; __u = __extension__ ((void *) __u + 4); case 4: __u->__ui = __c * 0x01010101; case 0: break; } __s; })) : (__builtin_constant_p (('\0')) && (('\0')) == '\0' ? ({ void *__s = (((control->is_ro.is_version)) + (6)); __builtin_memset (__s, '\0', (8) - (6)); __s; }) : memset (((control->is_ro.is_version)) + (6), ('\0'), (8) - (6))))) ) : memmove(((control->is_ro.is_version)), (((char *)ocontrol + (1024 -6))), (8)) );
    memcpy(o_ver, (char *)ocontrol + (1024 - 6), 6);

    if ((control->is_ro.is_rev) > 4)
    {
        fprintf(stderr, "Warning: %s (rev %d), irecover (rev %d)\n",
            s_iname, (control->is_ro.is_rev), 4);
        printerr(13, s_dname);
    }
    if (!quiet)
        fprintf (stdout, "Upgrading File Revision (%d --> %d)\n", (control->is_ro.is_rev), new_isrev);

    keyp = control->is_key;
    okeyp = ocontrol->o_key;
    for (kix = 0; kix < (control->is_ro.is_knum); kix++, keyp++, okeyp++)
    {
        if (okeyp->o_atend)
            ((keyp)->k_flags |= (0x2));
        if (okeyp->o_dups)
            ((keyp)->k_flags |= (0x4));
        if (okeyp->o_modify)
            ((keyp)->k_flags |= (0x8));
        keyp->k_size = (uint16)(okeyp->o_size);
        size = 0;
        for (ix = 0; okeyp->o_segsize[ix] && (ix < 8); ix++)
        {
            keyp->k_offset[ix] = (uint16)(okeyp->o_offset[ix]);
            keyp->k_segsize[ix] = (uint16)(okeyp->o_segsize[ix]);
            if (okeyp->o_ascend)
                ((keyp)->k_segflags[ix] |= ((0x20 | 0x1)));
            else
                ((keyp)->k_segflags[ix] |= (0x1));
            size += okeyp->o_segsize[ix];
        }



        if (size != okeyp->o_size)
        {
            if (size == 0)
            {
                keyp->k_offset[0] = (uint16)(okeyp->o_offset[0]);
                keyp->k_segsize[0] = (uint16)(okeyp->o_size) - (((control->is_ro.is_ftype) & (0x40)) ? 4 : 3);
                if (okeyp->o_ascend)
                    ((keyp)->k_segflags[0] |= ((0x20 | 0x1)));
                else
                    ((keyp)->k_segflags[0] |= (0x1));
            }
            else if (!okeyp->o_dups || ((size + (((control->is_ro.is_ftype) & (0x40)) ? 4 : 3)) != okeyp->o_size))
                printerr(12, (char *)(keyp - control->is_key));
        }
        memcpy(keyp->k_name, okeyp->o_name, 15);
        keyp->k_name[15] = '\0';
    }

    return(control);
}
# 1692 "irecovr.c"
static int32
getrec(fd, buffp, rsize, control)
int fd;
char *buffp;
int32 rsize;
register ISAMCONTROL *control;
{
    register int rdlen;
    register uint16 slen;

    if (o_vseg)
    {
        do
        {
            rdlen = b_read(fd, buffp, (int32)sizeof(int16));
            if (rdlen < sizeof(int16))
                return(rdlen);
            slen = *(uint16 *)(buffp);
# 1722 "irecovr.c"
        } while (!slen);
        slen -= sizeof(int16);
        rdlen = b_read(fd, buffp + sizeof(int16), (int32)slen);
        if (rdlen == slen)
            rdlen += sizeof(int16);
    }
    else
        rdlen = b_read(fd, buffp, rsize);
    return(rdlen);
}

static int
b_read(fd, buffp, rdreq)
int fd;
char *buffp;
register int32 rdreq;
{
    register int xfr, rdlen = 0;

    for (;;)
    {
        xfr = b_last - b_ptr;
        if (rdreq < xfr)
            xfr = rdreq;
        memcpy(buffp, b_ptr, xfr);
        buffp += xfr;
        b_ptr += xfr;
        rdlen += xfr;
        if (rdreq -= xfr)
        {
            getbuf(fd);
            if (b_last <= b_buff)
                return(rdlen);
        }
        else
            break;
    }
    return(rdlen);
}

static void
getbuf(fd)
int fd;
{
    if (!b_buff)
    {
        b_bufsiz = enval("IDATASIZ", 8 * 1024);
        if (!(b_buff = get_vm(b_bufsiz, "irecovr.c", 1769, ((void *)0))))
            printerr(2, (char *)to_intreg(b_bufsiz));
    }







    b_last = b_buff + read(fd, b_buff, b_bufsiz);
    if (b_last < b_buff)
        printerr(11, ((void *)0));
    b_ptr = b_buff;
    return;
}
# 1799 "irecovr.c"
static void
recover_index(fname)
char *fname;
{
}
# 1817 "irecovr.c"
static int
enval(evar, defval)
char *evar;
int defval;
{
    register char *ep;

    return((ep = getenv(evar))? atoi(ep) : defval);
}
# 1840 "irecovr.c"
static void
printerr(errcode, arg)
int errcode;
char *arg;
{
    if (errcode != 0)
        fprintf(stderr, "\n%%IRECOVR-E-%02d: ", errcode);
    switch(errcode)
    {
        case 0:
            fprintf(stderr,
              "usage: irecovr [-cdkqstv] [-f sfile] [-o directory] [-x xfile] isam_files\n");
            break;
        case 1:
            fprintf(stderr, "Packing density in range 0 - 100 expected");
            break;
        case 2:
            fprintf(stderr, "Insufficient memory to allocate %d bytes\n", arg);
            break;
        case 3:
            if ((*__errno_location ()) == -2)
                fprintf(stderr, "File in use\n");
            else
                fprintf(stderr, "System error #%d opening '%s'\n", (*__errno_location ()), arg);
            break;
        case 4:
            fprintf(stderr, "'%s' not an ISAM index file\n", arg);
            break;
        case 5:
            fprintf(stderr, "'%s' not an ISAM data file\n", arg);
            break;
        case 6:
            fprintf(stderr, "System error #%d from SDMS\n", arg);
            break;
        case 7:
            fprintf(stderr, "Can't create '%s'\n", arg);
            break;
        case 8:
             fprintf(stderr, "Write system error #%d to '%s'\n", (*__errno_location ()), arg);
            break;
        case 9:
            fprintf(stderr, "Read system error #%d from '%s'\n", (*__errno_location ()), arg);
            break;
        case 10:
            fprintf(stderr, "System error #%d renaming to '%s'\n", (*__errno_location ()), arg);
            break;
        case 11:
            fprintf(stderr, "System error #%d reading file\n", (*__errno_location ()));
            break;
        case 12:
            fprintf(stderr, "Bad key #%d definition\n", arg);
            break;
        case 13:
            fprintf(stderr, "Cannot recover %s, file revision newer\n", arg);
            break;
        case 14:
            fprintf(stderr, "Bad data segment size %d\n", arg);
            fprintf(stderr, "%%IRECOVR-I-01: File cannot be IRECOVRd\n");
            break;
        case 15:
            fprintf(stderr, "Not enough space to %s %s\n", arg, s_iname);
            if (!__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (arg) && __builtin_constant_p ("recover") && (__s1_len = strlen (arg), __s2_len = strlen ("recover"), (!((size_t)(const void *)((arg) + 1) - (size_t)(const void *)(arg) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("recover") + 1) - (size_t)(const void *)("recover") == 1) || __s2_len >= 4)) ? memcmp ((__const char *) (arg), (__const char *) ("recover"), (__s1_len < __s2_len ? __s1_len : __s2_len) + 1) : (__builtin_constant_p (arg) && ((size_t)(const void *)((arg) + 1) - (size_t)(const void *)(arg) == 1) && (__s1_len = strlen (arg), __s1_len < 4) ? (__builtin_constant_p ("recover") && ((size_t)(const void *)(("recover") + 1) - (size_t)(const void *)("recover") == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (arg))[0] - ((__const unsigned char *) (__const char *)("recover"))[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (arg))[1] - ((__const unsigned char *) (__const char *) ("recover"))[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (arg))[2] - ((__const unsigned char *) (__const char *) ("recover"))[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (arg))[3] - ((__const unsigned char *) (__const char *) ("recover"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("recover"); register int __result = (((__const unsigned char *) (__const char *) (arg))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (arg))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (arg))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (arg))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("recover") && ((size_t)(const void *)(("recover") + 1) - (size_t)(const void *)("recover") == 1) && (__s2_len = strlen ("recover"), __s2_len < 4) ? (__builtin_constant_p (arg) && ((size_t)(const void *)((arg) + 1) - (size_t)(const void *)(arg) == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (arg))[0] - ((__const unsigned char *) (__const char *)("recover"))[0]); if (__s2_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (arg))[1] - ((__const unsigned char *) (__const char *) ("recover"))[1]); if (__s2_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (arg))[2] - ((__const unsigned char *) (__const char *) ("recover"))[2]); if (__s2_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (arg))[3] - ((__const unsigned char *) (__const char *) ("recover"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (arg); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("recover"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("recover"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("recover"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("recover"))[3]); } } __result; }))) : strcmp (arg, "recover")))); }))
                fprintf(stderr,
                    "%%IRECOVR-I-02: Rename %s to %s and repeat irecovr\n",
                    tname, s_dname);
            break;
        case 16:
            fprintf(stderr, "%s is not empty\n", arg);
            break;
        case 17:
            fprintf(stderr, "Fastload: Record exceeds buffer size");
            break;
        case 18:
            fprintf(stderr, "%s is not a directory\n", arg);
            break;
        case 19:
            fprintf(stderr, "%s option not supported with V4 files\n", arg);
            break;
        case 20:
            fprintf(stderr, "File context lost at 0x%x\n", arg);
            fprintf(stderr, "%%IRECOVR-I-01: File cannot be IRECOVRd\n");
            break;
        case 21:
            fprintf(stderr, "System lock failure, Try -l option\n");
            break;
        case 22:
            fprintf(stderr, "Exception file specification not allowed\n");
            fprintf(stderr, "%%IRECOVR-I-01: with multiple file irecovr\n");
            break;
        case 23:
            fprintf(stderr, "Exception file %s exists\n", arg);
            break;
        case 24:
            fprintf(stderr, "Invalid ISAMC_REV %d\n", arg);
            break;
        case 25:
            fprintf(stderr, "%d bad segment bytes found\n", arg);
            fprintf(stderr,
                "%%IRECOVR-I-01: Irecovr can attempt to correct them. Use -a option\n");
            break;
        case 26:
            fprintf(stderr, "Backup data file %s exists\n", arg);
            fprintf(stderr,
                "%%IRECOVR-I-01: Rename %s to %s to irecovr %s\n",
                                                        arg, s_dname, arg);
            fprintf(stderr,
                "%%IRECOVR-I-02: Save or remove %s to irecovr %s\n",
                                                        arg, s_dname);
            break;
        case 27:
            fprintf(stderr, "Unknown file %s detected\n", arg);
            fprintf(stderr,
                "%%IRECOVR-I-01: %s must be renamed or removed to continue\n",
                        arg);
        case 28:
            fprintf(stderr, "In-progress sort file detected\n");
            fprintf(stderr, "%%IRECOVR-I-01: You MUST re-run isutl\n");
            break;
        case 29:
            fprintf(stderr, "Process interrupted\n");
            break;
        default:
            fprintf(stderr, "Unknown error code %d\n", errcode);
            break;
    }
    if (blkmemory)
    {
        rel_vm((char *)blkmemory, "irecovr.c", 1967);
        blkmemory = ((void *)0);
    }
    if (g_control)
    {
        iclose(g_control);
        g_control = ((void *)0);
    }
    if (s_uncrec)
    {
        rel_vm((char *)s_uncrec, "irecovr.c", 1977);
        s_uncrec = ((void *)0);
    }
    if (s_iname)
    {
        rel_vm((char *)s_iname, "irecovr.c", 1982);
        s_iname = ((void *)0);
    }
    if (s_dname)
    {
        rel_vm((char *)s_dname, "irecovr.c", 1987);
        s_dname = ((void *)0);
    }
    flush_exit(1);
}

void
printsdmserr(errcode, arg)
int32 errcode;
char *arg;
{
    struct sdms_etxt *errp;

    fprintf(stderr, "\n%%IRECOVR-E-%02d: ", errcode);
    for (errp = sdms_err_array; errp->num; errp++)
    {
        if (errp->num == errcode)
        {
            fprintf(stderr, "%s\n", errp->typ);
            break;
        }
    }
    if (!errp->num)
        fprintf(stderr, "Unknown error code\n");
    fprintf(stderr, "%%IRECOVR-I---: File specified was %s\n", arg);
    if (blkmemory)
    {
        rel_vm((char *)blkmemory, "irecovr.c", 2014);
        blkmemory = ((void *)0);
    }
    if (g_control)
    {
        iclose(g_control);
        g_control = ((void *)0);
    }
    if (s_uncrec)
    {
        rel_vm((char *)s_uncrec, "irecovr.c", 2024);
        s_uncrec = ((void *)0);
    }
    if (s_iname)
    {
        rel_vm((char *)s_iname, "irecovr.c", 2029);
        s_iname = ((void *)0);
    }
    if (s_dname)
    {
        rel_vm((char *)s_dname, "irecovr.c", 2034);
        s_dname = ((void *)0);
    }
    flush_exit(1);
}

int
chkbucket(control, len, del)
ISAMCONTROL *control;
int32 len;
int del;
{
    FBUCKET *bucket;
    int num, st = 0;

    if (((control->is_ro.is_ftype) & (0x01)))
        return(0);
    bucket = (control->is_rw->is_dfree);
    num = (control->is_rw->is_bnum);
    while (num && ((uint16)(bucket->b_len) != len))
        ++bucket, --num;
    if ((num == 0) && !del)
        st = 1;
    return(st);
}
# 2072 "irecovr.c"
int
istamp(argv, argc)
char **argv;
int argc;
{
    uint8 val_8 = 0;
    uint16 val_16 = 0, port_16;
    uint32 val_32 = 0, port_32;
    int fd;
    int len = 2, port = 1;
    long fpos = 0;

    argv++;
    if ((--argc > 0) && ((**argv == '-') || (**argv == '+')))
    {
        if (**argv == '-')
            port = 0;
        switch (*(*argv+1))
        {
            case '1':
                if (--argc)
                    val_8 = (char)strtol(*++argv, ((void *)0), 0);
                if (val_16 || val_32)
                    fprintf(stderr, "Ambiguous (1, 2, or 4)\n"), exit(1);
                len = 1;
                break;
            case '2':
                if (--argc)
                    val_16 = (uint16)strtol(*++argv, ((void *)0), 0);
                if (val_8 || val_32)
                    fprintf(stderr, "Ambiguous (1, 2, or 4)\n"), exit(1);
                len = 2;
                break;
            case '4':
                if (--argc)
                    val_32 = (uint32)strtol(*++argv, ((void *)0), 0);
                if (val_8 || val_16)
                    fprintf(stderr, "Ambiguous (1, 2, or 4)\n"), exit(1);
                len = 4;
                break;
            default:
                fprintf(stderr, "istamp [-siz] val pos file\n"), exit(1);
                break;
        }
        --argc;
    }
    else
    {
        if (--argc > 0)
            val_16 = (uint16)strtol(*argv, ((void *)0), 0);
    }
    if (argc != 2)
        fprintf(stderr, "istamp [-siz] val pos file\n"), exit(1);

    fpos = strtol(*++argv, ((void *)0), 0);

    fd = io_open(*++argv, 02 | 0, 0, (*(sd_ctrl)->c_g_dblopts2));
    if (((fd) < 0 ))
        printerr(3, *argv);

    lseek(fd, fpos, 0);
    if (len == 1)
    {
        fprintf(stderr, "Stamping 0x%02x @0x%x in %s\n", val_8, fpos, *argv);
        write(fd, &val_8, len);
    }
    else if (len == 2)
    {
        if (port)
        {
            port_16 = (uint16)(val_16);
            val_16 = port_16;
        }
        fprintf(stderr, "Stamping 0x%04x @0x%x in %s\n", val_16, fpos, *argv);
        write(fd, &val_16, len);
    }
    else if (len == 4)
    {
        if (port)
        {
            port_32 = (uint16)(val_32);
            val_32 = port_32;
        }
        fprintf(stderr, "Stamping 0x%08x @0x%x in %s\n", val_32, fpos, *argv);
        write(fd, &val_32, len);
    }
    close(fd);
    exit(0);
    return(0);
}
# 2183 "irecovr.c"
int
scandata(control, fd, oldrev)
ISAMCONTROL *control;
int fd;
int oldrev;
{
    int maxsegsiz, blksiz = 10*1024;
    char *ptr, *phead = ((void *)0), *vp, *recpos;
    int exceptall = 0;
    int slen = 0, rlen, len, remlen = 0;
    int32 recs = 0, badseg = 0;
    unsigned int force_bytes = 0;
    FILEOFF force_off;
    FILEOFF fpos, zero;
    FILEOFF savpos, eofpos, nxtseg;
    int recsiz, bnum, status, vbadseg = 0;
    uint16 newlen, outlen;
    uint8 delchr = 0x80;
    FBUCKET *bptr;
    DESCRIP exdsc;
    int badsegment;
    long tmpval;

    if ((control->is_ro.is_rev) < 2)
        return(0);

    recsiz = (uint16)((control->is_ro.is_recsiz));
    (zero).b32 = (0);
    (force_off).b32 = (0);
    if (!o_vseg)
    {
        fpos = dlseek(fd, zero, 2, ((control->is_ro.is_ftype) & (0x40)));
        maxsegsiz = recsiz + o_rovh;
        if (((fpos).b32 - hdsiz) % maxsegsiz)
        {


            if (oldrev >= 4)
                fprintf(stderr, "Synchronizing data file");
            else
                printerr(14, (char *)(fpos).b32);
        }
        totrecs = ((fpos).b32 - (((control->is_ro.is_hdsiz8)) << 8)) / maxsegsiz;
        return(1);
    }

    totrecs = 0;
    if ((maxsegsiz = recsiz + (control->is_rovh) + 1 + 2) > blksiz)
        blksiz = maxsegsiz;
    tmpval = blksiz;
    if (!(blkmemory = get_vm(blksiz, "irecovr.c", 2233, ((void *)0))))
        printerr(2, (char *)(tmpval));
    if (large_seg)
        maxsegsiz = (((large_seg) > (maxsegsiz)) ? (large_seg) : (maxsegsiz));
    tmpval = recsiz+1;
    if (!(s_uncrec = get_vm(tmpval, "irecovr.c", 2238, ((void *)0))))
        printerr(2, (char *)(tmpval));

    (fpos).b32 = (hdsiz);
    eofpos = dlseek(fd, fpos, 2, ((control->is_ro.is_ftype) & (0x40)));
    fpos = dlseek(fd, fpos, 0, ((control->is_ro.is_ftype) & (0x40)));
    while ((len = read(fd, blkmemory + remlen, blksiz - remlen)) > 0)
    {
        len += remlen;
        ptr = blkmemory;
        badsegment = 0;
        while (len >= 2)
        {
            slen = *(uint16 *)(ptr);
            if (!((control->is_ro.is_ftype) & (0x01)) || (control->is_infd > 0))
            {
                bptr = (control->is_rw->is_dfree);
                bnum = 0;
                while ((bnum < (int)(control->is_rw->is_bnum)) && ((uint16)(bptr->b_len) < slen))
                    ++bptr, ++bnum;



                if (((uint16)(bptr->b_len) != slen) &&
                    (((slen <= 0) ||
                    (slen > (uint16)((control->is_rw->is_dfree)[0].b_len) + sizeof(int16))) ||
                    !(control->is_rw->is_rlost)))
                {
                    if (((control->is_ro.is_ftype) & (0x04)))
                    {
                        if (!force_bytes && (slen > (uint16)(bptr->b_len)))
                        {


                            (nxtseg).b32 = (fpos).b32;
                            (nxtseg).b32 += (slen);
                            if ((((control->is_ro.is_ftype) & (0x20)) ? (*(char *)(ptr + sizeof(int16)) & 0x80) : (*(char *)(ptr) & 0x80)) &&
                                ((nxtseg).b32 <= (eofpos).b32))
                            {
                                if (slen > large_seg)
                                    large_seg = slen;
                                goto process_rec;
                            }
                        }
                        if (!(force_off).b32)
                            (force_off).b32 = (fpos).b32;
                        if (!phead)
                            phead = ptr;
                        force_bytes++;
                        badseg++;
                        (fpos).b32 += (1);
                        ptr++;
                        len--;
                        if (len < 2)
                        {
                            badsegment = 1;
                            goto except;
                        }
                        continue;
                    }
                    else
                        vbadseg = 1;
                }
            }
process_rec:
            if ((((control->is_ro.is_ftype) & (0x01)) && (control->is_infd > 0)) || vbadseg)

            {
                if (exceptall || ((slen <= 0) || (slen > maxsegsiz)) || vbadseg)
                {
                    if (!correct_data)
                    {
                        long tmpval = slen;
                        printerr(14, (char *)tmpval);
                    }
                    else
                    {
                        if (!exceptall)
                            (force_off).b32 = (fpos).b32;
                        savpos = dlseek(fd, zero, 1, ((control->is_ro.is_ftype) & (0x40)));
                        while (len > 0)
                        {
                            exdsc.len = newlen = (((len) < (maxsegsiz)) ? (len) : (maxsegsiz));
                            exdsc.addr = ptr;
                            outlen = (uint16)(newlen);
                            if (status = printExpRecord(exdsc))
                                printerr(status, newfilnam);
                            dlseek(fd, fpos, 0, ((control->is_ro.is_ftype) & (0x40)));
                            write(fd, &outlen, sizeof(int16));
                            write(fd, &delchr, sizeof(int8));
                            (fpos).b32 += (newlen);
                            ptr += newlen;
                            len -= newlen;
                            force_bytes += newlen;
                            badseg++;
                        }
                        dlseek(fd, savpos, 0, ((control->is_ro.is_ftype) & (0x40)));
                        exceptall = 1;
                        continue;
                    }
                }
            }
            if (slen > len)
                break;

            if (!(((control->is_ro.is_ftype) & (0x20)) ? (*(char *)(ptr + sizeof(int16)) & 0x80) : (*(char *)(ptr) & 0x80)) && ((control->is_ro.is_ftype) & (0x02)))
            {
                vp = ptr + sizeof(int16) + 1;
                if (o_vrfa)
                    vp += 6;
                rlen = *(uint16 *)(vp);
                if (rlen > recsiz)
                {
                    long tmp = rlen;
                    printerr(14, (char *)tmp);
                }
            }
            else
                rlen = recsiz;
            if (!(((control->is_ro.is_ftype) & (0x20)) ? (*(char *)(ptr + sizeof(int16)) & 0x80) : (*(char *)(ptr) & 0x80)) && o_crec)
            {
                recpos = ptr + (control->is_rovh);
                if (d_uncompr((unsigned char *)s_uncrec,
                              (unsigned char *)recpos, rlen, 0) == -1)
                {
                    if (!(force_off).b32)
                        (force_off).b32 = (fpos).b32;
                    if (!phead)
                        phead = ptr;
                    force_bytes++;
                    badseg++;
                    (fpos).b32 += (1);
                    ptr++;
                    len--;
                    continue;
                }
            }

except:
            if (force_bytes)
            {
                if (recs)
                    fprintf (stdout, "%d data segments scanned successfully\n", recs);




                fprintf (stdout, "%d bytes skipped from 0x%lx to 0x%lx\n", force_bytes, (force_off).b32, (fpos).b32);


                savpos = dlseek(fd, zero, 1, ((control->is_ro.is_ftype) & (0x40)));
                if ((force_bytes > maxsegsiz) && (force_bytes > large_seg))
                    large_seg = force_bytes;
                if (correct_data)
                {
                    if (phead)
                    {
                        exdsc.addr = phead;
                        exdsc.len = force_bytes;
                        if (status = printExpRecord(exdsc))
                            printerr(status, newfilnam);
                        phead = ((void *)0);
                    }
                    while (force_bytes > 0)
                    {
                        if (force_bytes > 2)
                        {
                            dlseek(fd, force_off, 0, ((control->is_ro.is_ftype) & (0x40)));
                            newlen = (((force_bytes) < (65535)) ? (force_bytes) : (65535));
                            outlen = (uint16)(newlen);
                            write(fd, &outlen, sizeof(int16));
                            write(fd, &delchr, sizeof(int8));
                            force_bytes -= newlen;
                            (force_off).b32 += (newlen);
                        }
                        else
                        {
                            outlen = 0;
                            write(fd, &outlen, sizeof(int16));
                            force_bytes = 0;
                        }
                    }
                    dlseek(fd, savpos, 0, ((control->is_ro.is_ftype) & (0x40)));
                }
                recs = 0;
            }
            else if (!(((control->is_ro.is_ftype) & (0x20)) ? (*(char *)(ptr + sizeof(int16)) & 0x80) : (*(char *)(ptr) & 0x80)))
            {
                totrecs++;
                recs++;
            }
            if (!badsegment)
            {
                (force_off).b32 = (0);
                force_bytes = 0;
                (fpos).b32 = ((fpos).b32 + slen);
                ptr += slen;
                len -= slen;
            }
        }
        if (!correct_data && !badsegment && (slen > maxsegsiz))
        {
            long tmp = slen;
            printerr(14, (char *)tmp);
        }
        fpos = dlseek(fd, zero, 1, ((control->is_ro.is_ftype) & (0x40)));
        if (correct_data && phead)
        {
            exdsc.addr = phead;
            exdsc.len = force_bytes;
            if (status = printExpRecord(exdsc))
                printerr(status, newfilnam);
            phead = ((void *)0);
        }
        if (len > 0)
        {
            memcpy(blkmemory, ptr, len);
            (fpos).b32 = ((fpos).b32 - len);
        }
        if (len >= 0)
            remlen = len;
    }
    if (badseg && recs)
        fprintf (stdout, "%d data segments scanned successfully\n", recs);
    if (force_bytes)
# 2471 "irecovr.c"
        fprintf (stdout, "%d bytes skipped from 0x%lx to EOF\n", force_bytes, (force_off).b32);



    if (badseg > 1)
        fprintf (stdout, "%d total data segments successfully scanned\n", totrecs);
    if (!correct_data && badseg)
    {
        long tmp = badseg;
        printerr(25, (char *)tmp);
    }
    rel_vm((char *)blkmemory, "irecovr.c", 2482);
    blkmemory = ((void *)0);
    return(1);
}

static int
printExpRecord(curdsc)
DESCRIP curdsc;
{

    if (!openexcfil)
    {
        if ((excfctl = sdms_open(newfilnam, 0x00000004L|0x00000100L, ((void *)0), 0, 0, ((void *)0)))
            == ((void *)0))
        {
            return(3);
        }
        else
            openexcfil = 1;
    }

    cnt_writes(excfctl, &curdsc);
    exceptions++;
    return(0);
}

int
cnt_writes(fcp, bf)
FCNTRL *fcp;
DESCRIP *bf;
{

    int len;
    int ret_len = -1;
    unsigned char hdr_string[2];
    DESCRIP hdr;
    typedef struct rhdr
    {
        unsigned char rcd_len[2];
    } RHEADER;

    if (!tmp_string || (tmp_string_len < (bf->len + 10)))
    {
        if (tmp_string)
            rel_vm((char *)tmp_string, "irecovr.c", 2526);
        tmp_string = (char *) get_vm(bf->len + 10, "irecovr.c", 2527, ((void *)0));
        tmp_string_len = bf->len + 10;
    }
    len = bf->len;

    hdr.addr = (char *)hdr_string;
    hdr.len = sizeof(RHEADER);

    *(uint16 *)(hdr_string) = (uint16)(len);
    ret_len = (fcp ? (*(fcp)->f_writes)((fcp)->fcp, &hdr, 0x00002000L, ((void *)0)) : -2);

    if (ret_len == -1)
        return(-1);

    if (len != 0)
    {
        memcpy(tmp_string, bf->addr, len);
        if ((len % 2) ? 1 : 0)
        {
            tmp_string[len] = '\0';
            len++;
        }
        hdr.len = len;
        hdr.addr = tmp_string;
        ret_len = (fcp ? (*(fcp)->f_writes)((fcp)->fcp, &hdr, 0x00002000L, ((void *)0)) : -2);
    }

    return((ret_len != -1) ? 0 : -1);
}

static int
icnt_close(fcp)
FCNTRL *fcp;
{
    uint8 eof_rec[2];
    DESCRIP erec;

    eof_rec[0] = 0xff;
    eof_rec[1] = 0xff;
    erec.addr = (char *)eof_rec;
    erec.len = 2;
    (void)(fcp ? (*(fcp)->f_writes)((fcp)->fcp, &erec, 0x00002000L, ((void *)0)) : -2);
    sdms_close(fcp, 0);
    return(0);
}

void
procintr(sig)
int sig;
{

    longjmp(utlenv, 29);




}

__inline static long
to_intreg(int val)
{
    long tmp = val;
    return(tmp);
}


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2002-04-11 21:16 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-04-11 14:16 c/4757: GCC 3.0.1 fails to compile when -fschedule-insns option is specified rth
  -- strict thread matches above, loose matches on Subject: below --
2002-04-11  2:46 Reichelt
2001-10-31  9:56 Matt.Rhodes

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).