* fix glib warnings (compile time, runtime): add error gquark, don't use g_atexit

This commit is contained in:
djcb 2012-04-01 13:08:02 +03:00
parent fa10095ce2
commit bc6f9ebbb8
16 changed files with 112 additions and 83 deletions

View File

@ -170,7 +170,7 @@ SCM_DEFINE_PUBLIC (mu_initialize, "mu:initialize", 0, 1, 0,
SCM_UNSPECIFIED); SCM_UNSPECIFIED);
/* cleanup when we're exiting */ /* cleanup when we're exiting */
g_atexit (mu_guile_uninit_instance); atexit (mu_guile_uninit_instance);
return SCM_UNSPECIFIED; return SCM_UNSPECIFIED;
} }

View File

@ -179,7 +179,7 @@ run_cmd_cfind (const char* pattern, MuConfigFormat format,
contacts = mu_contacts_new (mu_runtime_path(MU_RUNTIME_PATH_CONTACTS)); contacts = mu_contacts_new (mu_runtime_path(MU_RUNTIME_PATH_CONTACTS));
if (!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"); "could not retrieve contacts");
return MU_ERROR_CONTACTS_CANNOT_RETRIEVE; return MU_ERROR_CONTACTS_CANNOT_RETRIEVE;
} }
@ -234,7 +234,7 @@ mu_cmd_cfind (MuConfig *opts, GError **err)
MU_ERROR_INTERNAL); MU_ERROR_INTERNAL);
if (!cfind_params_valid (opts)) { 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"); "invalid parameters");
return MU_ERROR_IN_PARAMETERS; return MU_ERROR_IN_PARAMETERS;
} }

View File

@ -401,7 +401,7 @@ mu_cmd_extract (MuConfig *opts, GError **err)
MU_ERROR_INTERNAL); MU_ERROR_INTERNAL);
if (!check_params (opts)) { 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"); "error in parameters");
return MU_ERROR_IN_PARAMETERS; return MU_ERROR_IN_PARAMETERS;
} }
@ -412,7 +412,7 @@ mu_cmd_extract (MuConfig *opts, GError **err)
else { else {
rv = mu_util_check_dir(opts->targetdir, FALSE, TRUE); rv = mu_util_check_dir(opts->targetdir, FALSE, TRUE);
if (!rv) 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", "target '%s' is not a writable directory",
opts->targetdir); opts->targetdir);
else else

View File

