/*
- * Copyright (C) 2007-2008 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2007-2009 Andre Noll <maan@systemlinux.org>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
#include "log.h"
#include "osl.h"
-#include "error.h"
#include "util.h"
#include "osl_core.h"
__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];
}
* \param map The memory mapping of the index file.
* \param desc The values found in the index header are returned here.
*
- * Read the index header, check for the paraslash magic string and the table version number.
- * Read all information stored in the index header into \a desc.
+ * Read the index header, check for the osl magic string and the table version
+ * number. Read all information stored in the index header into \a desc.
*
* \return Standard.
*
if (map->size < MIN_INDEX_HEADER_SIZE(1))
return -E_OSL_SHORT_TABLE;
- if (strncmp(buf + IDX_PARA_MAGIC, PARA_MAGIC, strlen(PARA_MAGIC)))
+ if (strncmp(buf + IDX_OSL_MAGIC, OSL_MAGIC, strlen(OSL_MAGIC)))
return -E_OSL_NO_MAGIC;
version = read_u8(buf + IDX_VERSION);
if (version < MIN_TABLE_VERSION || version > MAX_TABLE_VERSION)
buf = calloc(1, size);
if (!buf)
return -E_OSL_NOMEM;
- sprintf(buf + IDX_PARA_MAGIC, "%s", PARA_MAGIC);
+ sprintf(buf + IDX_OSL_MAGIC, "%s", OSL_MAGIC);
write_u8(buf + IDX_TABLE_FLAGS, t->desc->flags);
write_u8(buf + IDX_DIRTY_FLAG, 0);
write_u8(buf + IDX_VERSION, CURRENT_TABLE_VERSION);
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);
if (!dirname)
goto err;
/* check if directory exists */
- ret = stat(dirname, &statbuf);
+ ret = osl_stat(dirname, &statbuf);
free(dirname);
- if (ret < 0) {
- ret = -ERRNO_TO_ERROR(errno);
+ if (ret < 0)
goto err;
- }
- ret = -ERRNO_TO_ERROR(ENOTDIR);
+ ret = -E_OSL_NOTDIR;
if (!S_ISDIR(statbuf.st_mode))
goto err;
}
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;
}
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);
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;
}