mirror of https://github.com/djcb/mu.git
* fix glib warnings (compile time, runtime): add error gquark, don't use g_atexit
This commit is contained in:
parent
fa10095ce2
commit
bc6f9ebbb8
|
@ -170,7 +170,7 @@ SCM_DEFINE_PUBLIC (mu_initialize, "mu:initialize", 0, 1, 0,
|
|||
SCM_UNSPECIFIED);
|
||||
|
||||
/* cleanup when we're exiting */
|
||||
g_atexit (mu_guile_uninit_instance);
|
||||
atexit (mu_guile_uninit_instance);
|
||||
|
||||
return SCM_UNSPECIFIED;
|
||||
}
|
||||
|
|
|
@ -179,7 +179,7 @@ run_cmd_cfind (const char* pattern, MuConfigFormat format,
|
|||
|
||||
contacts = mu_contacts_new (mu_runtime_path(MU_RUNTIME_PATH_CONTACTS));
|
||||
if (!contacts) {
|
||||
g_set_error (err, 0, MU_ERROR_CONTACTS_CANNOT_RETRIEVE,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_CONTACTS_CANNOT_RETRIEVE,
|
||||
"could not retrieve contacts");
|
||||
return MU_ERROR_CONTACTS_CANNOT_RETRIEVE;
|
||||
}
|
||||
|
@ -234,7 +234,7 @@ mu_cmd_cfind (MuConfig *opts, GError **err)
|
|||
MU_ERROR_INTERNAL);
|
||||
|
||||
if (!cfind_params_valid (opts)) {
|
||||
g_set_error (err, 0, MU_ERROR_IN_PARAMETERS,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_IN_PARAMETERS,
|
||||
"invalid parameters");
|
||||
return MU_ERROR_IN_PARAMETERS;
|
||||
}
|
||||
|
|
|
@ -401,7 +401,7 @@ mu_cmd_extract (MuConfig *opts, GError **err)
|
|||
MU_ERROR_INTERNAL);
|
||||
|
||||
if (!check_params (opts)) {
|
||||
g_set_error (err, 0, MU_ERROR_IN_PARAMETERS,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_IN_PARAMETERS,
|
||||
"error in parameters");
|
||||
return MU_ERROR_IN_PARAMETERS;
|
||||
}
|
||||
|
@ -412,7 +412,7 @@ mu_cmd_extract (MuConfig *opts, GError **err)
|
|||
else {
|
||||
rv = mu_util_check_dir(opts->targetdir, FALSE, TRUE);
|
||||
if (!rv)
|
||||
g_set_error (err, 0, MU_ERROR_FILE_CANNOT_WRITE,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_FILE_CANNOT_WRITE,
|
||||
"target '%s' is not a writable directory",
|
||||
opts->targetdir);
|
||||
else
|
||||
|
|
|
@ -86,7 +86,7 @@ sort_field_from_string (const char* fieldstr, GError **err)
|
|||
mfid = mu_msg_field_id_from_shortcut(fieldstr[0],
|
||||
FALSE);
|
||||
if (mfid == MU_MSG_FIELD_ID_NONE)
|
||||
g_set_error (err, 0, MU_ERROR_IN_PARAMETERS,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_IN_PARAMETERS,
|
||||
"not a valid sort field: '%s'\n", fieldstr);
|
||||
return mfid;
|
||||
}
|
||||
|
@ -159,7 +159,7 @@ exec_cmd (const char *path, const char *cmd, GError **err)
|
|||
gboolean rv;
|
||||
|
||||
if (access (path, R_OK) != 0) {
|
||||
g_set_error (err, 0, MU_ERROR_FILE_CANNOT_READ,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_FILE_CANNOT_READ,
|
||||
"cannot read %s: %s", path, strerror(errno));
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -209,7 +209,7 @@ exec_cmd_on_query (MuQuery *xapian, const gchar *query, MuConfig *opts,
|
|||
}
|
||||
|
||||
if (count == 0) {
|
||||
g_set_error (err, 0, MU_ERROR_NO_MATCHES,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_NO_MATCHES,
|
||||
"no matches for search expression");
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -231,20 +231,20 @@ format_params_valid (MuConfig *opts, GError **err)
|
|||
case MU_CONFIG_FORMAT_XQUERY:
|
||||
break;
|
||||
default:
|
||||
g_set_error (err, 0, MU_ERROR_IN_PARAMETERS,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_IN_PARAMETERS,
|
||||
"invalid output format %s",
|
||||
opts->formatstr ? opts->formatstr : "<none>");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (opts->format == MU_CONFIG_FORMAT_LINKS && !opts->linksdir) {
|
||||
g_set_error (err, 0, MU_ERROR_IN_PARAMETERS,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_IN_PARAMETERS,
|
||||
"missing --linksdir argument");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (opts->linksdir && opts->format != MU_CONFIG_FORMAT_LINKS) {
|
||||
g_set_error (err, 0, MU_ERROR_IN_PARAMETERS,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_IN_PARAMETERS,
|
||||
"--linksdir is only valid with --format=links");
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -262,7 +262,7 @@ query_params_valid (MuConfig *opts, GError **err)
|
|||
if (mu_util_check_dir (xpath, TRUE, FALSE))
|
||||
return TRUE;
|
||||
|
||||
g_set_error (err, 0, MU_ERROR_FILE_CANNOT_READ,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_FILE_CANNOT_READ,
|
||||
"'%s' is not a readable Xapian directory", xpath);
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -277,14 +277,14 @@ resolve_bookmark (MuConfig *opts, GError **err)
|
|||
bmfile = mu_runtime_path (MU_RUNTIME_PATH_BOOKMARKS);
|
||||
bm = mu_bookmarks_new (bmfile);
|
||||
if (!bm) {
|
||||
g_set_error (err, 0, MU_ERROR_FILE_CANNOT_OPEN,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_FILE_CANNOT_OPEN,
|
||||
"failed to open bookmarks file '%s'", bmfile);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
val = (gchar*)mu_bookmarks_lookup (bm, opts->bookmark);
|
||||
if (!val)
|
||||
g_set_error (err, 0, MU_ERROR_NO_MATCHES,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_NO_MATCHES,
|
||||
"bookmark '%s' not found", opts->bookmark);
|
||||
else
|
||||
val = g_strdup (val);
|
||||
|
@ -330,7 +330,7 @@ get_query (MuConfig *opts, GError **err)
|
|||
|
||||
/* params[0] is 'find', actual search params start with [1] */
|
||||
if (!opts->bookmark && !opts->params[1]) {
|
||||
g_set_error (err, 0, MU_ERROR_IN_PARAMETERS,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_IN_PARAMETERS,
|
||||
"error in parameters");
|
||||
return NULL;
|
||||
}
|
||||
|
@ -368,13 +368,13 @@ get_query_obj (MuStore *store, GError **err)
|
|||
return NULL;
|
||||
|
||||
if (count == 0) {
|
||||
g_set_error (err, 0, MU_ERROR_XAPIAN_IS_EMPTY,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_XAPIAN_IS_EMPTY,
|
||||
"the database is empty");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (mu_store_needs_upgrade (store)) {
|
||||
g_set_error (err, 0, MU_ERROR_XAPIAN_NOT_UP_TO_DATE,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_XAPIAN_NOT_UP_TO_DATE,
|
||||
"the database is not up-to-date");
|
||||
return NULL;
|
||||
}
|
||||
|
@ -468,13 +468,13 @@ output_links (MuMsgIter *iter, const char* linksdir, gboolean clearlinks,
|
|||
}
|
||||
|
||||
if (errcount > 0) {
|
||||
g_set_error (err, 0, MU_ERROR_FILE_CANNOT_LINK,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_FILE_CANNOT_LINK,
|
||||
"error linking %u message(s)", (unsigned)errcount);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (count == 0) {
|
||||
g_set_error (err, 0, MU_ERROR_NO_MATCHES,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_NO_MATCHES,
|
||||
"no matches for search expression");
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -686,7 +686,7 @@ output_plain (MuMsgIter *iter, const char *fields, gboolean summary,
|
|||
}
|
||||
|
||||
if (count == 0) {
|
||||
g_set_error (err, 0, MU_ERROR_NO_MATCHES,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_NO_MATCHES,
|
||||
"no existing matches for search expression");
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -746,7 +746,7 @@ output_sexp (MuMsgIter *iter, gboolean threads,
|
|||
}
|
||||
|
||||
if (count == 0) {
|
||||
g_set_error (err, 0, MU_ERROR_NO_MATCHES,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_NO_MATCHES,
|
||||
"no existing matches for search expression");
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -803,7 +803,7 @@ output_xml (MuMsgIter *iter, gboolean include_unreadable, GError **err)
|
|||
g_print ("</messages>\n");
|
||||
|
||||
if (count == 0) {
|
||||
g_set_error (err, 0, MU_ERROR_NO_MATCHES,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_NO_MATCHES,
|
||||
"no existing matches for search expression");
|
||||
return FALSE;
|
||||
}
|
||||
|
|
|
@ -75,19 +75,19 @@ check_params (MuConfig *opts, GError **err)
|
|||
{
|
||||
/* param[0] == 'index' there should be no param[1] */
|
||||
if (opts->params[1]) {
|
||||
g_set_error (err, 0, MU_ERROR_IN_PARAMETERS,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_IN_PARAMETERS,
|
||||
"unexpected parameter");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (opts->xbatchsize < 0) {
|
||||
g_set_error (err, 0, MU_ERROR_IN_PARAMETERS,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_IN_PARAMETERS,
|
||||
"the batch size must be non-negative");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (opts->max_msg_size < 0) {
|
||||
g_set_error (err, 0, MU_ERROR_IN_PARAMETERS,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_IN_PARAMETERS,
|
||||
"the maximum message size must be non-negative");
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -99,20 +99,20 @@ static gboolean
|
|||
check_maildir (const char *maildir, GError **err)
|
||||
{
|
||||
if (!maildir) {
|
||||
g_set_error (err, 0, MU_ERROR_IN_PARAMETERS,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_IN_PARAMETERS,
|
||||
"no maildir to work on; use --maildir=");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (!g_path_is_absolute (maildir)) {
|
||||
g_set_error (err, 0, MU_ERROR_IN_PARAMETERS,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_IN_PARAMETERS,
|
||||
"maildir path '%s' is not absolute",
|
||||
maildir);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (!mu_util_check_dir (maildir, TRUE, FALSE)) {
|
||||
g_set_error (err, 0, MU_ERROR_IN_PARAMETERS,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_IN_PARAMETERS,
|
||||
"not a valid Maildir: %s", maildir);
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -347,7 +347,7 @@ cmd_index (MuIndex *midx, MuConfig *opts, MuIndexStats *stats,
|
|||
if (rv == MU_STOP)
|
||||
rv = MU_OK;
|
||||
} else
|
||||
g_set_error (err, 0, rv, "error while indexing");
|
||||
g_set_error (err, MU_ERROR_DOMAIN, rv, "error while indexing");
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
|
|
@ -428,7 +428,7 @@ get_docid_from_msgid (MuQuery *query, const char *str, GError **err)
|
|||
docid = MU_STORE_INVALID_DOCID;
|
||||
if (!iter || mu_msg_iter_is_done (iter))
|
||||
if (err && *err == NULL)
|
||||
g_set_error (err, 0, MU_ERROR_NO_MATCHES,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_NO_MATCHES,
|
||||
"could not find message %s", str);
|
||||
else
|
||||
return docid;
|
||||
|
@ -436,7 +436,7 @@ get_docid_from_msgid (MuQuery *query, const char *str, GError **err)
|
|||
MuMsg *msg;
|
||||
msg = mu_msg_iter_get_msg_floating (iter);
|
||||
if (!mu_msg_is_readable(msg)) {
|
||||
g_set_error (err, 0, MU_ERROR_FILE_CANNOT_READ,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_FILE_CANNOT_READ,
|
||||
"'%s' is not readable",
|
||||
mu_msg_get_path(msg));
|
||||
} else
|
||||
|
@ -462,7 +462,7 @@ get_docid (MuQuery *query, const char *str, GError **err)
|
|||
docid = strtol (str, &endptr, 10);
|
||||
if (*endptr != '\0') {
|
||||
if (!query) {
|
||||
g_set_error (err, 0, MU_ERROR_IN_PARAMETERS,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_IN_PARAMETERS,
|
||||
"invalid docid '%s'", str);
|
||||
return MU_STORE_INVALID_DOCID;
|
||||
} else
|
||||
|
@ -981,7 +981,7 @@ handle_command (Cmd cmd, MuStore *store, MuQuery *query, GSList *args,
|
|||
|
||||
case CMD_IGNORE: return TRUE;
|
||||
default:
|
||||
g_set_error (err, 0, MU_ERROR_IN_PARAMETERS,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_IN_PARAMETERS,
|
||||
"unknown command");
|
||||
return FALSE;
|
||||
}
|
||||
|
|
18
src/mu-cmd.c
18
src/mu-cmd.c
|
@ -202,7 +202,7 @@ view_params_valid (MuConfig *opts, GError **err)
|
|||
{
|
||||
/* note: params[0] will be 'view' */
|
||||
if (!opts->params[0] || !opts->params[1]) {
|
||||
g_set_error (err, 0, MU_ERROR_IN_PARAMETERS,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_IN_PARAMETERS,
|
||||
"error in parameters");
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -212,7 +212,7 @@ view_params_valid (MuConfig *opts, GError **err)
|
|||
case MU_CONFIG_FORMAT_SEXP:
|
||||
break;
|
||||
default:
|
||||
g_set_error (err, 0, MU_ERROR_IN_PARAMETERS,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_IN_PARAMETERS,
|
||||
"invalid output format");
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -264,7 +264,7 @@ mu_cmd_mkdir (MuConfig *opts, GError **err)
|
|||
MU_ERROR_INTERNAL);
|
||||
|
||||
if (!opts->params[1]) {
|
||||
g_set_error (err, 0, MU_ERROR_IN_PARAMETERS,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_IN_PARAMETERS,
|
||||
"missing directory parameter");
|
||||
return MU_ERROR_IN_PARAMETERS;
|
||||
}
|
||||
|
@ -320,7 +320,7 @@ mu_cmd_add (MuStore *store, MuConfig *opts, GError **err)
|
|||
/* note: params[0] will be 'add' */
|
||||
if (!opts->params[0] || !opts->params[1]) {
|
||||
g_message ("usage: mu add <file> [<files>]");
|
||||
g_set_error (err, 0, MU_ERROR_IN_PARAMETERS,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_IN_PARAMETERS,
|
||||
"missing source and/or target");
|
||||
return MU_ERROR_IN_PARAMETERS;
|
||||
}
|
||||
|
@ -339,7 +339,7 @@ mu_cmd_add (MuStore *store, MuConfig *opts, GError **err)
|
|||
}
|
||||
|
||||
if (!allok) {
|
||||
g_set_error (err, 0, MU_ERROR_XAPIAN_STORE_FAILED,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_XAPIAN_STORE_FAILED,
|
||||
"store failed for some message(s)");
|
||||
return MU_ERROR_XAPIAN_STORE_FAILED;
|
||||
}
|
||||
|
@ -361,7 +361,7 @@ mu_cmd_remove (MuStore *store, MuConfig *opts, GError **err)
|
|||
/* note: params[0] will be 'add' */
|
||||
if (!opts->params[0] || !opts->params[1]) {
|
||||
g_warning ("usage: mu remove <file> [<files>]");
|
||||
g_set_error (err, 0, MU_ERROR_IN_PARAMETERS,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_IN_PARAMETERS,
|
||||
"missing source and/or target");
|
||||
return MU_ERROR_IN_PARAMETERS;
|
||||
}
|
||||
|
@ -379,7 +379,7 @@ mu_cmd_remove (MuStore *store, MuConfig *opts, GError **err)
|
|||
}
|
||||
|
||||
if (!allok) {
|
||||
g_set_error (err, 0, MU_ERROR_XAPIAN_STORE_FAILED,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_XAPIAN_STORE_FAILED,
|
||||
"remove failed for some message(s)");
|
||||
return MU_ERROR_XAPIAN_REMOVE_FAILED;
|
||||
}
|
||||
|
@ -438,7 +438,7 @@ check_params (MuConfig *opts, GError **err)
|
|||
{
|
||||
if (!opts->params||!opts->params[0]) {/* no command? */
|
||||
show_usage ();
|
||||
g_set_error (err, 0, MU_ERROR_IN_PARAMETERS, "error in parameters");
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_IN_PARAMETERS, "error in parameters");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
@ -476,7 +476,7 @@ mu_cmd_execute (MuConfig *opts, GError **err)
|
|||
return with_store (mu_cmd_server, opts, FALSE, err);
|
||||
default:
|
||||
show_usage ();
|
||||
g_set_error (err, 0, MU_ERROR_IN_PARAMETERS,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_IN_PARAMETERS,
|
||||
"unknown command '%s'", opts->cmdstr);
|
||||
return MU_ERROR_IN_PARAMETERS;
|
||||
}
|
||||
|
|
|
@ -89,7 +89,7 @@ create_maildir (const char *path, mode_t mode, GError **err)
|
|||
* there's already such a dir, but with the wrong
|
||||
* permissions; so we need to check */
|
||||
if (rv != 0 || !mu_util_check_dir(fullpath, TRUE, TRUE)) {
|
||||
g_set_error (err, 0, MU_ERROR_FILE_CANNOT_MKDIR,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_FILE_CANNOT_MKDIR,
|
||||
"creating dir failed for %s: %s",
|
||||
fullpath,
|
||||
strerror (errno));
|
||||
|
@ -115,7 +115,7 @@ create_noindex (const char *path, GError **err)
|
|||
/* note, if the 'close' failed, creation may still have
|
||||
* succeeded...*/
|
||||
if (fd < 0 || close (fd) != 0) {
|
||||
g_set_error (err, 0, MU_ERROR_FILE_CANNOT_CREATE,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_FILE_CANNOT_CREATE,
|
||||
"error in create_noindex: %s",
|
||||
strerror (errno));
|
||||
return FALSE;
|
||||
|
@ -208,7 +208,7 @@ mu_maildir_link (const char* src, const char *targetpath, GError **err)
|
|||
rv = symlink (src, targetfullpath);
|
||||
|
||||
if (rv != 0) {
|
||||
g_set_error (err, 0, MU_ERROR_FILE_CANNOT_LINK,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_FILE_CANNOT_LINK,
|
||||
"error creating link %s => %s: %s",
|
||||
targetfullpath, src, strerror (errno));
|
||||
g_free (targetfullpath);
|
||||
|
@ -617,7 +617,7 @@ clear_links (const gchar* dirname, DIR *dir, GError **err)
|
|||
}
|
||||
|
||||
if (errno != 0)
|
||||
g_set_error (err, 0, MU_ERROR_FILE,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_FILE,
|
||||
"file error: %s", strerror(errno));
|
||||
|
||||
return (rv == FALSE && errno == 0);
|
||||
|
@ -634,7 +634,7 @@ mu_maildir_clear_links (const gchar* path, GError **err)
|
|||
|
||||
dir = opendir (path);
|
||||
if (!dir) {
|
||||
g_set_error (err, 0, MU_ERROR_FILE_CANNOT_OPEN,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_FILE_CANNOT_OPEN,
|
||||
"failed to open %s: %s", path,
|
||||
strerror(errno));
|
||||
return FALSE;
|
||||
|
@ -791,25 +791,25 @@ static gboolean
|
|||
msg_move_check_pre (const gchar *src, const gchar *dst, GError **err)
|
||||
{
|
||||
if (!g_path_is_absolute(src)) {
|
||||
g_set_error (err, 0, MU_ERROR_FILE,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_FILE,
|
||||
"source is not an absolute path: '%s'", src);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (!g_path_is_absolute(dst)) {
|
||||
g_set_error (err, 0, MU_ERROR_FILE,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_FILE,
|
||||
"target is not an absolute path: '%s'", dst);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (access (src, R_OK) != 0) {
|
||||
g_set_error (err, 0, MU_ERROR_FILE, "cannot read %s",
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_FILE, "cannot read %s",
|
||||
src);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (access (dst, F_OK) == 0) {
|
||||
g_set_error (err, 0, MU_ERROR_FILE, "%s already exists",
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_FILE, "%s already exists",
|
||||
dst);
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -822,13 +822,13 @@ msg_move_check_post (const char *src, const char *dst, GError **err)
|
|||
{
|
||||
/* double check -- is the target really there? */
|
||||
if (access (dst, F_OK) != 0) {
|
||||
g_set_error (err, 0, MU_ERROR_FILE, "can't find target (%s)",
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_FILE, "can't find target (%s)",
|
||||
dst);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (access (src, F_OK) == 0) {
|
||||
g_set_error (err, 0, MU_ERROR_FILE, "source is still there (%s)",
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_FILE, "source is still there (%s)",
|
||||
src);
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -844,7 +844,7 @@ msg_move (const char* src, const char *dst, GError **err)
|
|||
return FALSE;
|
||||
|
||||
if (rename (src, dst) != 0) {
|
||||
g_set_error (err, 0, MU_ERROR_FILE, "error moving %s to %s",
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_FILE, "error moving %s to %s",
|
||||
src, dst);
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -869,7 +869,7 @@ mu_maildir_move_message (const char* oldpath, const char* targetmdir,
|
|||
newfullpath = mu_maildir_get_new_path (oldpath, targetmdir,
|
||||
newflags);
|
||||
if (!newfullpath) {
|
||||
g_set_error (err, 0, MU_ERROR_FILE,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_FILE,
|
||||
"failed to determine target full path");
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -878,7 +878,7 @@ mu_maildir_move_message (const char* oldpath, const char* targetmdir,
|
|||
src_is_target = (g_strcmp0 (oldpath, newfullpath) == 0);
|
||||
|
||||
if (!ignore_dups && src_is_target) {
|
||||
g_set_error (err, 0, MU_ERROR_FILE_TARGET_EQUALS_SOURCE,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_FILE_TARGET_EQUALS_SOURCE,
|
||||
"target equals source");
|
||||
return FALSE;
|
||||
}
|
||||
|
|
|
@ -100,21 +100,21 @@ init_file_metadata (MuMsgFile *self, const char* path, const gchar* mdir,
|
|||
struct stat statbuf;
|
||||
|
||||
if (access (path, R_OK) != 0) {
|
||||
g_set_error (err, 0, MU_ERROR_FILE,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_FILE,
|
||||
"cannot read file %s: %s",
|
||||
path, strerror(errno));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (stat (path, &statbuf) < 0) {
|
||||
g_set_error (err, 0, MU_ERROR_FILE,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_FILE,
|
||||
"cannot stat %s: %s",
|
||||
path, strerror(errno));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (!S_ISREG(statbuf.st_mode)) {
|
||||
g_set_error (err, 0, MU_ERROR_FILE,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_FILE,
|
||||
"not a regular file: %s", path);
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -138,7 +138,7 @@ get_mime_stream (MuMsgFile *self, const char *path, GError **err)
|
|||
|
||||
file = fopen (path, "r");
|
||||
if (!file) {
|
||||
g_set_error (err, 0, MU_ERROR_FILE,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_FILE,
|
||||
"cannot open %s: %s",
|
||||
path, strerror (errno));
|
||||
return NULL;
|
||||
|
@ -146,7 +146,7 @@ get_mime_stream (MuMsgFile *self, const char *path, GError **err)
|
|||
|
||||
stream = g_mime_stream_file_new (file);
|
||||
if (!stream) {
|
||||
g_set_error (err, 0, MU_ERROR_GMIME,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_GMIME,
|
||||
"cannot create mime stream for %s",
|
||||
path);
|
||||
fclose (file);
|
||||
|
@ -169,7 +169,7 @@ init_mime_msg (MuMsgFile *self, const char* path, GError **err)
|
|||
parser = g_mime_parser_new_with_stream (stream);
|
||||
g_object_unref (stream);
|
||||
if (!parser) {
|
||||
g_set_error (err, 0, MU_ERROR_GMIME,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_GMIME,
|
||||
"%s: cannot create mime parser for %s",
|
||||
__FUNCTION__, path);
|
||||
return FALSE;
|
||||
|
@ -178,7 +178,7 @@ init_mime_msg (MuMsgFile *self, const char* path, GError **err)
|
|||
self->_mime_msg = g_mime_parser_construct_message (parser);
|
||||
g_object_unref (parser);
|
||||
if (!self->_mime_msg) {
|
||||
g_set_error (err, 0, MU_ERROR_GMIME,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_GMIME,
|
||||
"%s: cannot construct mime message for %s",
|
||||
__FUNCTION__, path);
|
||||
return FALSE;
|
||||
|
|
|
@ -337,7 +337,7 @@ write_part_to_fd (GMimePart *part, int fd, GError **err)
|
|||
|
||||
stream = g_mime_stream_fs_new (fd);
|
||||
if (!GMIME_IS_STREAM(stream)) {
|
||||
g_set_error (err, 0, MU_ERROR_GMIME,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_GMIME,
|
||||
"failed to create stream");
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -345,7 +345,7 @@ write_part_to_fd (GMimePart *part, int fd, GError **err)
|
|||
|
||||
wrapper = g_mime_part_get_content_object (part);
|
||||
if (!GMIME_IS_DATA_WRAPPER(wrapper)) {
|
||||
g_set_error (err, 0, MU_ERROR_GMIME,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_GMIME,
|
||||
"failed to create wrapper");
|
||||
g_object_unref (stream);
|
||||
return FALSE;
|
||||
|
@ -355,7 +355,7 @@ write_part_to_fd (GMimePart *part, int fd, GError **err)
|
|||
|
||||
rv = g_mime_data_wrapper_write_to_stream (wrapper, stream);
|
||||
if (rv == -1)
|
||||
g_set_error (err, 0, MU_ERROR_GMIME,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_GMIME,
|
||||
"failed to write to stream");
|
||||
|
||||
g_object_unref (wrapper);
|
||||
|
@ -373,13 +373,13 @@ write_object_to_fd (GMimeObject *obj, int fd, GError **err)
|
|||
str = g_mime_object_to_string (obj);
|
||||
|
||||
if (!str) {
|
||||
g_set_error (err, 0, MU_ERROR_GMIME,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_GMIME,
|
||||
"could not get string from object");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (write (fd, str, strlen(str)) == -1) {
|
||||
g_set_error (err, 0, MU_ERROR_GMIME,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_GMIME,
|
||||
"failed to write object: %s",
|
||||
strerror(errno));
|
||||
return FALSE;
|
||||
|
@ -405,7 +405,7 @@ save_mime_object (GMimeObject *obj, const char *fullpath,
|
|||
/* ok, try to create the file */
|
||||
fd = mu_util_create_writeable_fd (fullpath, 0600, overwrite);
|
||||
if (fd == -1) {
|
||||
g_set_error (err, 0, MU_ERROR_FILE,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_FILE,
|
||||
"could not open '%s' for writing: %s",
|
||||
fullpath, errno ? strerror(errno) : "error");
|
||||
return FALSE;
|
||||
|
@ -417,7 +417,7 @@ save_mime_object (GMimeObject *obj, const char *fullpath,
|
|||
rv = write_object_to_fd (obj, fd, err);
|
||||
|
||||
if (close (fd) != 0 && !err) { /* don't write on top of old err */
|
||||
g_set_error (err, 0, MU_ERROR_FILE,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_FILE,
|
||||
"could not close '%s': %s",
|
||||
fullpath, errno ? strerror(errno) : "error");
|
||||
return FALSE;
|
||||
|
@ -438,7 +438,7 @@ mu_msg_part_filepath (MuMsg *msg, const char* targetdir, guint partidx,
|
|||
return NULL;
|
||||
|
||||
if (!(mobj = find_part (msg, partidx))) {
|
||||
g_set_error (err, 0, MU_ERROR_GMIME, "cannot find part %u", partidx);
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_GMIME, "cannot find part %u", partidx);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -455,7 +455,7 @@ mu_msg_part_filepath (MuMsg *msg, const char* targetdir, guint partidx,
|
|||
fname = get_filename_for_mime_message_part
|
||||
(g_mime_message_part_get_message((GMimeMessagePart*)mobj));
|
||||
else {
|
||||
g_set_error (err, 0, MU_ERROR_GMIME, "part %u cannot be saved",
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_GMIME, "part %u cannot be saved",
|
||||
partidx);
|
||||
return NULL;
|
||||
}
|
||||
|
@ -521,7 +521,7 @@ mu_msg_part_save (MuMsg *msg, const char *fullpath, guint partidx,
|
|||
|
||||
part = find_part (msg, partidx);
|
||||
if (!is_part_or_message_part (part)) {
|
||||
g_set_error (err, 0, MU_ERROR_GMIME,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_GMIME,
|
||||
"unexpected type %s for part %u",
|
||||
G_OBJECT_TYPE_NAME((GObject*)part),
|
||||
partidx);
|
||||
|
@ -540,7 +540,7 @@ mu_msg_part_save_temp (MuMsg *msg, guint partidx, GError **err)
|
|||
|
||||
filepath = mu_msg_part_filepath_cache (msg, partidx);
|
||||
if (!filepath) {
|
||||
g_set_error (err, 0, MU_ERROR_FILE,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_FILE,
|
||||
"Could not get temp filepath");
|
||||
return NULL;
|
||||
}
|
||||
|
|
10
src/mu-msg.c
10
src/mu-msg.c
|
@ -1,6 +1,6 @@
|
|||
/* -*- mode: c; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
|
||||
**
|
||||
** Copyright (C) 2008-2011 Dirk-Jan C. Binnema <djcb@djcbsoftware.nl>
|
||||
** Copyright (C) 2008-2012 Dirk-Jan C. Binnema <djcb@djcbsoftware.nl>
|
||||
**
|
||||
** This program is free software; you can redistribute it and/or modify
|
||||
** it under the terms of the GNU General Public License as published by
|
||||
|
@ -93,7 +93,7 @@ mu_msg_new_from_file (const char *path, const char *mdir, GError **err)
|
|||
|
||||
if (G_UNLIKELY(!_gmime_initialized)) {
|
||||
gmime_init ();
|
||||
g_atexit (gmime_uninit);
|
||||
atexit (gmime_uninit);
|
||||
}
|
||||
|
||||
msgfile = mu_msg_file_new (path, mdir, err);
|
||||
|
@ -127,7 +127,7 @@ mu_msg_new_from_doc (XapianDocument *doc, GError **err)
|
|||
|
||||
if (G_UNLIKELY(!_gmime_initialized)) {
|
||||
gmime_init ();
|
||||
g_atexit (gmime_uninit);
|
||||
atexit (gmime_uninit);
|
||||
}
|
||||
|
||||
msgdoc = mu_msg_doc_new (doc, err);
|
||||
|
@ -745,7 +745,7 @@ get_target_mdir (MuMsg *msg, const char *target_maildir, GError **err)
|
|||
/* maildir is the maildir stored in the message, e.g. '/foo' */
|
||||
maildir = mu_msg_get_maildir(msg);
|
||||
if (!maildir) {
|
||||
g_set_error (err, 0, MU_ERROR_GMIME,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_GMIME,
|
||||
"message without maildir");
|
||||
return NULL;
|
||||
}
|
||||
|
@ -763,7 +763,7 @@ get_target_mdir (MuMsg *msg, const char *target_maildir, GError **err)
|
|||
/* special case for the top-level '/' maildir, and
|
||||
* remember not_top_level */
|
||||
(not_top_level = (g_strcmp0 (maildir, "/") != 0))) {
|
||||
g_set_error (err, 0, MU_ERROR_FILE,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_FILE,
|
||||
"path is '%s', but maildir is '%s' ('%s')",
|
||||
rootmaildir, mu_msg_get_maildir(msg),
|
||||
mu_msg_get_path (msg));
|
||||
|
|
|
@ -213,7 +213,7 @@ get_query (MuQuery *mqx, const char* searchexpr, GError **err)
|
|||
|
||||
} catch (...) {
|
||||
/* some error occured */
|
||||
g_set_error (err, 0, MU_ERROR_XAPIAN_QUERY,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_XAPIAN_QUERY,
|
||||
"parse error in query");
|
||||
g_free (preprocessed);
|
||||
throw;
|
||||
|
@ -258,7 +258,7 @@ mu_query_new (MuStore *store, GError **err)
|
|||
g_return_val_if_fail (store, NULL);
|
||||
|
||||
if (mu_store_count (store, err) == 0) {
|
||||
g_set_error (err, 0, MU_ERROR_XAPIAN_IS_EMPTY,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_XAPIAN_IS_EMPTY,
|
||||
"database is empty");
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -78,7 +78,7 @@ mu_store_new_read_only (const char* xpath, GError **err)
|
|||
return new _MuStore (xpath);
|
||||
|
||||
} catch (const MuStoreError& merr) {
|
||||
g_set_error (err, 0, merr.mu_error(), "%s",
|
||||
g_set_error (err, MU_ERROR_DOMAIN, merr.mu_error(), "%s",
|
||||
merr.what().c_str());
|
||||
|
||||
} MU_XAPIAN_CATCH_BLOCK_G_ERROR(err, MU_ERROR_XAPIAN);
|
||||
|
|
|
@ -366,7 +366,7 @@ leave:
|
|||
*strlst = str;
|
||||
return g_string_free (gstr, FALSE);
|
||||
err:
|
||||
g_set_error (err, 0, MU_ERROR_IN_PARAMETERS,
|
||||
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_IN_PARAMETERS,
|
||||
"error parsing string '%s'", g_strchug(*strlst));
|
||||
*strlst = NULL;
|
||||
return g_string_free (gstr, TRUE);
|
||||
|
|
|
@ -137,6 +137,22 @@ mu_util_create_tmpdir (void)
|
|||
}
|
||||
|
||||
|
||||
GQuark
|
||||
mu_util_error_quark (void)
|
||||
{
|
||||
static GQuark error_domain = 0;
|
||||
|
||||
if (G_UNLIKELY(error_domain == 0))
|
||||
error_domain = g_quark_from_static_string
|
||||
("mu-error-quark");
|
||||
|
||||
return error_domain;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
const char*
|
||||
mu_util_cache_dir (void)
|
||||
{
|
||||
|
|
|
@ -185,6 +185,19 @@ gboolean mu_util_play (const char *path,
|
|||
gboolean allow_local, gboolean allow_remote);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Get an error-query for mu, to be used in `g_set_error'. Recent
|
||||
* version of Glib warn when using 0 for the error-domain in
|
||||
* g_set_error.
|
||||
*
|
||||
*
|
||||
* @return an error quark for mu
|
||||
*/
|
||||
GQuark mu_util_error_quark (void) G_GNUC_CONST;
|
||||
#define MU_ERROR_DOMAIN (mu_util_error_quark())
|
||||
|
||||
|
||||
/**
|
||||
* convert a string array in to a string, with the elements separated
|
||||
* by ' '
|
||||
|
|
Loading…
Reference in New Issue