@ -86,7 +86,7 @@ sort_field_from_string (const char* fieldstr, GError **err)
mfid = mu_msg_field_id_from_shortcut(fieldstr[0], mfid = mu_msg_field_id_from_shortcut(fieldstr[0],
FALSE); FALSE);
if (mfid == MU_MSG_FIELD_ID_NONE) 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); "not a valid sort field: '%s'\n", fieldstr);
return mfid; return mfid;
} }
@ -159,7 +159,7 @@ exec_cmd (const char *path, const char *cmd, GError **err)
gboolean rv; gboolean rv;
if (access (path, R_OK) != 0) { 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)); "cannot read %s: %s", path, strerror(errno));
return FALSE; return FALSE;
} }
@ -209,7 +209,7 @@ exec_cmd_on_query (MuQuery *xapian, const gchar *query, MuConfig *opts,
} }
if (count == 0) { 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"); "no matches for search expression");
return FALSE; return FALSE;
} }
@ -231,20 +231,20 @@ format_params_valid (MuConfig *opts, GError **err)
case MU_CONFIG_FORMAT_XQUERY: case MU_CONFIG_FORMAT_XQUERY:
break; break;
default: 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", "invalid output format %s",
opts->formatstr ? opts->formatstr : "<none>"); opts->formatstr ? opts->formatstr : "<none>");
return FALSE; return FALSE;
} }
if (opts->format == MU_CONFIG_FORMAT_LINKS && !opts->linksdir) { 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"); "missing --linksdir argument");
return FALSE; return FALSE;
} }
if (opts->linksdir && opts->format != MU_CONFIG_FORMAT_LINKS) { 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"); "--linksdir is only valid with --format=links");
return FALSE; return FALSE;
} }
@ -262,7 +262,7 @@ query_params_valid (MuConfig *opts, GError **err)
if (mu_util_check_dir (xpath, TRUE, FALSE)) if (mu_util_check_dir (xpath, TRUE, FALSE))
return TRUE; 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); "'%s' is not a readable Xapian directory", xpath);
return FALSE; return FALSE;
} }
@ -277,14 +277,14 @@ resolve_bookmark (MuConfig *opts, GError **err)
bmfile = mu_runtime_path (MU_RUNTIME_PATH_BOOKMARKS); bmfile = mu_runtime_path (MU_RUNTIME_PATH_BOOKMARKS);
bm = mu_bookmarks_new (bmfile); bm = mu_bookmarks_new (bmfile);
if (!bm) { 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); "failed to open bookmarks file '%s'", bmfile);
return FALSE; return FALSE;
} }
val = (gchar*)mu_bookmarks_lookup (bm, opts->bookmark); val = (gchar*)mu_bookmarks_lookup (bm, opts->bookmark);
if (!val) 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); "bookmark '%s' not found", opts->bookmark);
else else
val = g_strdup (val); val = g_strdup (val);
@ -330,7 +330,7 @@ get_query (MuConfig *opts, GError **err)
/* params[0] is 'find', actual search params start with [1] */ /* params[0] is 'find', actual search params start with [1] */
if (!opts->bookmark && !opts->params[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"); "error in parameters");
return NULL; return NULL;
} }
@ -368,13 +368,13 @@ get_query_obj (MuStore *store, GError **err)
return NULL; return NULL;
if (count == 0) { 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"); "the database is empty");
return NULL; return NULL;
} }
if (mu_store_needs_upgrade (store)) { 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"); "the database is not up-to-date");
return NULL; return NULL;
} }
@ -468,13 +468,13 @@ output_links (MuMsgIter *iter, const char* linksdir, gboolean clearlinks,
} }
if (errcount > 0) { 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); "error linking %u message(s)", (unsigned)errcount);
return FALSE; return FALSE;
} }
if (count == 0) { 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"); "no matches for search expression");
return FALSE; return FALSE;
} }
@ -686,7 +686,7 @@ output_plain (MuMsgIter *iter, const char *fields, gboolean summary,
} }
if (count == 0) { 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"); "no existing matches for search expression");
return FALSE; return FALSE;
} }
@ -746,7 +746,7 @@ output_sexp (MuMsgIter *iter, gboolean threads,
} }
if (count == 0) { 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"); "no existing matches for search expression");
return FALSE; return FALSE;
} }
@ -803,7 +803,7 @@ output_xml (MuMsgIter *iter, gboolean include_unreadable, GError **err)
g_print ("</messages>\n"); g_print ("</messages>\n");
if (count == 0) { 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"); "no existing matches for search expression");
return FALSE; return FALSE;
} }

View File

@ -75,19 +75,19 @@ check_params (MuConfig *opts, GError **err)
{ {
/* param[0] == 'index' there should be no param[1] */ /* param[0] == 'index' there should be no param[1] */
if (opts->params[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"); "unexpected parameter");
return FALSE; return FALSE;
} }
if (opts->xbatchsize < 0) { 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"); "the batch size must be non-negative");
return FALSE; return FALSE;
} }
if (opts->max_msg_size < 0) { 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"); "the maximum message size must be non-negative");
return FALSE; return FALSE;
} }
@ -99,20 +99,20 @@ static gboolean
check_maildir (const char *maildir, GError **err) check_maildir (const char *maildir, GError **err)
{ {
if (!maildir) { 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="); "no maildir to work on; use --maildir=");
return FALSE; return FALSE;
} }
if (!g_path_is_absolute (maildir)) { 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 path '%s' is not absolute",
maildir); maildir);
return FALSE; return FALSE;
} }
if (!mu_util_check_dir (maildir, TRUE, 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); "not a valid Maildir: %s", maildir);
return FALSE; return FALSE;
} }
@ -347,7 +347,7 @@ cmd_index (MuIndex *midx, MuConfig *opts, MuIndexStats *stats,
if (rv == MU_STOP) if (rv == MU_STOP)
rv = MU_OK; rv = MU_OK;
} else } else
g_set_error (err, 0, rv, "error while indexing"); g_set_error (err, MU_ERROR_DOMAIN, rv, "error while indexing");
return rv; return rv;
} }

View File

