X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fshared%2Futil.h;h=cd13457528c14d2727483b1497e673adc404c9db;hp=18494f14f2ff31a6ead6507733fd10a1996a22fc;hb=fabe5c0e5fce730aa66e10a9c4f9fdd443d7aeda;hpb=4d1a69043862ed979642f5688097160355d4cc81 diff --git a/src/shared/util.h b/src/shared/util.h index 18494f14f..cd1345752 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -567,3 +567,15 @@ char *strreplace(const char *text, const char *old_string, const char *new_strin char *strip_tab_ansi(char **p, size_t *l); int on_ac_power(void); + +int search_and_fopen(const char *path, const char *mode, const char **search, FILE **_f); +int search_and_fopen_nulstr(const char *path, const char *mode, const char *search, FILE **_f); + +#define FOREACH_LINE(f, line, on_error) \ + for (char line[LINE_MAX]; !feof(f); ) \ + if (!fgets(line, sizeof(line), f)) { \ + if (ferror(f)) { \ + on_error; \ + } \ + break; \ + } else