if (ret < 0)
goto err;
ret = -E_BAD_DB_DIR;
- if (!t->desc->dir)
+ if (!t->desc->dir && (t->num_disk_storage_columns || t->num_mapped_columns))
goto err;
/* the size of the index header without column descriptions */
t->index_header_size = IDX_COLUMN_DESCRIPTIONS;
*
* \param desc Pointer to the table description.
*
- * \return Positive on success, negative on errors. Possible errors include: \p
- * E_BAD_TABLE_DESC, \p E_BAD_DB_DIR, \p E_BAD_NAME, \p E_NO_COMPARE_FUNC, \p
- * E_NO_COLUMN_NAME, \p E_DUPLICATE_COL_NAME, \p E_MKDIR, any errors returned
- * by para_open().
+ * \return Standard.
*/
int osl_create_table(const struct osl_table_description *desc)
{
continue;
if (!table_dir) {
ret = para_mkdir(desc->dir, 0777);
- if (ret < 0 && ret != -E_EXIST)
+ if (ret < 0 && !is_errno(-ret, EEXIST))
goto out;
table_dir = make_message("%s/%s", desc->dir,
desc->name);
* The table description given by \a desc should coincide with the
* description used at creation time.
*
- * \return Positive on success, negative on errors. Possible errors include:
- * errors returned by init_table_structure(), \p E_NOENT, \p E_STAT, \p \p
- * E_NOTDIR, \p E_BAD_TABLE_DESC, \p E_BAD_DB_DIR, \p E_NO_COMPARE_FUNC, \p
- * E_NO_COLUMN_NAME, errors returned by init_rbtrees().
+ * \return Standard.
*/
int osl_open_table(const struct osl_table_description *table_desc,
struct osl_table **result)
ret = stat(dirname, &statbuf);
free(dirname);
if (ret < 0) {
- if (errno == ENOENT)
- ret = -E_NOENT;
- else
- ret = -E_STAT;
+ ret = -ERRNO_TO_PARA_ERROR(errno);
goto err;
}
- ret = -E_NOTDIR;
+ ret = -ERRNO_TO_PARA_ERROR(ENOTDIR);
if (!S_ISDIR(statbuf.st_mode))
goto err;
}
dirname = disk_storage_dirname(t, col_num, ds_name);
ret = para_mkdir(dirname, 0777);
free(dirname);
- if (ret < 0 && ret != -E_EXIST)
+ if (ret < 0 && !is_errno(-ret, EEXIST))
return ret;
return 1;
}
const char *ds_name)
{
char *dirname, *filename = disk_storage_path(t, col_num, ds_name);
- int ret = unlink(filename);
+ int ret = unlink(filename), err = errno;
- PARA_DEBUG_LOG("deleted %s\n", filename);
free(filename);
- if (ret < 0) {
- if (errno == ENOENT)
- return -E_NOENT;
- return -E_UNLINK;
- }
+ if (ret < 0)
+ return -ERRNO_TO_PARA_ERROR(err);
if (!(t->desc->flags & OSL_LARGE_TABLE))
return 1;
dirname = disk_storage_dirname(t, col_num, ds_name);
* mapped columns of constant size (which may be updated directly if \p
* OSL_RBTREE is not set). Otherwise the rbtree might become corrupted.
*
- * \return Positive on success, negative on errors. Possible errors include: \p
- * E_BAD_TABLE, \p E_RB_KEY_EXISTS, \p E_BAD_SIZE, \p E_NOENT, \p E_UNLINK,
- * errors returned by para_write_file(), \p E_MKDIR.
+ * \return Standard
*/
int osl_update_object(struct osl_table *t, const struct osl_row *r,
unsigned col_num, struct osl_object *obj)
if (ret < 0)
return ret;
ret = delete_disk_storage_file(t, col_num, ds_name);
- if (ret < 0 && ret != -E_NOENT) {
+ if (ret < 0 && !is_errno(-ret, ENOENT)) {
free(ds_name);
return ret;
}
* \param rank Result pointer.
*
* The rank is, by definition, the position of the row in the linear order
- * determined by an inorder tree walk of the rbtree associated with column
+ * determined by an in-order tree walk of the rbtree associated with column
* number \a col_num of \a table.
*
* \return Positive on success, negative on errors.