@ -428,7 +428,7 @@ get_docid_from_msgid (MuQuery *query, const char *str, GError **err)
docid = MU_STORE_INVALID_DOCID; docid = MU_STORE_INVALID_DOCID;
if (!iter || mu_msg_iter_is_done (iter)) if (!iter || mu_msg_iter_is_done (iter))
if (err && *err == NULL) 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); "could not find message %s", str);
else else
return docid; return docid;
@ -436,7 +436,7 @@ get_docid_from_msgid (MuQuery *query, const char *str, GError **err)
MuMsg *msg; MuMsg *msg;
msg = mu_msg_iter_get_msg_floating (iter); msg = mu_msg_iter_get_msg_floating (iter);
if (!mu_msg_is_readable(msg)) { 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", "'%s' is not readable",
mu_msg_get_path(msg)); mu_msg_get_path(msg));
} else } else
@ -462,7 +462,7 @@ get_docid (MuQuery *query, const char *str, GError **err)
docid = strtol (str, &endptr, 10); docid = strtol (str, &endptr, 10);
if (*endptr != '\0') { if (*endptr != '\0') {
if (!query) { 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); "invalid docid '%s'", str);
return MU_STORE_INVALID_DOCID; return MU_STORE_INVALID_DOCID;
} else } else
@ -981,7 +981,7 @@ handle_command (Cmd cmd, MuStore *store, MuQuery *query, GSList *args,
case CMD_IGNORE: return TRUE; case CMD_IGNORE: return TRUE;
default: default:
g_set_error (err, 0, MU_ERROR_IN_PARAMETERS, g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_IN_PARAMETERS,
"unknown command"); "unknown command");
return FALSE; return FALSE;
} }

View File

@ -202,7 +202,7 @@ view_params_valid (MuConfig *opts, GError **err)
{ {
/* note: params[0] will be 'view' */ /* note: params[0] will be 'view' */
if (!opts->params[0] || !opts->params[1]) { 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"); "error in parameters");
return FALSE; return FALSE;
} }
@ -212,7 +212,7 @@ view_params_valid (MuConfig *opts, GError **err)
case MU_CONFIG_FORMAT_SEXP: case MU_CONFIG_FORMAT_SEXP:
break; break;
default: default:
g_set_error (err, 0, MU_ERROR_IN_PARAMETERS, g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_IN_PARAMETERS,
"invalid output format"); "invalid output format");
return FALSE; return FALSE;
} }
@ -264,7 +264,7 @@ mu_cmd_mkdir (MuConfig *opts, GError **err)
MU_ERROR_INTERNAL); MU_ERROR_INTERNAL);
if (!opts->params[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,
"missing directory parameter"); "missing directory parameter");
return MU_ERROR_IN_PARAMETERS; return MU_ERROR_IN_PARAMETERS;
} }
@ -320,7 +320,7 @@ mu_cmd_add (MuStore *store, MuConfig *opts, GError **err)
/* note: params[0] will be 'add' */ /* note: params[0] will be 'add' */
if (!opts->params[0] || !opts->params[1]) { if (!opts->params[0] || !opts->params[1]) {
g_message ("usage: mu add <file> [<files>]"); 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"); "missing source and/or target");
return MU_ERROR_IN_PARAMETERS; return MU_ERROR_IN_PARAMETERS;
} }
@ -339,7 +339,7 @@ mu_cmd_add (MuStore *store, MuConfig *opts, GError **err)
} }
if (!allok) { 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)"); "store failed for some message(s)");
return MU_ERROR_XAPIAN_STORE_FAILED; 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' */ /* note: params[0] will be 'add' */
if (!opts->params[0] || !opts->params[1]) { if (!opts->params[0] || !opts->params[1]) {
g_warning ("usage: mu remove <file> [<files>]"); 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"); "missing source and/or target");
return MU_ERROR_IN_PARAMETERS; return MU_ERROR_IN_PARAMETERS;
} }
@ -379,7 +379,7 @@ mu_cmd_remove (MuStore *store, MuConfig *opts, GError **err)
} }
if (!allok) { 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)"); "remove failed for some message(s)");
return MU_ERROR_XAPIAN_REMOVE_FAILED; return MU_ERROR_XAPIAN_REMOVE_FAILED;
} }
@ -438,7 +438,7 @@ check_params (MuConfig *opts, GError **err)
{ {
if (!opts->params||!opts->params[0]) {/* no command? */ if (!opts->params||!opts->params[0]) {/* no command? */
show_usage (); 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; return FALSE;
} }
@ -476,7 +476,7 @@ mu_cmd_execute (MuConfig *opts, GError **err)
return with_store (mu_cmd_server, opts, FALSE, err); return with_store (mu_cmd_server, opts, FALSE, err);
default: default:
show_usage (); 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); "unknown command '%s'", opts->cmdstr);
return MU_ERROR_IN_PARAMETERS; return MU_ERROR_IN_PARAMETERS;
} }

