X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;ds=sidebyside;f=fsck.c;h=f4f1071149e783519f6f0fc6c7acfcf4dcdd0b30;hb=1297f561259ea010d295aee88c8c6864e726d5d2;hp=00f14f320597f3dc324041f57ae9cb4c3f044a61;hpb=2dba3a38dcfe721842404f01e9b2adb59c302604;p=osl.git diff --git a/fsck.c b/fsck.c index 00f14f3..f4f1071 100644 --- a/fsck.c +++ b/fsck.c @@ -167,7 +167,7 @@ __must_check __malloc static void *fsck_calloc(size_t size) } /** - * Paraslash's version of strdup(). + * Save version of strdup(). * * \param s The string to be duplicated. * @@ -553,10 +553,10 @@ static int prune_mapped_column(struct osl_table *t, uint32_t col_num, int fd) ret = get_mapped_object(t, col_num, i, &obj); if (ret < 0) return ret; - ret = _write_all(fd, (char *)(obj.data) - 1, obj.size + 1); + ret = _write_all(fd, (char *)(obj.data), obj.size); if (ret < 0) return ret; - written += obj.size + 1; + written += obj.size; ret = get_row_index(t, i, &index_entry); if (ret < 0) return ret; @@ -577,7 +577,8 @@ static int prune_objects(struct osl_table *t, uint32_t *lost_bytes) NOTICE_LOG("removing unreferenced objects from data files\n"); /* first make a copy of the index */ - ret = osl_open(old_idx_filename, O_WRONLY | O_CREAT | O_EXCL, 0644); + DEBUG_LOG("opening %s\n", old_idx_filename); + ret = osl_open(old_idx_filename, O_WRONLY | O_CREAT | O_TRUNC, 0644); if (ret < 0) goto out_free; fd = ret; @@ -1169,7 +1170,8 @@ static int check_table(char *db_dir, char *table_name) ret = dump_table(conf.dump_dir_arg, &desc); out: if (ret < 0) - ERROR_LOG("failed to check table %s\n", table_name); + ERROR_LOG("failed to check table %s: %s\n", table_name, + fsck_strerror(-ret)); else NOTICE_LOG("successfully checked table %s\n", table_name); return ret;