X-Git-Url: http://git.tuebingen.mpg.de/?p=osl.git;a=blobdiff_plain;f=osl.c;h=eb1d24f8828676adaac023b4c458a37a1f485c2a;hp=295c88e5e4aa22b7544e729efb8c652fe1e9f546;hb=1c580157d0fe6dc4dc0c10f97d9f9000a354b0d3;hpb=b9665cff53c8f3a6228e57d40277c015839bf377 diff --git a/osl.c b/osl.c index 295c88e..eb1d24f 100644 --- a/osl.c +++ b/osl.c @@ -534,7 +534,7 @@ __export int osl_create_table(const struct osl_table_description *desc) continue; if (!table_dir) { ret = osl_mkdir(desc->dir, 0777); - if (ret < 0 && !is_errno(-ret, EEXIST)) + if (ret < 0 && ret != -E_OSL_DIR_EXISTS) goto out; table_dir = make_message("%s/%s", desc->dir, desc->name); @@ -1073,10 +1073,10 @@ __export int osl_open_table(const struct osl_table_description *table_desc, ret = stat(dirname, &statbuf); free(dirname); if (ret < 0) { - ret = -ERRNO_TO_ERROR(errno); + ret = -E_OSL_STAT; goto err; } - ret = -ERRNO_TO_ERROR(ENOTDIR); + ret = -E_OSL_NOTDIR; if (!S_ISDIR(statbuf.st_mode)) goto err; } @@ -1111,7 +1111,7 @@ static int create_disk_storage_object_dir(const struct osl_table *t, return -E_OSL_NOMEM; ret = osl_mkdir(dirname, 0777); free(dirname); - if (ret < 0 && !is_errno(-ret, EEXIST)) + if (ret < 0 && ret != -E_OSL_DIR_EXISTS) return ret; return 1; } @@ -1178,15 +1178,15 @@ static int delete_disk_storage_file(const struct osl_table *t, unsigned col_num, const char *ds_name) { char *dirname, *filename = disk_storage_path(t, col_num, ds_name); - int ret, err; + int ret = 1; if (!filename) return -E_OSL_NOMEM; - ret = unlink(filename); - err = errno; + if (unlink(filename) < 0) + ret = errno == ENOENT? -E_OSL_NOENT : -E_OSL_UNLINK; free(filename); if (ret < 0) - return -ERRNO_TO_ERROR(err); + return ret; if (!(t->desc->flags & OSL_LARGE_TABLE)) return 1; dirname = disk_storage_dirname(t, col_num, ds_name); @@ -1563,7 +1563,7 @@ __export int osl_update_object(struct osl_table *t, const struct osl_row *r, if (ret < 0) return ret; ret = delete_disk_storage_file(t, col_num, ds_name); - if (ret < 0 && !is_errno(-ret, ENOENT)) { + if (ret < 0 && ret != -E_OSL_NOENT) { free(ds_name); return ret; }