View File

@ -89,7 +89,7 @@ create_maildir (const char *path, mode_t mode, GError **err)
* there's already such a dir, but with the wrong * there's already such a dir, but with the wrong
* permissions; so we need to check */ * permissions; so we need to check */
if (rv != 0 || !mu_util_check_dir(fullpath, TRUE, TRUE)) { 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", "creating dir failed for %s: %s",
fullpath, fullpath,
strerror (errno)); strerror (errno));
@ -115,7 +115,7 @@ create_noindex (const char *path, GError **err)
/* note, if the 'close' failed, creation may still have /* note, if the 'close' failed, creation may still have
* succeeded...*/ * succeeded...*/
if (fd < 0 || close (fd) != 0) { 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", "error in create_noindex: %s",
strerror (errno)); strerror (errno));
return FALSE; return FALSE;
@ -208,7 +208,7 @@ mu_maildir_link (const char* src, const char *targetpath, GError **err)
rv = symlink (src, targetfullpath); rv = symlink (src, targetfullpath);
if (rv != 0) { 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", "error creating link %s => %s: %s",
targetfullpath, src, strerror (errno)); targetfullpath, src, strerror (errno));
g_free (targetfullpath); g_free (targetfullpath);
@ -617,7 +617,7 @@ clear_links (const gchar* dirname, DIR *dir, GError **err)
} }
if (errno != 0) 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)); "file error: %s", strerror(errno));
return (rv == FALSE && errno == 0); return (rv == FALSE && errno == 0);
@ -634,7 +634,7 @@ mu_maildir_clear_links (const gchar* path, GError **err)
dir = opendir (path); dir = opendir (path);
if (!dir) { 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, "failed to open %s: %s", path,
strerror(errno)); strerror(errno));
return FALSE; return FALSE;
@ -791,25 +791,25 @@ static gboolean
msg_move_check_pre (const gchar *src, const gchar *dst, GError **err) msg_move_check_pre (const gchar *src, const gchar *dst, GError **err)
{ {
if (!g_path_is_absolute(src)) { 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); "source is not an absolute path: '%s'", src);
return FALSE; return FALSE;
} }
if (!g_path_is_absolute(dst)) { 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); "target is not an absolute path: '%s'", dst);
return FALSE; return FALSE;
} }
if (access (src, R_OK) != 0) { 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); src);
return FALSE; return FALSE;
} }
if (access (dst, F_OK) == 0) { 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); dst);
return FALSE; 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? */ /* double check -- is the target really there? */
if (access (dst, F_OK) != 0) { 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); dst);
return FALSE; return FALSE;
} }
if (access (src, F_OK) == 0) { 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); src);
return FALSE; return FALSE;
} }
@ -844,7 +844,7 @@ msg_move (const char* src, const char *dst, GError **err)
return FALSE; return FALSE;
if (rename (src, dst) != 0) { 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); src, dst);
return FALSE; return FALSE;
} }
@ -869,7 +869,7 @@ mu_maildir_move_message (const char* oldpath, const char* targetmdir,
newfullpath = mu_maildir_get_new_path (oldpath, targetmdir, newfullpath = mu_maildir_get_new_path (oldpath, targetmdir,
newflags); newflags);
if (!newfullpath) { 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"); "failed to determine target full path");
return FALSE; return FALSE;
} }
@ -878,7 +878,7 @@ mu_maildir_move_message (const char* oldpath, const char* targetmdir,
src_is_target = (g_strcmp0 (oldpath, newfullpath) == 0); src_is_target = (g_strcmp0 (oldpath, newfullpath) == 0);
if (!ignore_dups && src_is_target) { 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"); "target equals source");
return FALSE; return FALSE;
} }

View File

