X-Git-Url: http://git.tuebingen.mpg.de/?p=osl.git;a=blobdiff_plain;f=osl.c;h=a9dcc29bd48790ff93d54027aa2052bc373c6373;hp=3f55ed4c24fc3217e6f4925b1b0e6b8d82de550a;hb=aaedc06d0448b048c7d41074985f9ee81e93d077;hpb=06fa6acd87ac23ee3ca422dbc56cf97a3c71aa09 diff --git a/osl.c b/osl.c index 3f55ed4..a9dcc29 100644 --- a/osl.c +++ b/osl.c @@ -10,7 +10,6 @@ #include "log.h" #include "osl.h" -#include "error.h" #include "util.h" #include "osl_core.h" @@ -38,8 +37,6 @@ static const unsigned int errmsgidx[] = { __export const char *osl_strerror(int num) { - if (IS_SYSTEM_ERROR(num)) - return strerror((num) & ((1 << SYSTEM_ERROR_BIT) - 1)); return msgstr.str + errmsgidx[num]; } @@ -534,7 +531,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); @@ -1070,12 +1067,10 @@ __export int osl_open_table(const struct osl_table_description *table_desc, if (!dirname) goto err; /* check if directory exists */ - ret = stat(dirname, &statbuf); + ret = osl_stat(dirname, &statbuf); free(dirname); - if (ret < 0) { - ret = -E_OSL_STAT; + if (ret < 0) goto err; - } ret = -E_OSL_NOTDIR; if (!S_ISDIR(statbuf.st_mode)) goto err; @@ -1111,7 +1106,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 +1173,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 -E_OSL_UNLINK; + return ret; if (!(t->desc->flags & OSL_LARGE_TABLE)) return 1; dirname = disk_storage_dirname(t, col_num, ds_name); @@ -1563,7 +1558,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; }