Found in "gnokii-working" directory, some November-patches version
[gnokii.git] / include / misc.h
index 2a16e51..435314c 100644 (file)
@@ -1,32 +1,35 @@
 /*
 
+  $Id$
+
   G N O K I I
 
   A Linux/Unix toolset and driver for Nokia mobile phones.
 
+  Copyright (C) 1999, 2000 Hugh Blemings & Pavel Janík ml.
+
   Released under the terms of the GNU GPL, see file COPYING for more details.
 
   Header file for miscellaneous defines, typedefs etc.
 
-*/
+  $Log$
+  Revision 1.1.1.4  2002/04/03 00:08:19  short
+  Found in "gnokii-working" directory, some November-patches version
 
-#ifndef __misc_h
-#define __misc_h    
+  Revision 1.25  2001/07/03 15:27:14  pkot
+  AT commands for SMS handling support (Tamas Bondar)
+  Small at-emulator code cleanup (me)
 
-#include <stdio.h>
-#include <stdlib.h>
+  Revision 1.24  2001/06/28 00:28:46  pkot
+  Small docs updates (Pawel Kot)
 
-#ifndef VC6
-  #include "config.h"
 
-  /* Use gsprintf instead of sprintf and sprintf */
-  #ifdef HAVE_SNPRINTF
-  # define gsprintf(a, b, c...) snprintf(a, b, c)
-  #else
-  # define gsprintf(a, b, c...) sprintf(a, c)
-  #endif
+*/
 
-#endif
+#ifndef __misc_h
+#define __misc_h    
+
+#include <config.h>
 
 /* Some general defines. */
 
   #define bool int
 #endif
 
-/* This one is for NLS. */
+#define ARRAY_LEN(x) (sizeof((x))/sizeof((x)[0]))
 
-#ifdef USE_NLS
+#define SAFE_STRNCPY(dest,src,n) do { \
+       strncpy((dest),(src),(n)); \
+       if ((n)>0) \
+               (dest)[(n)-1]='\0'; \
+       } while (0)
 
-  #ifndef VC6
-    #include <libintl.h>
-    #define _(x) gettext(x)
-  #else
-    #define _(x) (x)
-  #endif
+#define SAFE_STRNCPY_SIZEOF(dest,src) \
+       SAFE_STRNCPY((dest),(src),sizeof((dest)))
+
+/* Stolen from <glib.h>: */
+#if    __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)
+#define G_GNUC_PRINTF( format_idx, arg_idx )   \
+  __attribute__((format (printf, format_idx, arg_idx)))
+#else  /* !__GNUC__ */
+#define G_GNUC_PRINTF( format_idx, arg_idx )
+#endif /* !__GNUC__ */
+
+#define GNOKII_MAX(a, b)  (((a) > (b)) ? (a) : (b))
+#define GNOKII_MIN(a, b)  (((a) < (b)) ? (a) : (b))
+
+/* A define to make debug printfs neat */
+#ifndef DEBUG
+#define dprintf(a...) do { } while (0)
+#else
+#define dprintf(a...) do { fprintf(stderr, a); fflush(stderr); } while (0) 
+#endif
 
+/* Use gsprintf instead of sprintf and sprintf */
+#ifdef HAVE_SNPRINTF
+# define gsprintf(a, b, c...) snprintf(a, b, c)
+#else
+# define gsprintf(a, b, c...) sprintf(a, c)
+#endif
+#ifdef HAVE_VSNPRINTF
+# define gvsprintf(a, b, c...) vsnprintf(a, b, c)
+#else
+# define gvsprintf(a, b, c...) vsprintf(a, c)
+#endif
+#ifdef HAVE_ASPRINTF
+# define gasprintf(a...) asprintf(a)
+#else
+#include <stdarg.h>
+extern int gasprintf(char **destp,const char *fmt,...);
+#endif
+#ifdef HAVE_VASPRINTF
+# define gvasprintf(a...) vasprintf(a)
+#else
+#include <stdarg.h>
+extern int gvasprintf(char **destp,const char *fmt,va_list ap);
+#endif
+
+/* Get rid of long defines. Use #if __unices__ */
+#define __unices__ defined(__svr4__) || defined(__FreeBSD__) || defined(__bsdi__)
+
+/* This one is for NLS. */
+#ifdef USE_NLS
+  #include <libintl.h>
+  #define _(x) gettext(x)
 #else
   #define _(x) (x)
 #endif /* USE_NLS */
+#define N_(x) (x)
 
 /* Definitions for u8, u16, u32 and u64, borrowed from
    /usr/src/linux/include/asm-i38/types.h */
 /* Add here any timer operations which are not supported by libc5 */
 
 #ifndef HAVE_TIMEOPS
+#ifdef WIN32
+
+#include <windows.h>
+#include <sys/timeb.h>
+#define timersub(a, b, result)
+  do {
+    (result)->tv_sec = (a)->time - (b)->time;
+    (result)->tv_usec = ((a)->millitm - (b)->millitm) * 1000;
+    if ((result)->tv_usec < 0) {
+      --(result)->tv_sec;
+      (result)->tv_usec += 1000000;
+    }
+  } while (0)
+#define gettimeofday(a, b) _ftime(a)
+
+#else
 #include <sys/time.h>
 
 #ifndef timersub
   } while (0)
 #endif
 
+#endif /* WIN32 */
 #endif /* HAVE_TIMEOPS */
 
-#include <stdio.h>
 
+#include <stdio.h>
 extern int GetLine(FILE *File, char *Line, int count);
 
-int mem_to_int(const char str[], int len);
-
-void hexdump(u16 MessageLength, u8 *MessageBuffer);
-void txhexdump(u16 MessageLength, u8 *MessageBuffer);
+/* For models table */
+typedef struct {
+  char *model;
+  char *number;
+  int flags;
+} PhoneModel;
+
+#define PM_CALLERGROUP   0x0001
+#define PM_NETMONITOR    0x0002
+#define PM_KEYBOARD      0x0004
+#define PM_SMS           0x0008
+#define PM_CALENDAR      0x0010
+#define PM_DTMF                  0x0020
+#define PM_DATA                  0x0040
+#define PM_SPEEDDIAL     0x0080
+#define PM_EXTPBK         0x0100
+#define PM_AUTHENTICATION 0x0200
+
+extern char *GetModel (const char *);
+extern PhoneModel *GetPhoneModel (const char *);
 
 #endif /* __misc_h */
+