@ -100,21 +100,21 @@ init_file_metadata (MuMsgFile *self, const char* path, const gchar* mdir,
struct stat statbuf; struct stat statbuf;
if (access (path, R_OK) != 0) { 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", "cannot read file %s: %s",
path, strerror(errno)); path, strerror(errno));
return FALSE; return FALSE;
} }
if (stat (path, &statbuf) < 0) { 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", "cannot stat %s: %s",
path, strerror(errno)); path, strerror(errno));
return FALSE; return FALSE;
} }
if (!S_ISREG(statbuf.st_mode)) { 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); "not a regular file: %s", path);
return FALSE; return FALSE;
} }
@ -138,7 +138,7 @@ get_mime_stream (MuMsgFile *self, const char *path, GError **err)
file = fopen (path, "r"); file = fopen (path, "r");
if (!file) { if (!file) {
g_set_error (err, 0, MU_ERROR_FILE, g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_FILE,
"cannot open %s: %s", "cannot open %s: %s",
path, strerror (errno)); path, strerror (errno));
return NULL; return NULL;
@ -146,7 +146,7 @@ get_mime_stream (MuMsgFile *self, const char *path, GError **err)
stream = g_mime_stream_file_new (file); stream = g_mime_stream_file_new (file);
if (!stream) { 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", "cannot create mime stream for %s",
path); path);
fclose (file); fclose (file);
@ -169,7 +169,7 @@ init_mime_msg (MuMsgFile *self, const char* path, GError **err)
parser = g_mime_parser_new_with_stream (stream); parser = g_mime_parser_new_with_stream (stream);
g_object_unref (stream); g_object_unref (stream);
if (!parser) { 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", "%s: cannot create mime parser for %s",
__FUNCTION__, path); __FUNCTION__, path);
return FALSE; 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); self->_mime_msg = g_mime_parser_construct_message (parser);
g_object_unref (parser); g_object_unref (parser);
if (!self->_mime_msg) { 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", "%s: cannot construct mime message for %s",
__FUNCTION__, path); __FUNCTION__, path);
return FALSE; return FALSE;

View File

