Message ID | e4768fb11c5e7584b2211559c26d974517e70171.1442396165.git.zhaolei@cn.fujitsu.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Wed, Sep 16, 2015 at 05:40:46PM +0800, Zhao Lei wrote: > +static inline void __veprintf(const char *prefix, const char *format, > + va_list ap) > +{ > + if (prefix) > + fprintf(stderr, "%s", prefix); > + vfprintf(stderr, format, ap); I'm not sure we need this helper. All it does it prints a fixed string, we can simply add fputs("prefix", stderr) into warning/error functions. > +static inline int warning_on(int condition, const char *fmt, ...) > +{ > + if (!condition) > + return 0; > + > + va_list args; Please do not put declaration(s) after statements. > +static inline int error_on(int condition, const char *fmt, ...) > +{ > + if (!condition) > + return 0; > + > + va_list args; dtto > + > + va_start(args, fmt); > + __veprintf("ERROR: ", fmt, args); > + va_end(args); > + > + return 1; > +} -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi, David Sterba Thanks for review. > -----Original Message----- > From: David Sterba [mailto:dsterba@suse.cz] > Sent: Friday, September 25, 2015 6:50 PM > To: Zhao Lei <zhaolei@cn.fujitsu.com> > Cc: linux-btrfs@vger.kernel.org; Qu Wenruo <quwenruo@cn.fujitsu.com> > Subject: Re: [PATCH v2 1/2] btrfs-progs: Introduce warning and error for > common use > > On Wed, Sep 16, 2015 at 05:40:46PM +0800, Zhao Lei wrote: > > +static inline void __veprintf(const char *prefix, const char *format, > > + va_list ap) > > +{ > > + if (prefix) > > + fprintf(stderr, "%s", prefix); > > + vfprintf(stderr, format, ap); > > I'm not sure we need this helper. All it does it prints a fixed string, we can > simply add fputs("prefix", stderr) into warning/error functions. > This wrapper is to support locale in future: Make all message output by one function, then we can put locale code into it simply. But now it is hard to introduce locale, because user-land tools changes output frequently, we need to wait the output about fixed. So I removed __veprintf() in v3, we can modify it when we need. > > +static inline int warning_on(int condition, const char *fmt, ...) { > > + if (!condition) > > + return 0; > > + > > + va_list args; > > Please do not put declaration(s) after statements. > Fixed in v3. > > +static inline int error_on(int condition, const char *fmt, ...) { > > + if (!condition) > > + return 0; > > + > > + va_list args; > > dtto > Fixed in v3. Thanks Zhaolei > > + > > + va_start(args, fmt); > > + __veprintf("ERROR: ", fmt, args); > > + va_end(args); > > + > > + return 1; > > +} -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/utils.h b/utils.h index dce0a47..c63e372 100644 --- a/utils.h +++ b/utils.h @@ -22,6 +22,7 @@ #include <sys/stat.h> #include "ctree.h" #include <dirent.h> +#include <stdarg.h> #define BTRFS_MKFS_SYSTEM_GROUP_SIZE (4 * 1024 * 1024) #define BTRFS_MKFS_SMALL_VOLUME_SIZE (1024 * 1024 * 1024) @@ -269,4 +270,58 @@ const char *get_argv0_buf(void); unsigned int get_unit_mode_from_arg(int *argc, char *argv[], int df_mode); +static inline void __veprintf(const char *prefix, const char *format, + va_list ap) +{ + if (prefix) + fprintf(stderr, "%s", prefix); + vfprintf(stderr, format, ap); +} + +static inline void warning(const char *fmt, ...) +{ + va_list args; + + va_start(args, fmt); + __veprintf("WARNING: ", fmt, args); + va_end(args); +} + +static inline void error(const char *fmt, ...) +{ + va_list args; + + va_start(args, fmt); + __veprintf("ERROR: ", fmt, args); + va_end(args); +} + +static inline int warning_on(int condition, const char *fmt, ...) +{ + if (!condition) + return 0; + + va_list args; + + va_start(args, fmt); + __veprintf("WARNING: ", fmt, args); + va_end(args); + + return 1; +} + +static inline int error_on(int condition, const char *fmt, ...) +{ + if (!condition) + return 0; + + va_list args; + + va_start(args, fmt); + __veprintf("ERROR: ", fmt, args); + va_end(args); + + return 1; +} + #endif