X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=utility.h;h=bd56a24933aae4efd55ca2bdf522714d0dbcd874;hb=413ace18d106fef69fa96d53831eebd600c9f157;hp=02c913bf7320c06f6188852c2482ed936fe385e5;hpb=6b80b4d2c7b80037c557bae53e7ff42cfda4a2cb;p=mirror_smartmontools-debian.git diff --git a/utility.h b/utility.h index 02c913b..bd56a24 100644 --- a/utility.h +++ b/utility.h @@ -4,7 +4,7 @@ * Home page of code is: http://www.smartmontools.org * * Copyright (C) 2002-11 Bruce Allen - * Copyright (C) 2008-15 Christian Franke + * Copyright (C) 2008-16 Christian Franke * Copyright (C) 2000 Michael Cornwell * * This program is free software; you can redistribute it and/or modify @@ -25,7 +25,7 @@ #ifndef UTILITY_H_ #define UTILITY_H_ -#define UTILITY_H_CVSID "$Id: utility.h 4145 2015-10-17 12:01:38Z chrfranke $" +#define UTILITY_H_CVSID "$Id: utility.h 4309 2016-04-24 14:59:15Z chrfranke $" #include #include // for regex.h (according to POSIX) @@ -92,9 +92,6 @@ void pout(const char *fmt, ...) // replacement for perror() with redirected output. void syserror(const char *message); -// Function for processing -r option in smartctl and smartd -int split_report_arg(char *s, int *i); - // Function for processing -t selective... option in smartctl int split_selective_arg(char *s, uint64_t *start, uint64_t *stop, int *mode); @@ -102,19 +99,6 @@ int split_selective_arg(char *s, uint64_t *start, uint64_t *stop, int *mode); // (exit is not compatible with C++ destructors) #define EXIT(status) { throw (int)(status); } - -#ifdef OLD_INTERFACE - -// Utility function to free memory -void *FreeNonZero(void* address, int size, int whatline, const char* file); - -// A custom version of strdup() that keeps track of how much memory is -// being allocated. If mustexist is set, it also throws an error if we -// try to duplicate a NULL string. -char *CustomStrDup(const char *ptr, int mustexist, int whatline, const char* file); - -#endif // OLD_INTERFACE - // Compile time check of byte ordering // (inline const function allows compiler to remove dead code) inline bool isbigendian() @@ -140,6 +124,15 @@ bool nonempty(const void * data, int size); // needed to fix glibc bug void FixGlibcTimeZoneBug(); +// Copy not null terminated char array to null terminated string. +// Replace non-ascii characters. Remove leading and trailing blanks. +const char * format_char_array(char * str, int strsize, const char * chr, int chrsize); + +// Version for fixed size buffers. +template +inline const char * format_char_array(char (& str)[STRSIZE], const char (& chr)[CHRSIZE]) + { return format_char_array(str, (int)STRSIZE, chr, (int)CHRSIZE); } + // Format integer with thousands separator const char * format_with_thousands_sep(char * str, int strsize, uint64_t val, const char * thousands_sep = 0);