tt/mini_isam: add new isam_prototypes.h include file and fix up problems
authorJon Trulson <jon@radscan.com>
Sun, 1 Jul 2018 02:09:49 +0000 (20:09 -0600)
committerJon Trulson <jon@radscan.com>
Sun, 1 Jul 2018 02:13:39 +0000 (20:13 -0600)
There were a variety of potential 64b problems due to the complete
lack of prototype declarations.  So, we add a file, isam_prototypes.h,
generated mostly by the 'cproto' tool.

We also fixed up some errors that having proper prototypes pointed
out, mainly in passing ints where pointers were expected and vice
versa.  The iserase() function was supposed to accept a char *, but
was defined as only accepting a char.  Fun stuff like that.

22 files changed:
cde/lib/tt/mini_isam/isam_impl.h
cde/lib/tt/mini_isam/isam_prototypes.h [new file with mode: 0644]
cde/lib/tt/mini_isam/isamaddindex.c
cde/lib/tt/mini_isam/isamopen.c
cde/lib/tt/mini_isam/isapplmr.c
cde/lib/tt/mini_isam/isapplmw.c
cde/lib/tt/mini_isam/isbtree.c
cde/lib/tt/mini_isam/isbuild.c
cde/lib/tt/mini_isam/iscntl.c
cde/lib/tt/mini_isam/isdatconv.c
cde/lib/tt/mini_isam/iserase.c
cde/lib/tt/mini_isam/iserror.c
cde/lib/tt/mini_isam/isfcb.c
cde/lib/tt/mini_isam/ismngfcb.c
cde/lib/tt/mini_isam/isopen.c
cde/lib/tt/mini_isam/ispageio.c
cde/lib/tt/mini_isam/isrename.c
cde/lib/tt/mini_isam/isrepair.c
cde/lib/tt/mini_isam/issignals.c
cde/lib/tt/mini_isam/issort.c
cde/lib/tt/mini_isam/issync.c
cde/lib/tt/mini_isam/isvarrec.c

index fbb6b735ec4da8a9c2c91716806021037d929392..8172077dafdd38de2afa239b90a71803c2b35337 100644 (file)
@@ -452,14 +452,6 @@ struct export_opts {
 };
 
 
-extern Fcb *_isfcb_create();
-extern Fcb *_isfcb_open();
-extern void _isfcb_remove();
-extern void _isfcb_close();
-extern void _isfcb_setreclength();
-extern void _isfcb_setprimkey();
-extern int _isfcb_cntlpg_w();
-
 
 #define DAT_SUFFIX     ".rec"
 #define IND_SUFFIX     ".ind"
@@ -474,77 +466,8 @@ extern int _isfcb_cntlpg_w();
 #define VL_RECDELETED  ((long ) -1L)
 #define VL_RECNOTAIL   ((long ) -2L)
 
-
-/* extern long lseek(); */
-
-extern char *_ismalloc(), *_isrealloc(), *_isallocstring();
-extern void _isfree(), _isfreestring();
-extern void _isfatal_error(), _setiserrno2(), _seterr_errcode();
-extern void _makedat_isfname();
-extern void _makeind_isfname();
-extern void _makevar_isfname();
-extern void _amseterrcode();
-
-extern void _isseekpg(), _isreadpg(), _iswritepg();
-
-extern Bufhdr *_isdisk_fix(), *_isdisk_refix();
-extern void _isdisk_commit(), _isdisk_sync(), _isdisk_inval(), 
-    _isdisk_commit1(), _isdisk_unfix();
-extern void _isdisk_rollback();
-extern void _cp_tofile(), _cp_fromfile();
-Blkno  _extend_file();
-
-extern void _isdln_base_insert(), _isdln_base_remove(), _isdln_base_append(), 
-    _isdln_base_makeempty();
-extern struct dlink *_isdln_base_prev(), *_isdln_base_next(), *_isdln_base_first();
-
-extern void _mngfcb_insert(), _mngfcb_delete();
-extern Fcb *_mngfcb_find();
-extern Bytearray *_mngfcb_victim();
-extern char *_getisfname();
-extern Bytearray _makeisfhandle();
-
-extern Bytearray _makeisfhandle();
-extern Fcb *_openfcb();
-
-extern Time _amtime_set(), _amtime_get();
-
-extern void _islock_closefile(), _islock_unlockfile();
-
-extern Keydesc2 *_isfcb_findkey(), *_isfcb_indfindkey();
-extern void stkey(), ldkey();
-
-extern Issort *_issort_create();
-extern char *_issort_read();
-extern void _issort_destroy(), _issort_insert(), _issort_sort(), 
-    _issort_rewind();
-
-extern void _iskeycmp_set();
-extern int _iskeycmp();
-
-extern char *_isbsearch();
-
-extern void _iskey_extract();
-extern Blkno _isindfreel_alloc();
-extern void _isindfreel_free();
-extern long _fl_getpos();
-
-extern Btree *_isbtree_create();
-extern void _isbtree_destroy(), _isbtree_search(), _isbtree_insert(),
-    _isbtree_remove();
-extern char *_isbtree_current(), *_isbtree_next();
-
-extern void _iskey_fillmin(), _iskey_fillmax();
-
-extern Bufhdr *_allockpage();
-
-extern void _del1key();
-extern int _add1key(), _change1key();
-extern void _delkeys();
-extern char *_ismap_getaddr();
-extern void _ismap_endop(), _ismap_unmapfcb();
-
-extern void _isam_entryhook(), _isam_exithook();
+/*------------ Prototype definitions ---------------------------------------*/
+#include "isam_prototypes.h"
 
 #define stshort(n,p) stint((n), (p))
 #define ldshort(p) ldint(p)
