X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=utility.h;h=02c913bf7320c06f6188852c2482ed936fe385e5;hb=bcade6c14a06cfc842b41df91fdc5b9577cd68f1;hp=b172029d03436e4eaadf48d47114925e08386acc;hpb=b29d4ad70338885d81585091b80cf31eaadc48b7;p=mirror_smartmontools-debian.git diff --git a/utility.h b/utility.h index b172029..02c913b 100644 --- a/utility.h +++ b/utility.h @@ -1,10 +1,10 @@ /* * utility.h * - * Home page of code is: http://smartmontools.sourceforge.net + * Home page of code is: http://www.smartmontools.org * - * Copyright (C) 2002-11 Bruce Allen - * Copyright (C) 2008-14 Christian Franke + * Copyright (C) 2002-11 Bruce Allen + * Copyright (C) 2008-15 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 3936 2014-07-05 17:16:23Z chrfranke $" +#define UTILITY_H_CVSID "$Id: utility.h 4145 2015-10-17 12:01:38Z chrfranke $" #include #include // for regex.h (according to POSIX) @@ -98,18 +98,6 @@ 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); - -// Guess device type (ata or scsi) based on device name -// Guessing will now use Controller Type defines below - -// Moved to C++ interface -//int guess_device_type(const char * dev_name); - -// Create and return the list of devices to probe automatically -// if the DEVICESCAN option is in the smartd config file -// Moved to C++ interface -//int make_device_names (char ***devlist, const char* name); - // Replacement for exit(status) // (exit is not compatible with C++ destructors) #define EXIT(status) { throw (int)(status); } @@ -117,31 +105,14 @@ int split_selective_arg(char *s, uint64_t *start, uint64_t *stop, int *mode); #ifdef OLD_INTERFACE -// replacement for calloc() that tracks memory usage -void *Calloc(size_t nmemb, size_t size); - // Utility function to free memory -void *FreeNonZero1(void* address, int size, int whatline, const char* file); - -// Typesafe version of above -template -inline T * FreeNonZero(T * address, int size, int whatline, const char* file) - { return (T *)FreeNonZero1((void *)address, size, whatline, file); } +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); -// To help with memory checking. Use when it is known that address is -// NOT null. -void *CheckFree1(void *address, int whatline, const char* file); - -// Typesafe version of above -template -inline T * CheckFree(T * address, int whatline, const char* file) - { return (T *)CheckFree1((void *)address, whatline, file); } - #endif // OLD_INTERFACE // Compile time check of byte ordering @@ -163,17 +134,6 @@ void check_config(); // the ATA standard for packet devices to define the device type. const char *packetdevicetype(int type); -// Moved to C++ interface -//int deviceopen(const char *pathname, char *type); - -//int deviceclose(int fd); - -// Optional functions of os_*.c -#ifdef HAVE_GET_OS_VERSION_STR -// Return build host and OS version as static string -//const char * get_os_version_str(void); -#endif - // returns true if any of the n bytes are nonzero, else zero. bool nonempty(const void * data, int size); @@ -234,6 +194,8 @@ public: bool open(const char * name, const char * mode) { + if (m_file && m_owner) + fclose(m_file); m_file = fopen(name, mode); m_owner = true; return !!m_file; @@ -241,6 +203,8 @@ public: void open(FILE * f, bool owner = false) { + if (m_file && m_owner) + fclose(m_file); m_file = f; m_owner = owner; }