if ((dbh = (dbhead_t *)calloc(1, sizeof(dbhead_t))) == NULL)
return NULL;
- if (lseek(fd, 0, 0) < 0)
+ if (lseek(fd, 0, 0) < 0) {
+ free(dbh);
return NULL;
- if ((ret = read(fd, &dbhead, sizeof(dbhead))) < 0)
+ }
+ if ((ret = read(fd, &dbhead, sizeof(dbhead))) <= 0) {
+ free(dbh);
return NULL;
+ }
/* build in core info */
dbh->db_fd = fd;
if (gf_retval < 0) {
free_dbf_head(dbh);
+ free(tdbf);
return NULL;
}
if (gf_retval != 2 ) {
free(cur_f->db_format);
}
}
-
+
free(dbf);
free(dbh);
}
if (lseek(fd, 0, 0) < 0)
return -1;
- if ((ret = write(fd, &dbhead, sizeof(dbhead))) < 0)
+ if ((ret = write(fd, &dbhead, sizeof(dbhead))) <= 0)
return -1;
return ret;
}
struct dbf_dfield dbfield;
int ret;
- if ((ret = read(dbh->db_fd, &dbfield, sizeof(dbfield))) < 0) {
+ if ((ret = read(dbh->db_fd, &dbfield, sizeof(dbfield))) <= 0) {
return ret;
}
}
/* now write it out to disk */
- if ((ret = write(dbh->db_fd, &dbfield, sizeof(dbfield))) < 0) {
+ if ((ret = write(dbh->db_fd, &dbfield, sizeof(dbfield))) <= 0) {
return ret;
}
return 1;
cp = dp;
if ((fd = VCWD_OPEN(cp, o_flags|O_BINARY)) < 0) {
- cp = (char *)malloc(MAXPATHLEN); /* So where does this get free()'d? -RL */
- strncpy(cp, dp, MAXPATHLEN-5); strcat(cp, ".dbf");
- if ((fd = VCWD_OPEN(cp, o_flags)) < 0) {
- free(cp);
- perror("open");
- return NULL;
- }
+ return NULL;
}
if ((dbh = get_dbf_head(fd)) == NULL) {
return NULL;
}
- dbh->db_name = cp;
+
dbh->db_cur_rec = 0;
-
return dbh;
}
--- /dev/null
+--TEST--
+dbase_open() tests
+--SKIPIF--
+<?php if (!extension_loaded("dbase")) print "skip"; ?>
+--FILE--
+<?php
+
+$file = dirname(__FILE__)."/002.dbf";
+@unlink($file);
+
+$fp = fopen($file, "w");
+fclose($fp);
+
+var_dump(dbase_open($file, -1));
+var_dump(dbase_open($file, 1000));
+var_dump(dbase_open($file, 0));
+var_dump(dbase_open($file."nonex", 0));
+var_dump(dbase_open("", 0));
+
+@unlink($file);
+
+$def = array(
+ array("date", "D"),
+ array("name", "C", 50),
+ array("age", "N", 3, 0),
+ array("email", "C", 128),
+ array("ismember", "L")
+);
+
+var_dump(dbase_create($file, $def));
+var_dump(dbase_open($file, 0));
+
+@unlink($file);
+
+echo "Done\n";
+?>
+--EXPECTF--
+Warning: dbase_open(): unable to open database %s in %s on line %d
+bool(false)
+
+Warning: dbase_open(): unable to open database %s in %s on line %d
+bool(false)
+
+Warning: dbase_open(): unable to open database %s in %s on line %d
+bool(false)
+
+Warning: dbase_open(): unable to open database %s in %s on line %d
+bool(false)
+
+Warning: dbase_open(): unable to open database in %s on line %d
+bool(false)
+int(%d)
+int(%d)
+Done