@@ -555,10 +478,6 @@ extern void _isam_entryhook(), _isam_exithook();
 #define stblkno(n,p) stlong((long)(n), (p))
 #define ldblkno(p) ((Blkno)ldlong(p))
 
-extern int _flrec_read(), _flrec_write(), _flrec_rewrite(), _flrec_delete(),
-    _flrec_wrrec();
-extern int _vlrec_read(), _vlrec_write(), _vlrec_rewrite(), _vlrec_delete(),
-    _vlrec_wrrec();
 
 /*------------ UNIX file formats ---------------------------------------------*/
 
diff --git a/cde/lib/tt/mini_isam/isam_prototypes.h b/cde/lib/tt/mini_isam/isam_prototypes.h
new file mode 100644 (file)
index 0000000..7e91e40
--- /dev/null
@@ -0,0 +1,343 @@
+/*
+ * CDE - Common Desktop Environment
+ *
+ * Copyright (c) 1993-2012, The Open Group. All rights reserved.
+ *
+ * These libraries and programs are free software; you can
+ * redistribute them and/or modify them under the terms of the GNU
+ * Lesser General Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * These libraries and programs are distributed in the hope that
+ * they will be useful, but WITHOUT ANY WARRANTY; without even the
+ * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU Lesser General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with these libraries and programs; if not, write
+ * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
+ * Floor, Boston, MA 02110-1301 USA
+ */
+
+/* JET: This code was generated using cproto, plus some fixes that
+ * having proper prototype definitions pointed out.
+ */
+
+/* isadd1key.c */
+int _add1key(Fcb *fcb, Keydesc2 *pkeydesc2, char *record, Recno recnum, char *newkey);
+
+/* isaddindex.c */
+int isaddindex(int isfd, struct keydesc *keydesc);
+
+/* isaddprimary.c */
+int isaddprimary(int isfd, struct keydesc *keydesc);
+
+/* isalloc.c */
+char *_ismalloc(unsigned int nbytes);
+char *_isrealloc(char *oldaddr, unsigned int nbytes);
+char *_isallocstring(char *str);
+void _isfreestring(char *str);
+
+/* isamaddindex.c */
+int _amaddindex(Bytearray *isfhandle, struct keydesc *keydesc, struct errcode *errcode);
+int _amaddprimary(Bytearray *isfhandle, struct keydesc *keydesc, struct errcode *errcode);
+int _create_index(Fcb *fcb, Keydesc2 *pkeydesc2);
+
+/* isamdelcurr.c */
+
+/* isamdelrec.c */
+int _amdelrec(Bytearray *isfhandle, Recno recnum, struct errcode *errcode);
+void _delkeys(Fcb *fcb, char *record, Recno recnum);
+
+/* isamerror.c */
+void _amseterrcode(struct errcode *errcode, int is_errno);
+
+/* isamhooks.c */
+void _isam_entryhook(void);
+void _isam_exithook(void);
+
+/* isamopen.c */
+int _amopen(char *isfname, enum openmode openmode, Bool *varflag, int *minlen, int *maxlen, Bytearray *isfhandle, Bytearray *curpos, struct errcode *errcode);
+Fcb *_openfcb(Bytearray *isfhandle, struct errcode *errcode);
+char *_getisfname(Bytearray *isfhandle);
+Bytearray _makeisfhandle(char *isfname);
+
+/* isamwrite.c */
+int _amwrite(Bytearray *isfhandle, char *record, int reclen, Bytearray *curpos, Recno *recnum, struct errcode *errcode);
+int _addkeys(Fcb *fcb, char *record, Recno recnum);
+
+/* isapplmr.c */
+int _isapplmr(int isfd, char *buffer);
+
+/* isapplmw.c */
+int _isapplmw(int isfd, char *magicstring);
+
+/* isbsearch.c */
+char *_isbsearch(char *key, char *table, int nelems, int keylen,
+                 int (*cmpf)(char *, char *));
+
+/* isbtree2.c */
+void _isbtree_insert(Btree *btree, char *key);
+void leftkey_up(Btree *btree, int level);
+
+/* isbtree3.c */
+void _isbtree_remove(Btree *btree);
+
+/* isbtree.c */
+Btree *_isbtree_create(Fcb *fcb, Keydesc2 *pkeydesc2);
+void _isbtree_destroy(Btree *btree);
+void _isbtree_search(Btree *btree, char *key);
+char *_isbtree_current(Btree *btree);
+char *_isbtree_next(Btree *btree);
+
+/* isbuild.c */
+int isbuild(char *isfname, int recordlength, struct keydesc *primkey, int mode);
+
+/* isbytearray.c */
+Bytearray _bytearr_getempty(void);
+Bytearray _bytearr_new(u_short len, char *data);
+Bytearray _bytearr_dup(Bytearray *old);
+void _bytearr_free(Bytearray *barray);
+int _bytearr_cmp(Bytearray *l, Bytearray *r);
+
+/* ischange1key.c */
+int _change1key(Fcb *fcb, Keydesc2 *pkeydesc2, char *record, char *oldrecord, Recno recnum, char *newkey);
+
+/* isclose.c */
+int isclose(int isfd);
+
+/* iscntl.c */
+int iscntl(int isfd, int func, ...);
+
+/* iscurpos.c */
+int isgetcurpos(int isfd, int *len, char **buf);
+int issetcurpos(int isfd, char *buf);
+
+/* isdatconv.c */
+long ldlong(char *p);
+int stlong(long val, char *p);
+short ldint(char *p);
+u_short ldunshort(char *p);
+int stint(short val, char *p);
+int ldchar(char *src, int len, char *dst);
+int stchar(char *src, char *dst, int len);
+int ldchar2(char *src, int len, char *dst);
+int stchar2(char *src, char *dst, int len);
+float ldfloat(char *p);
+int stfloat(float f, char *p);
+double lddbl(char *p);
+int stdbl(double val, char *p);
+
+/* isdel1key.c */
+void _del1key(Fcb *fcb, Keydesc2 *pkeydesc2, char *record, Recno recnum);
+
+/* isdelcurr.c */
+int isdelcurr(int isfd);
+
+/* isdelrec.c */
+int isdelrec(int isfd, long recnum);
+
+/* isdiskbufs2.c */
+Bufhdr *_isdisk_fix(Fcb *fcb, int unixfd, Blkno blkno, int mode);
+void _isdisk_unfix(Bufhdr *p);
+void _isdisk_commit1(Bufhdr *p);
+void _isdisk_commit(void);
+void _isdisk_rollback(void);
+Bufhdr *_isdisk_refix(Bufhdr *p, int newmode);
+void _isdisk_sync(void);
+void _isdisk_inval(void);
+
+/* isdlink.c */
+void _isdln_base_insert(char *base, struct dlink *l, struct dlink *e);
+void _isdln_base_append(char *base, struct dlink *l, struct dlink *e);
+void _isdln_base_remove(char *base, struct dlink *e);
+struct dlink *_isdln_base_first(char *base, struct dlink *l);
+struct dlink *_isdln_base_next(char *base, struct dlink *l);
+struct dlink *_isdln_base_prev(char *base, struct dlink *l);
+void _isdln_base_makeempty(char *base, struct dlink *l);
+int _isdln_base_isempty(char *base, struct dlink *l);
+
+/* iserase.c */
+int iserase(char *isfname);
+
+/* iserror.c */
+void _isfatal_error(char *msg);
+void _isfatal_error1(char *msg);
+void _isam_warning(char *msg);
+int _isfatal_error_set_func(int (*func)(void));
+void _setiserrno2(int error, int is1, int is2);
+void _seterr_errcode(struct errcode *errcode);
+
+/* isfab.c */
+Fab *_fab_new(char *isfname, enum openmode openmode, Bool varlen, int minreclen, int maxreclen);
+void _fab_destroy(Fab *fab);
+
+/* isfcb.c */
+Fcb *_isfcb_create(char *isfname, int crdat, int crind, int crvar, int owner, int group, int u_mask, struct errcode *errcode);
+void _isfcb_setreclength(Fcb *fcb, Bool varflag, int minreclen, int maxreclen);
+Fcb *_isfcb_open(char *isfname, struct errcode *errcode);
+int _isfcb_nfds(Fcb *fcb);
+void _isfcb_remove(Fcb *fcb);
+void _isfcb_close(Fcb *fcb);
+int _isfcb_cntlpg_w(Fcb *fcb);
+int _isfcb_cntlpg_w2(Fcb *fcb);
+int _isfcb_cntlpg_r(Fcb *fcb);
+int _isfcb_cntlpg_r2(Fcb *fcb);
+int _check_isam_magic(Fcb *fcb);
+int _open2_indfile(Fcb *fcb);
+
+/* isfcbindex.c */
+int _isfcb_primkeyadd(Fcb *fcb, Keydesc2 *keydesc2);
+int _isfcb_primkeydel(Fcb *fcb);
+int _isfcb_altkeyadd(Fcb *fcb, Keydesc2 *keydesc2);
+Keydesc2 *_isfcb_findkey(Fcb *fcb, Keydesc2 *keydesc2);
+int _isfcb_altkeydel(Fcb *fcb, Keydesc2 *keydesc2);
+Keydesc2 *_isfcb_indfindkey(Fcb *fcb, int keyid);
+
+/* isfcbwatchfd.c */
+int _watchfd_incr(int n);
+int _watchfd_decr(int n);
+int _watchfd_check(void);
+int _watchfd_max_set(int n);
+int _watchfd_max_get(void);
+
+/* isfd.c */
+Isfd _isfd_insert(Fab *fab);
+Fab *_isfd_find(Isfd isfd);
+void _isfd_delete(Isfd isfd);
+
+/* isfileio.c */
+void _cp_tofile(Fcb *fcb, int unixfd, char *data, long pos, int len);
+void _cp_fromfile(Fcb *fcb, int unixfd, char *data, long pos, int len);
+Blkno _extend_file(Fcb *fcb, int unixfd, Blkno oldsize);
+
+/* isfixrec.c */
+int _flrec_write(Fcb *fcb, char *record, Recno *recnum, int reclen);
+int _flrec_read(Fcb *fcb, char *record, Recno recnum, int *reclen);
+long _fl_getpos(Fcb *fcb, Recno recnum);
+int _flrec_rewrite(Fcb *fcb, char *record, Recno recnum, int reclen);
+int _flrec_delete(Fcb *fcb, Recno recnum);
+int _flrec_wrrec(Fcb *fcb, char *record, Recno recnum, int reclen);
+
+/* isfname.c */
+void _makedat_isfname(char *isfname);
+void _makeind_isfname(char *isfname);
+void _makevar_isfname(char *isfname);
+void _removelast(char *path);
+char *_lastelement(char *path);
+
+/* isgarbage.c */
+int isgarbage(char *isfname);
+
+/* isindexconv.c */
+void stkey(Keydesc2 *pkeydesc2, char *p);
+void ldkey(struct keydesc2 *pkeydesc2, char *p);
+
+/* isindexinfo.c */
+int isindexinfo(int isfd, struct keydesc *buffer, int number);
+
+/* isindfreel.c */
+Blkno _isindfreel_alloc(Fcb *fcb);
+void _isindfreel_free(Fcb *fcb, Blkno blkno);
+
+/* iskeyaux.c */
+void _iskey_extract(Keydesc2 *pkeydesc2, char *recp, char *keyp);
+Bufhdr *_allockpage(Fcb *fcb, int capac, int level, Blkno *blkno);
+
+/* iskeycalc.c */
+int getkeysperleaf(int keylen);
+int getkeyspernode(int keylen);
+int le_odd(int n);
+
+/* iskeycmp.c */
+void _iskeycmp_set(Keydesc2 *pkeydesc2, int nparts);
+int _iskeycmp(char *lkey, char *rkey);
+
+/* iskeyconv.c */
+void _iskey_itox(struct keydesc2 *pikdesc, struct keydesc *pxkdesc);
+void _iskey_xtoi(struct keydesc2 *pikdesc, struct keydesc *pxkdesc);
+
+/* iskeyvalid.c */
+int _validate_keydesc(struct keydesc *keydesc, int minreclen);
+
+/* isminmax.c */
+void _iskey_fillmax(struct keydesc2 *pkeydesc2, char *keybuf);
+void _iskey_fillmin(struct keydesc2 *pkeydesc2, char *keybuf);
+
+/* ismngfcb.c */
+void _mngfcb_insert(Fcb *fcb, Bytearray *isfhandle);
+Fcb *_mngfcb_find(Bytearray *isfhandle);
+void _mngfcb_delete(Bytearray *isfhandle);
+Bytearray *_mngfcb_victim(void);
+
+/* isopen.c */
+int isopen(char *isfname, int mode);
+
+/* ispageio.c */
+void _isseekpg(int fd, Blkno pgno);
+void _isreadpg(int fd, char *buf);
+void _iswritepg(int fd, char *buf);
+
+/* isperm.c */
+enum openmode _getopenmode(int mode);
+enum readmode _getreadmode(int mode);
+
+/* isread.c */
+int isread(int isfd, char *record, int mode);
+
+/* isrename.c */
+int isrename(char *oldname, char *newname);
+
+/* isrepair.c */
+int isrepair(char *isfname, int verbose);
+
+/* isrewcurr.c */
+int isrewcurr(int isfd, char *record);
+
+/* isrewrec.c */
+int isrewrec(int isfd, long recnum, char *record);
+
+/* issignals.c */
+int _issignals_cntl(int opt);
+void _issignals_mask(void);
+void _issignals_unmask(void);
+
+/* issort.c */
+Issort *_issort_create(int reclen, int nrecs, int (*compfunc)(char *, char *));
+void _issort_destroy(Issort *srt);
+void _issort_insert(Issort *srt, char *record);
+void _issort_sort(Issort *srt);
+void _issort_rewind(Issort *srt);
+char *_issort_read(Issort *srt);
+
+/* isstart.c */
+int isstart(int isfd, struct keydesc *keydesc, int length, char *record, int mode);
+
+/* issync.c */
+int issync(void);
+int isfsync(int isfd);
+int _issync(void);
+int _isfsync(int isfd);
+
+/* isvarrec.c */
+int _vlrec_write(Fcb *fcb, char *record, Recno *recnum, int reclen);
+int _vlrec_read(Fcb *fcb, char *record, Recno recnum, int *reclen);
+long _vl_getpos(Fcb *fcb, Recno recnum);
+int _vlrec_rewrite(Fcb *fcb, char *record, Recno recnum, int reclen);
+int _vlrec_delete(Fcb *fcb, Recno recnum);
+int _vlrec_wrrec(Fcb *fcb, char *record, Recno recnum, int reclen);
+long _istail_insert(Fcb *fcb, char *tailp, int taillen);
+int _istail_modify(Fcb *fcb, long offset, char *tailp, int taillen);
+
+/* isvars.c */
+
+/* isversion.c */
+
+/* iswrite.c */
+int iswrite(int isfd, char *record);
+
+/* iswrrec.c */
+int iswrrec(int isfd, long recnum, char *record);
+
index 35480b75e7d8f2d20852548c107af82dea12455d..f9adb67571d48f83b4df29cf47bdf350235da89a 100644 (file)
@@ -431,7 +431,7 @@ _attach_dups_serial(Issort *srt, Keydesc2 *pkeydesc2)
 
     _issort_rewind(srt);
 