@ -337,7 +337,7 @@ write_part_to_fd (GMimePart *part, int fd, GError **err)
stream = g_mime_stream_fs_new (fd); stream = g_mime_stream_fs_new (fd);
if (!GMIME_IS_STREAM(stream)) { 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"); "failed to create stream");
return FALSE; return FALSE;
} }
@ -345,7 +345,7 @@ write_part_to_fd (GMimePart *part, int fd, GError **err)
wrapper = g_mime_part_get_content_object (part); wrapper = g_mime_part_get_content_object (part);
if (!GMIME_IS_DATA_WRAPPER(wrapper)) { 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"); "failed to create wrapper");
g_object_unref (stream); g_object_unref (stream);
return FALSE; 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); rv = g_mime_data_wrapper_write_to_stream (wrapper, stream);
if (rv == -1) 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"); "failed to write to stream");
g_object_unref (wrapper); 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); str = g_mime_object_to_string (obj);
if (!str) { 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"); "could not get string from object");
return FALSE; return FALSE;
} }
if (write (fd, str, strlen(str)) == -1) { 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", "failed to write object: %s",
strerror(errno)); strerror(errno));
return FALSE; return FALSE;
@ -405,7 +405,7 @@ save_mime_object (GMimeObject *obj, const char *fullpath,
/* ok, try to create the file */ /* ok, try to create the file */
fd = mu_util_create_writeable_fd (fullpath, 0600, overwrite); fd = mu_util_create_writeable_fd (fullpath, 0600, overwrite);
if (fd == -1) { 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", "could not open '%s' for writing: %s",
fullpath, errno ? strerror(errno) : "error"); fullpath, errno ? strerror(errno) : "error");
return FALSE; return FALSE;
@ -417,7 +417,7 @@ save_mime_object (GMimeObject *obj, const char *fullpath,
rv = write_object_to_fd (obj, fd, err); rv = write_object_to_fd (obj, fd, err);
if (close (fd) != 0 && !err) { /* don't write on top of old 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", "could not close '%s': %s",
fullpath, errno ? strerror(errno) : "error"); fullpath, errno ? strerror(errno) : "error");
return FALSE; return FALSE;
@ -438,7 +438,7 @@ mu_msg_part_filepath (MuMsg *msg, const char* targetdir, guint partidx,
return NULL; return NULL;
if (!(mobj = find_part (msg, partidx))) { 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; return NULL;
} }
@ -455,7 +455,7 @@ mu_msg_part_filepath (MuMsg *msg, const char* targetdir, guint partidx,
fname = get_filename_for_mime_message_part fname = get_filename_for_mime_message_part
(g_mime_message_part_get_message((GMimeMessagePart*)mobj)); (g_mime_message_part_get_message((GMimeMessagePart*)mobj));
else { 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); partidx);
return NULL; return NULL;
} }
@ -521,7 +521,7 @@ mu_msg_part_save (MuMsg *msg, const char *fullpath, guint partidx,
part = find_part (msg, partidx); part = find_part (msg, partidx);
if (!is_part_or_message_part (part)) { 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", "unexpected type %s for part %u",
G_OBJECT_TYPE_NAME((GObject*)part), G_OBJECT_TYPE_NAME((GObject*)part),
partidx); partidx);
@ -540,7 +540,7 @@ mu_msg_part_save_temp (MuMsg *msg, guint partidx, GError **err)
filepath = mu_msg_part_filepath_cache (msg, partidx); filepath = mu_msg_part_filepath_cache (msg, partidx);
if (!filepath) { 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"); "Could not get temp filepath");
return NULL; return NULL;
} }

View File

@ -1,6 +1,6 @@
/* -*- mode: c; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- /* -*- 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 ** 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 ** 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)) { if (G_UNLIKELY(!_gmime_initialized)) {
gmime_init (); gmime_init ();
g_atexit (gmime_uninit); atexit (gmime_uninit);
} }
msgfile = mu_msg_file_new (path, mdir, err); 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)) { if (G_UNLIKELY(!_gmime_initialized)) {
gmime_init (); gmime_init ();
g_atexit (gmime_uninit); atexit (gmime_uninit);
} }
msgdoc = mu_msg_doc_new (doc, err); 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 is the maildir stored in the message, e.g. '/foo' */
maildir = mu_msg_get_maildir(msg); maildir = mu_msg_get_maildir(msg);
if (!maildir) { if (!maildir) {
g_set_error (err, 0, MU_ERROR_GMIME, g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_GMIME,
"message without maildir"); "message without maildir");
return NULL; 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 /* special case for the top-level '/' maildir, and
* remember not_top_level */ * remember not_top_level */
(not_top_level = (g_strcmp0 (maildir, "/") != 0))) { (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')", "path is '%s', but maildir is '%s' ('%s')",
rootmaildir, mu_msg_get_maildir(msg), rootmaildir, mu_msg_get_maildir(msg),
mu_msg_get_path (msg)); mu_msg_get_path (msg));

View File

@ -213,7 +213,7 @@ get_query (MuQuery *mqx, const char* searchexpr, GError **err)
} catch (...) { } catch (...) {
/* some error occured */ /* 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"); "parse error in query");
g_free (preprocessed); g_free (preprocessed);
throw; throw;
@ -258,7 +258,7 @@ mu_query_new (MuStore *store, GError **err)
g_return_val_if_fail (store, NULL); g_return_val_if_fail (store, NULL);
if (mu_store_count (store, err) == 0) { 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"); "database is empty");
return 0; return 0;
} }

View File

@ -78,7 +78,7 @@ mu_store_new_read_only (const char* xpath, GError **err)
return new _MuStore (xpath); return new _MuStore (xpath);
} catch (const MuStoreError& merr) { } 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()); merr.what().c_str());
} MU_XAPIAN_CATCH_BLOCK_G_ERROR(err, MU_ERROR_XAPIAN); } MU_XAPIAN_CATCH_BLOCK_G_ERROR(err, MU_ERROR_XAPIAN);

View File

@ -366,7 +366,7 @@ leave:
*strlst = str; *strlst = str;
return g_string_free (gstr, FALSE); return g_string_free (gstr, FALSE);
err: 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)); "error parsing string '%s'", g_strchug(*strlst));
*strlst = NULL; *strlst = NULL;
return g_string_free (gstr, TRUE); return g_string_free (gstr, TRUE);

View File

@ -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* const char*
mu_util_cache_dir (void) mu_util_cache_dir (void)
{ {

View File

@ -185,6 +185,19 @@ gboolean mu_util_play (const char *path,
gboolean allow_local, gboolean allow_remote); 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 * convert a string array in to a string, with the elements separated
* by ' ' * by ' '