mail-notification

Fork of Jean-Yves Lefort's mail-notification, a tray icon to notify of new mail
git clone https://code.djc.id.au/git/mail-notification/

jbsrc/lib/src/core/jb-util.h (4686B) - raw

      1 /*
      2  * JB, the Jean-Yves Lefort's Build System
      3  * Copyright (C) 2008 Jean-Yves Lefort <jylefort@brutele.be>
      4  *
      5  * This program is free software; you can redistribute it and/or modify
      6  * it under the terms of the GNU General Public License as published by
      7  * the Free Software Foundation; either version 3 of the License, or
      8  * (at your option) any later version.
      9  *
     10  * This program is distributed in the hope that it will be useful,
     11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13  * GNU General Public License for more details.
     14  *
     15  * You should have received a copy of the GNU General Public License along
     16  * with this program; if not, write to the Free Software Foundation, Inc.,
     17  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
     18  */
     19 
     20 #ifndef _JB_UTIL_H
     21 #define _JB_UTIL_H
     22 
     23 #include <glib.h>
     24 #include <sys/types.h>
     25 #include <sys/stat.h>
     26 
     27 #define JB_SEPARATOR "==============================================================================="
     28 
     29 #define JB_MODE_FORMAT	"0%03o"
     30 
     31 void jb_set_log_file (const char *filename);
     32 void jb_log (const char *format, ...) G_GNUC_PRINTF(1, 2);
     33 
     34 void jb_message (const char *format, ...) G_GNUC_PRINTF(1, 2);
     35 void jb_message_expand (const char *str, ...) G_GNUC_NULL_TERMINATED;
     36 
     37 void jb_message_action (const char *format, ...) G_GNUC_PRINTF(1, 2);
     38 
     39 void jb_message_checking (const char *format, ...) G_GNUC_PRINTF(1, 2);
     40 
     41 void jb_message_result_bool (gboolean result);
     42 void jb_message_result_string (const char *result);
     43 void jb_message_result_string_format (const char *format, ...) G_GNUC_PRINTF(1, 2);
     44 
     45 void jb_warning (const char *format, ...) G_GNUC_PRINTF(1, 2);
     46 void jb_warning_expand (const char *str, ...) G_GNUC_NULL_TERMINATED;
     47 
     48 /*
     49  * Do not use this function to report errors that are caused by an
     50  * invalid jb.c. They are programming errors, use g_error().
     51  */
     52 void jb_error (const char *format, ...) G_GNUC_PRINTF(1, 2) G_GNUC_NORETURN;
     53 void jb_error_expand (const char *str, ...) G_GNUC_NULL_TERMINATED G_GNUC_NORETURN;
     54 
     55 #define JB_LIST_FOREACH(var, head)		\
     56   for ((var) = (head);				\
     57        (var) != NULL;				\
     58        (var) = (var)->next)
     59 
     60 void jb_g_slist_free_deep (GSList *list);
     61 void jb_g_slist_free_deep_custom (GSList *list,
     62 				  GFunc element_free_func,
     63 				  gpointer user_data);
     64 
     65 #define JB_STRDUP_VPRINTF(result, format) \
     66   G_STMT_START{							\
     67     va_list _jb_strdup_vprintf_args;				\
     68 								\
     69     va_start(_jb_strdup_vprintf_args, format);			\
     70     result = g_strdup_vprintf(format, _jb_strdup_vprintf_args);	\
     71     va_end(_jb_strdup_vprintf_args);				\
     72   }G_STMT_END
     73 
     74 char *jb_strdelimit (const char *str, const char *delimiters, char new_delimiter);
     75 
     76 char *jb_strip_newline (const char *str);
     77 
     78 char *jb_c_quote (const char *str);
     79 
     80 char *jb_strip_extension (const char *filename);
     81 
     82 char *jb_strip_chars (const char *str, const char *chars);
     83 
     84 char *jb_utf8_escape (const char *str);
     85 
     86 gboolean jb_parse_uint32 (const char *str, int base, guint32 *value, GError **err);
     87 gboolean jb_parse_uint64 (const char *str, int base, guint64 *value, GError **err);
     88 
     89 gboolean jb_write_file (const char *filename, const char *contents, GError **err);
     90 void jb_write_file_or_exit (const char *filename, const char *contents);
     91 
     92 char *jb_read_file (const char *filename, GError **err);
     93 char *jb_read_file_or_exit (const char *filename);
     94 
     95 GSList *jb_match_files (const char *pattern);
     96 
     97 void jb_chdir (const char *path);
     98 
     99 void jb_mkdir (const char *pathname);
    100 void jb_mkdir_of_file (const char *filename);
    101 
    102 void jb_rename (const char *oldpath, const char *newpath);
    103 
    104 void jb_chmod (const char *path, mode_t mode);
    105 
    106 gboolean jb_fchown_by_name (int fd,
    107 			    const char *owner,
    108 			    const char *group,
    109 			    GError **err);
    110 
    111 void jb_rmtree (const char *dir);
    112 
    113 void jb_subst (const char *infile,
    114 	       const char *outfile,
    115 	       GHashTable *variables);
    116 
    117 gboolean jb_exec (char **standard_output,
    118 		  char **standard_error,
    119 		  const char *format,
    120 		  ...) G_GNUC_PRINTF(3, 4);
    121 gboolean jb_exec_expand (char **standard_output,
    122 			 char **standard_error,
    123 			 const char *str,
    124 			 ...) G_GNUC_NULL_TERMINATED;
    125 
    126 typedef GHashTable JBStringHashSet;
    127 
    128 JBStringHashSet *jb_string_hash_set_new (void);
    129 gboolean jb_string_hash_set_add (JBStringHashSet *set, const char *value);
    130 gboolean jb_string_hash_set_contains (JBStringHashSet *set, const char *value);
    131 
    132 gboolean jb_is_uptodate (const char *dst, const char *src);
    133 gboolean jb_is_uptodate_list (const char *dst, GSList *src_list);
    134 gboolean jb_is_uptodate_list_list (GSList *dst_list, GSList *src_list);
    135 
    136 char *jb_string_list_join (GSList *list, const char *separator);
    137 
    138 #endif /* _JB_UTIL_H */