-    while (curkey = _issort_read(srt)) {
+    while ((curkey = _issort_read(srt))) {
        if (lastkey && memcmp(lastkey + RECNOSIZE + DUPIDSIZE,
                              curkey + RECNOSIZE + DUPIDSIZE,
                               netkeylength) == 0)
@@ -617,7 +617,7 @@ Static int _duplicate_exist(Issort *srt, int keylength)
 
     _issort_rewind(srt);
 
-    while (curkey = _issort_read(srt)) {
+    while ((curkey = _issort_read(srt))) {
            if (lastkey && memcmp(lastkey + RECNOSIZE, curkey + RECNOSIZE,
                                  netkeylength) == 0) 
                    return 1;                /* Duplicate key found */
index 3fec9131b96c650d1c2c7870bcb8488e47c64789..680c7dd53deb3533dfc7beca33e104fe64a5cd60 100644 (file)
@@ -69,7 +69,6 @@ _amopen(char *isfname, enum openmode openmode, Bool *varflag,
     Fcb                        *fcb;
     Bytearray          isfhandle0;
     Crp                        *crp;
-    int                        err;
 
 
     _isam_entryhook();
index 0fdeba080831866b63924b741976cb1289c656c4..1c210b99ba68a2085c18c1d126dbd5a31645127f 100644 (file)
@@ -38,6 +38,7 @@
 
 
 #include "isam_impl.h"
+#include <unistd.h>
 #include <sys/file.h>
 #include <sys/time.h>
 #include "isam_impl.h"
index b184b65b2aa73c17a07d907eda6946ad6341c48b..87f356ba7a0d2ca591849a1a045f0f85530e903a 100644 (file)
@@ -38,6 +38,7 @@
 
 
 #include "isam_impl.h"
+#include <unistd.h>
 #include <sys/file.h>
 #include <sys/time.h>
 
index 4547adf1275e6b5a91b2861658d3a3e85e6ada1d..7839ce66b5bade3907006f57938fad21dc2317fa 100644 (file)
  *
  * Description:
  *     B-tree operations: SEARCH
- *     
+ *
  */
 #include <stdlib.h>
 
 #include "isam_impl.h"
 
-extern int _iskeycmp();
 
-/* 
- * _isbtree_create() 
+/*
+ * _isbtree_create()
  *
  * Create a B-tree path object that will used in subsequent operations.
  */
@@ -53,28 +52,28 @@ Btree *
     _isbtree_create(Fcb *fcb, Keydesc2 *pkeydesc2)
 {
     Btree      *p;
-    
+
     p = (Btree *) _ismalloc(sizeof(*p));
     memset((char *)p, 0, sizeof(*p));
-    
+
     p->fcb = fcb;
-    p->keydesc2 = pkeydesc2;   
-    
+    p->keydesc2 = pkeydesc2;
+
     return (p);
 }
 
 
-/* 
- * _isbtr_destroy() 
+/*
+ * _isbtr_destroy()
  *
- * Destroy B-tree path object 
+ * Destroy B-tree path object
  */
 
 void
 _isbtree_destroy(Btree *btree)
 {
     int        i;
-    
+
     for (i = 0; i < btree->depth;i++) {
        _isdisk_unfix(btree->bufhdr[i]);
     }
@@ -82,8 +81,8 @@ _isbtree_destroy(Btree *btree)
 }
 
 
-/* 
- * _isbtree_search() 
+/*
+ * _isbtree_search()
  *
  * Descend the B-tree, position pointer on or before the matched key.
  */
@@ -102,61 +101,61 @@ _isbtree_search( Btree *btree, char *key)
     char               *key2;               /* Equal or next lower key */
     int                        curpos;              /* index of key2 in key page */
     Blkno              blkno;
-    
+
     /* Set comparison function. */
     _iskeycmp_set(pkeydesc2, pkeydesc2->k2_nparts + 1);        /* +1 for recno field */
-    
+
     index = 0;
     blkno = rootblkno;
     do {
-       btree->bufhdr[index] = 
+       btree->bufhdr[index] =
            _isdisk_fix(btree->fcb,  btree->fcb->indfd, blkno, ISFIXREAD);
        p = btree->bufhdr[index]->isb_buffer; /* pointer to buffer */
-       
+
        /* Load some fields from the key page. */
        nkeys = ldshort(p+BT_NKEYS_OFF);     /* Number of keys in the page */
        elevation = ldshort(p+BT_LEVEL_OFF); /* Level of the page */
-       
+
        /* Binary search in the key page to find equal or next lowere key. */
        key2 = _isbsearch(key, p+BT_KEYS_OFF, nkeys, keylength, _iskeycmp);
-       
+
        curpos = (key2) ? ((key2 - p - BT_NKEYS_OFF) / keylength) : 0;
-       
-       btree->curpos[index] = 
+
+       btree->curpos[index] =
            (key2 == (char *)0 && elevation==0)? -1 : curpos;
-       
-       if (elevation > 0) 
+
+       if (elevation > 0)
            blkno = ldblkno(p + ISPAGESIZE - (curpos + 1) * BLKNOSIZE);
-       
+
        index++;
     } while (elevation > 0);
-    
+
     btree->depth = index;
 }
 
-/* 
- * _isbtree_current() 
+/*
+ * _isbtree_current()
  *
- * Get pointer to the current key 
+ * Get pointer to the current key
  */
 
 char *
 _isbtree_current(Btree *btree)
 {
     int                        curpos;
-    
+
     assert(btree->depth > 0);
     if ((curpos = btree->curpos[btree->depth - 1]) == -1)
        return (NULL);
     else
-       return (btree->bufhdr[btree->depth - 1]->isb_buffer 
+       return (btree->bufhdr[btree->depth - 1]->isb_buffer
                + BT_KEYS_OFF + curpos * btree->keydesc2->k2_len);
 }
 
-/* 
+/*
  * _isbtree_next()
  *
- * Get pointer to the next key 
+ * Get pointer to the next key
  */
 
 char *
@@ -167,41 +166,40 @@ _isbtree_next(Btree *btree)
     char       *p;
     int        level;
     Blkno              blkno;
-    
+
     assert(depth > 0);
-    
-    /* 
+
+    /*
      * Move up along the path, find first block where we can move to the right.
      */
     for (level = depth - 1; level >= 0; level--) {
        p = btree->bufhdr[level]->isb_buffer;
-       
+
        if (btree->curpos[level] < ldshort(p + BT_NKEYS_OFF) - 1)
            break;
     }
-    
+
     if (level < 0) {
        /* Logical end of the index file. No next record. */
        return (NULL);
     }
-    
+
     curpos = ++(btree->curpos[level]);
-    
+
     while (++level < depth) {
-       
+
        /* Get block number to block in next lower level. */
        if (level > 0)
            blkno = ldblkno(p + ISPAGESIZE - (curpos + 1) * BLKNOSIZE);
-       
+
        /* Unfix page in this level, fetch its right brother. */
        _isdisk_unfix(btree->bufhdr[level]);
-       btree->bufhdr[level] = 
+       btree->bufhdr[level] =
            _isdisk_fix(btree->fcb, btree->fcb->indfd, blkno, ISFIXREAD);
        p = btree->bufhdr[level]->isb_buffer;
-       
+
        curpos = btree->curpos[level] = 0;
     }
-    
+
     return (p + BT_KEYS_OFF + curpos * btree->keydesc2->k2_len);
 }
-
index bdf3b51accd414645ff7008899534ec800382e34..875468a71deaab37c541f34116e7ead7c10c84fc 100644 (file)
 
 
 #include "isam_impl.h"
+#include <unistd.h>
 #include <netdb.h>
 #include <sys/file.h>
 #include <sys/time.h>
+#include <sys/types.h>
+#include <sys/stat.h>
 
-extern char _isam_version[];
-static char *_version_ = _isam_version;
-
-static int _ambuild();
+static int
+_ambuild(char *isfname, enum openmode openmode, Bool varflag,
+         int minlen, int maxlen, struct keydesc *primkey,
+         int owner, int group, int umask,
+         Bytearray *isfhandle, Bytearray *curpos,
+         struct errcode *errcode);
 
 /*
  * isfd = isbuild(isfname, recordlength, primkey, mode)
index 9258987cbffb78dfcee1511c42eec812121f24af..f243e534562aaa7be194ccc2beb97d026bc937e9 100644 (file)
@@ -87,7 +87,6 @@ iscntl(isfd, func, va_alist)
     va_dcl
 #endif
 {
-    extern             int ( *_isfatal_error_set_func)();
     va_list            pvar;
     int                        ret;
 
index 25b472bb066fca7bfbcc0783eae722e4aafea209..44d311148ae6e632532f380e3b7359e7e36e7355 100644 (file)
@@ -33,7 +33,7 @@
  * isdatconv.c
  *
  * Description:
- *      Conversion function between machine dependent and the X/OPEN 
+ *      Conversion function between machine dependent and the X/OPEN
  *     machine independent formats.
  *
  * Some pieces of code may not be very "structured", but they result in
@@ -49,7 +49,7 @@
 
 /* ldlong() - Load a long integer from a potentially  unaligned address */
 
-long 
+long
 ldlong(char *p)
 {
     int i;
@@ -60,9 +60,9 @@ ldlong(char *p)
 #endif
 
     val = 0;
-    for (i=0; i<LONGSIZE ; i++)  
+    for (i=0; i<LONGSIZE ; i++)
         val = (val << 8) + *((unsigned char *)p++);
-    
+
     return ((long)val);
 }
 
@@ -154,11 +154,11 @@ stchar(char *src, char *dst, int len)
 
     /* Copy up to NULL character. */
     do {
-       if ((c = *src++) == '\0') 
+       if ((c = *src++) == '\0')
            break;
        *dst++ = c;
     } while (--len > 0);
-    
+
     /* Pad with blanks. */
     if (len > 0)
        (void) memset((void *) dst, BLANK, len);
@@ -166,36 +166,35 @@ stchar(char *src, char *dst, int len)
 }
 
 /* ldchar2() - Load character field (C style, NULL padded) */
+
 int
 ldchar2(char *src, int len, char *dst)
 {
-    char       *p;
+
     if (len <= 0)
         return 0;
+
     /* Load the entire string. */
     memcpy((void *) dst, (const void *) src, len);
     *(dst + len) = '\0';
     return 0;
 }
+
 int
 stchar2(char *src, char *dst, int len)
 {
     char       c;
+
     if (len <= 0)
         return 0;
+
     /* Copy up to a NULL character. */
     do {
         if ((c = *src++) == '\0')
             break;
         *dst++ = c;
     } while (--len > 0);
-    
+
     /* Pad with NULLs. */
     if (len > 0)
         memset(dst, 0, len);
@@ -285,7 +284,7 @@ lddbl(char *p)
 
     q  =  x.sval;
     p +=  DOUBLESIZE;
-   
+
     for (i=0; i<DOUBLESIZE; i++)
        *q++ = *--p;
     return (x.rval);
@@ -307,7 +306,7 @@ stdbl(double val, char *p)
     x.rval = val;
     q  =  x.sval;
     p +=  DOUBLESIZE;
-   
+
     for (i=0; i<DOUBLESIZE; i++)
        *--p = *q++ ;
 
@@ -316,5 +315,3 @@ stdbl(double val, char *p)
 
 
 #endif    /* sparc */
-
-
index 14bff7c6bce3c56f8ca7a1ef7223a8c86a47f7b9..ce13c2a1783ee0d089668c23ef4d42fa4ec7f820 100644 (file)
@@ -38,6 +38,7 @@
 
 
 #include "isam_impl.h"
+#include <unistd.h>
 #include <sys/time.h>
 
 static void _unlink_datfile(), _unlink_indfile(), _unlink_varfile();
@@ -62,10 +63,10 @@ static int _amerase();
  */
 
 int 
-iserase(char isfname)
+iserase(char *isfname)
 {
-    Isfd               isfd, isfd_nfs;
-    Fab                        *fab, *fab_nfs;
+    Isfd               isfd;
+    Fab                        *fab;
 
     /*
      * Open the file
index 1e5c9ef5bc327da79771f5598b5315b0b47594e0..e739a1f0d2683287fa445a058088a5c9f3a80e4d 100644 (file)
@@ -38,6 +38,7 @@
  */
 
 #include "isam_impl.h"
+#include <unistd.h>
 #include <errno.h>
 #include <stdlib.h>
 #include <syslog.h>
@@ -81,8 +82,6 @@ _isfatal_error(char *msg)
 void 
 _isfatal_error1(char *msg)
 {
-  extern int   _is_rpcnetisamd; /* is 1 if this is rpc.netisamd */
-  extern int   _is_netisamlockd; /* is 1 if this is netisamlockd */
   int          logerr;
 
   if (fatal_error_user_handler) {
@@ -113,14 +112,17 @@ _isam_warning(char *msg)
 }
 
 /* Set user specified fatal_error handler */
-int  (*_isfatal_error_set_func(int(*func)()))()
+int  _isfatal_error_set_func(int(*func)())
 {
+#if 0
     int                (*oldfunc)();
 
     oldfunc = fatal_error_user_handler;
+#endif
+
     fatal_error_user_handler = func;
 
-    return (oldfunc);
+    return (0);
 }
 
 /*
index e88ab48f24ec4cd02e2012e83bd424f02a6beab1..fc63373773df0c278bb8405c0ee0d463519bad75 100644 (file)
@@ -37,6 +37,7 @@
  *     
  *
  */
+#include <unistd.h>
 #include <stdlib.h>
 #include "isam_impl.h"
 #include <sys/stat.h>
@@ -841,10 +842,10 @@ _check_isam_magic(Fcb *fcb)
     char               magicbuffer[CP_MAGIC_LEN];
 
     (void)lseek(fcb->datfd, 0L, 0);
-    if (read(fcb->datfd, magicbuffer, CP_MAGIC_LEN) < CP_MAGIC_LEN ||
+    if ((read(fcb->datfd, magicbuffer, CP_MAGIC_LEN) < CP_MAGIC_LEN) ||
        /* The following test for compatibilty with `SunISAM 1.0 Beta files. */
-       strncmp(magicbuffer, "SunISAM", strlen(ISMAGIC)) != 0 &&
-       strncmp(magicbuffer, ISMAGIC, strlen(ISMAGIC)) != 0) {
+       ((strncmp(magicbuffer, "SunISAM", strlen(ISMAGIC)) != 0) &&
+         (strncmp(magicbuffer, ISMAGIC, strlen(ISMAGIC))) != 0)) {
        return ISERROR;
     }
     else
index 3cdd0a8dcbb582a14626c69ac179870ee40b9914..23550029affa0a05172fcf943da097d815b2328a 100644 (file)
@@ -62,7 +62,7 @@ struct hashtable {
 
 static int _hashisfhandle();
 
-static mrused_last = 0;                             /* stamp generator */
+static int mrused_last = 0;                         /* stamp generator */
 
 
 /*
@@ -219,7 +219,7 @@ _hashisfhandle(Bytearray *isfhandle)
 
     while (len-- > 0) {
        h = (h << 4) + (*p++);
-       if (g = h&0xf0000000) {
+       if ((g = (h & 0xf0000000))) {
            h = h ^ (g >> 24);
            h = h ^ g;
        }
index b989a6231fdb9c7f64672b79859cb6c36b9ba2d4..44b1a3d10aa126eeff995ef8fd26254191731588 100644 (file)
@@ -41,9 +41,6 @@
 #include <sys/file.h>
 #include <sys/time.h>
 
-extern char _isam_version[];
-static char *_version_ = _isam_version;
-
 static int _am_open();
 /*
  * isfd = isopen(isfname, mode)
index 3b4d61cbd32b988c1646bd05723f37cadcecfe54..774ff235411a14322fb4b31e134a724879e66002 100644 (file)
@@ -39,6 +39,7 @@
  */
 
 #include "isam_impl.h"
+#include <unistd.h>
 
 /*
  * _isseekpg(fd, pgno)
index 6e27055084181e9706b7d23f9dc113582a961aa4..81436611155b4b2ddaff39357790481e97aa96ba 100644 (file)
@@ -38,6 +38,7 @@
 
 
 #include "isam_impl.h"
+#include <unistd.h>
 #include <sys/time.h>
 
 void _removelast();
index 65ed171b3a097c5f19f1cabd6a0f5947d9e77f1a..d7388eda07ea3d7fb539080bad0b182e5a9e06b7 100644 (file)
@@ -38,6 +38,7 @@
 
 
 #include "isam_impl.h"
+#include <unistd.h>
 #include <stdlib.h>
 #include <signal.h>
 #include <stdio.h>
@@ -66,10 +67,10 @@ Static      char *rp_readrecord_v(), *rp_readrecord_f();
 Static int printkey(int, struct keydesc *, int (*)(const char *, ...));
 Static void cmd_error(const char *, int (*)(const char *, ...));
 Static int typeletter();
-Static rp_readcntlpg();
+Static int rp_readcntlpg();
 static int  isnoprintf(const char *, ...);
 
-isrepair(char *isfname, int verbose)
+int isrepair(char *isfname, int verbose)
 {
   extern      char *rp_readrecord_v(), *rp_readrecord_f();
   char       cntlpg[ISCNTLSIZE];
@@ -342,7 +343,7 @@ isrepair(char *isfname, int verbose)
 static char    recordbuffer[ISMAXRECLEN + LONGSIZE];
 
 /* rp_readcntlpg() - Read the control page */
-Static 
+Static int
 rp_readcntlpg(int datfd, char *cntlpg)
 {
     if (read (datfd, cntlpg, ISCNTLSIZE) != ISCNTLSIZE)
index e545d10b21d8a021377cd77db198eaa698ac4b86..4d470903f96406fdfdda77e9753dcc3a695cbcb3 100644 (file)
@@ -63,7 +63,7 @@ static sigset_t allsignals;
 
 
 /* opt, 1 will enable masking, 0 will disable masking */
-_issignals_cntl(int opt)
+int _issignals_cntl(int opt)
 {
     int                oldmask = do_mask;
 
index 2716bd87eb4a05f5b37ded0a7ba636f4f28baed6..f5a3e43d9943175e1b015c061da72c095d0b64ce 100644 (file)
@@ -49,7 +49,7 @@ extern char *_isunix_malloc();
  */
 
 Issort *
-_issort_create(int reclen, int nrecs, int (*compfunc)())
+_issort_create(int reclen, int nrecs, int (*compfunc)(char *, char *))
 {      
     Issort     *p;
 
@@ -60,7 +60,7 @@ _issort_create(int reclen, int nrecs, int (*compfunc)())
     p->ist_allocrecs = nrecs;               /* Maximum number of records */
                                             /* that can inserted */
     p->ist_nrecs = 0;                       /* Current number of records */
-    p->ist_currec;                          /* Current position */
+    p->ist_currec = 0;                      /* Current position */
     p->ist_compf = compfunc;                /* Comparison function */
 
     p->ist_array = _ismalloc((unsigned)(reclen * nrecs)); /* Allocate array */
index 2f4c617c76e48cd8e03419196b47ff7fdf40a19a..f1c1b6937f3b2c272703fcbacf2048032d08e87e 100644 (file)
@@ -42,6 +42,7 @@
  */
 
 #include "isam_impl.h"
+#include <unistd.h>
 #include <sys/file.h>
 #include <sys/time.h>
 
index 83febb35e9789fe0679de38d08fa3e62cbd7b2ad..68878a0b897a2fc9ea3d39f1b1cf96c26d962aa5 100644 (file)
@@ -44,7 +44,7 @@ int  _vl_deleted();                        /* 0/1 returns 1 if record is deleted */
 static void remove_from_chain2();           /* used by _vlrec_wrrec() */
 long _istail_insert();
 static void _istail_delete();
-static _istail_read();
+static int _istail_read();
 
 /*
  * _vlrec_write(fcb, record, recnum, reclen)
@@ -501,7 +501,7 @@ Static void _istail_delete(Fcb *fcb, long offset)
 
 /* Read tail from .var file */
 
-Static _istail_read(Fcb *fcb, long offset, char *buffer)
+Static int _istail_read(Fcb *fcb, long offset, char *buffer)
 {
     char               frameheadbuf [2 * SHORTSIZE];
     int                        taillen;