640 lines
20 KiB
Diff
640 lines
20 KiB
Diff
diff -Nru unixodbc-gui-qt-2.3.0.orig//gtrtstQ4/autotest.h unixodbc-gui-qt-2.3.0/gtrtstQ4/autotest.h
|
|
--- unixodbc-gui-qt-2.3.0.orig//gtrtstQ4/autotest.h 1970-01-01 01:00:00.000000000 +0100
|
|
+++ unixodbc-gui-qt-2.3.0/gtrtstQ4/autotest.h 2010-12-24 21:44:28.711639647 +0100
|
|
@@ -0,0 +1,154 @@
|
|
+/*---------------------------------------------------------------------------------
|
|
+ | Title: AUTOTEST.H
|
|
+ |
|
|
+ | This file contains constants and prototypes required to compile an
|
|
+ | Auto Test DLL.
|
|
+ |
|
|
+ | Should be consistant with MS version
|
|
+ |
|
|
+ *---------------------------------------------------------------------------------*/
|
|
+#ifndef AUTOTEST_DEFS
|
|
+#define AUTOTEST_DEFS
|
|
+
|
|
+#include <stdlib.h>
|
|
+#include <string.h>
|
|
+#include "sql.h"
|
|
+#include "sqlext.h"
|
|
+#include "sqltypes.h"
|
|
+
|
|
+#ifdef __cplusplus
|
|
+extern "C" {
|
|
+#endif /* __cplusplus */
|
|
+
|
|
+#ifdef PATH_MAX
|
|
+#define _MAX_PATH PATH_MAX
|
|
+#else
|
|
+#define _MAX_PATH 256
|
|
+#endif
|
|
+
|
|
+extern HINSTANCE hLoadedInst;
|
|
+
|
|
+/*----------------------------------------------------------------------------------
|
|
+ Defines and Macros
|
|
+----------------------------------------------------------------------------------*/
|
|
+
|
|
+#define TEST_ABORTED (-1)
|
|
+
|
|
+#define AUTO_MAX_TEST_NAME 35
|
|
+#define AUTO_MAX_TESTCASE_NAME 35
|
|
+#define AUTO_MAX_TESTDESC_NAME 75
|
|
+
|
|
+#define MAXFLUSH 300
|
|
+#define MAX_USER_INFO 50
|
|
+#define MAX_KEYWORD_LEN 149
|
|
+
|
|
+#define EXTFUNCDECL
|
|
+#define EXTFUN
|
|
+
|
|
+#define InitTest(lps) \
|
|
+{ lps->cErrors=0; }
|
|
+#define AbortTest(lps) \
|
|
+{ lps->cErrors=TEST_ABORTED; }
|
|
+
|
|
+#define AllocateMemory(cb) (calloc(cb,1))
|
|
+#define ReleaseMemory(lp) (free(lp))
|
|
+
|
|
+#define NumItems(s) (sizeof(s) / sizeof(s[0]))
|
|
+
|
|
+/* Following will access bit number pos in a bit array and return */
|
|
+/* TRUE if it is set, FALSE if it is not */
|
|
+#define CQBITS (sizeof(unsigned int) * 8)
|
|
+#define getqbit(lpa, pos) \
|
|
+ (lpa[((pos) / CQBITS)] & (1 << ((pos) - (CQBITS * ((pos) / CQBITS)))))
|
|
+#define GETBIT(p1,p2) getqbit(p1,(p2)-1)
|
|
+
|
|
+/*
|
|
+ * Message box defines
|
|
+ */
|
|
+
|
|
+#define MB_OK (0x0000)
|
|
+#define MB_ABORTRETRYIGNORE (0x0001)
|
|
+#define MB_OKCANCEL (0x0002)
|
|
+#define MB_RETRYCANCEL (0x0003)
|
|
+#define MB_YESNO (0x0004)
|
|
+#define MB_YESNOCANCEL (0x0005)
|
|
+
|
|
+#define MB_ICONEXCLAMATION (0x0000)
|
|
+#define MB_ICONWARNING MB_ICONEXCLAMATION
|
|
+#define MB_ICONINFORMATION (0x0010)
|
|
+#define MB_ICONASTERISK MB_ICONINFORMATION
|
|
+#define MB_ICONQUESTION (0x0020)
|
|
+#define MB_ICONSTOP (0x0030)
|
|
+#define MB_ICONERROR MB_ICONSTOP
|
|
+#define MB_ICONHAND MB_ICONSTOP
|
|
+
|
|
+#define MB_DEFBUTTON1 (0x0000)
|
|
+#define MB_DEFBUTTON2 (0x0100)
|
|
+#define MB_DEFBUTTON3 (0x0200)
|
|
+#define MB_DEFBUTTON4 (0x0300)
|
|
+
|
|
+#define MB_APPMODAL (0x0000)
|
|
+#define MB_SYSTEMMODAL (0x1000)
|
|
+#define MB_TASKMODAL (0x2000)
|
|
+
|
|
+#define MB_DEFAULT_DESKTOP_ONLY (0x0000)
|
|
+#define MB_HELP (0x0000)
|
|
+#define MB_RIGHT (0x0000)
|
|
+#define MB_RTLREADING (0x0000)
|
|
+#define MB_SETFOREGROUND (0x0000)
|
|
+#define MB_TOPMOST (0x0000)
|
|
+#define MB_SERVICE_NOTIFICATION (0x0000)
|
|
+#define MB_SERVICE_NOTIFICATION_NT3X (0x0000)
|
|
+
|
|
+/*
|
|
+// This structure contains the information found in the .INI file for a
|
|
+// data source. The filled out structure is in turn passed to AutoTestFunc
|
|
+// to drive the individual tests.
|
|
+*/
|
|
+typedef struct tagSERVERINFO {
|
|
+ HWND hwnd; /* Output edit window */
|
|
+ CHAR szLogFile[_MAX_PATH]; /* Output log file */
|
|
+ HENV henv; /* .EXE's henv */
|
|
+ HDBC hdbc; /* .EXE's hdbc */
|
|
+ HSTMT hstmt; /* .EXE's hstmt */
|
|
+
|
|
+ /* The following items are gathered from the .INI file and may be defined */
|
|
+ /* via the "Manage Test Sources" menu item from ODBC Test */
|
|
+ CHAR szSource[SQL_MAX_DSN_LENGTH+1];
|
|
+ CHAR szValidServer0[SQL_MAX_DSN_LENGTH+1];
|
|
+ CHAR szValidLogin0[MAX_USER_INFO+1];
|
|
+ CHAR szValidPassword0[MAX_USER_INFO+1];
|
|
+ CHAR szKeywords[MAX_KEYWORD_LEN+1];
|
|
+
|
|
+ /* Following are used for run-time */
|
|
+ UINT FAR * rglMask; /* Run test mask */
|
|
+ int failed; /* Track failures on a test case basis */
|
|
+ int cErrors; /* Count of errors */
|
|
+ BOOL fDebug; /* TRUE if debugging is to be enabled */
|
|
+ BOOL fScreen; /* TRUE if test output goes to screen */
|
|
+ BOOL fLog; /* TRUE if test output goes to log */
|
|
+ BOOL fIsolate; /* TRUE to isolate output */
|
|
+ UDWORD vCursorLib; /* Value for SQL_ODBC_CURSOR on SQLSetConnectOption */
|
|
+ HINSTANCE hLoadedInst; /* Instance handle of loaded test */
|
|
+
|
|
+ /* Following are used for buffering output to edit window */
|
|
+ CHAR szBuff[MAXFLUSH]; /* Hold temporary results */
|
|
+ UINT cBuff; /* Number of TCHARs in szBuff */
|
|
+ } SERVERINFO;
|
|
+typedef SERVERINFO FAR * lpSERVERINFO;
|
|
+
|
|
+
|
|
+/*----------------------------------------------------------------------------------
|
|
+// Function prototypes
|
|
+//---------------------------------------------------------------------------------*/
|
|
+BOOL EXTFUNCDECL FAR szLogPrintf(lpSERVERINFO lps, BOOL fForce, LPTSTR szFmt, ...);
|
|
+int EXTFUNCDECL FAR szMessageBox(HWND hwnd, UINT style, LPTSTR szTitle, LPTSTR szFmt, ...);
|
|
+LPTSTR EXTFUN GetRCString(HINSTANCE hInst, LPTSTR buf, int cbbuf, UINT ids);
|
|
+
|
|
+#ifdef __cplusplus
|
|
+}
|
|
+#endif
|
|
+
|
|
+#endif
|
|
+
|
|
+
|
|
diff -Nru unixodbc-gui-qt-2.3.0.orig//ini/ini.h unixodbc-gui-qt-2.3.0/ini/ini.h
|
|
--- unixodbc-gui-qt-2.3.0.orig//ini/ini.h 1970-01-01 01:00:00.000000000 +0100
|
|
+++ unixodbc-gui-qt-2.3.0/ini/ini.h 2010-12-24 21:44:22.367568102 +0100
|
|
@@ -0,0 +1,477 @@
|
|
+/**********************************************************************************
|
|
+ * ini.h
|
|
+ *
|
|
+ * Include file for libini.a. Coding? Include this and link against libini.a.
|
|
+ *
|
|
+ *
|
|
+ **************************************************
|
|
+ * This code was created by Peter Harvey @ CodeByDesign.
|
|
+ * Released under LGPL 28.JAN.99
|
|
+ *
|
|
+ * Contributions from...
|
|
+ * -----------------------------------------------
|
|
+ * Peter Harvey - pharvey@codebydesign.com
|
|
+ **************************************************/
|
|
+
|
|
+#ifndef INCLUDED_INI_H
|
|
+#define INCLUDED_INI_H
|
|
+
|
|
+/*********[ CONSTANTS AND TYPES ]**************************************************/
|
|
+#include <stdlib.h>
|
|
+#include <stdio.h>
|
|
+#include <ctype.h>
|
|
+#include <string.h>
|
|
+
|
|
+#ifndef TRUE
|
|
+#define TRUE 1
|
|
+#endif
|
|
+
|
|
+#ifndef FALSE
|
|
+#define FALSE 0
|
|
+#endif
|
|
+
|
|
+#define STDINFILE ((char*)-1)
|
|
+
|
|
+#define INI_NO_DATA 2
|
|
+#define INI_SUCCESS 1
|
|
+#define INI_ERROR 0
|
|
+
|
|
+#define INI_MAX_LINE 1000
|
|
+#define INI_MAX_OBJECT_NAME INI_MAX_LINE
|
|
+#define INI_MAX_PROPERTY_NAME INI_MAX_LINE
|
|
+#define INI_MAX_PROPERTY_VALUE INI_MAX_LINE
|
|
+
|
|
+#if HAVE_LIMITS_H
|
|
+#include <limits.h>
|
|
+#endif
|
|
+
|
|
+#ifdef PATH_MAX
|
|
+#define ODBC_FILENAME_MAX PATH_MAX
|
|
+#elif MAXPATHLEN
|
|
+#define ODBC_FILENAME_MAX MAXPATHLEN
|
|
+#else
|
|
+#define ODBC_FILENAME_MAX FILENAME_MAX
|
|
+#endif
|
|
+
|
|
+/********************************************
|
|
+ * tINIPROPERTY
|
|
+ *
|
|
+ * Each property line has Name=Value pair.
|
|
+ * They are stored in this structure and linked together to provide a list
|
|
+ * of all properties for a given Object.
|
|
+ ********************************************/
|
|
+
|
|
+typedef struct tINIPROPERTY
|
|
+{
|
|
+ struct tINIPROPERTY *pNext;
|
|
+ struct tINIPROPERTY *pPrev;
|
|
+
|
|
+ char szName[INI_MAX_PROPERTY_NAME+1];
|
|
+ char szValue[INI_MAX_PROPERTY_VALUE+1];
|
|
+
|
|
+} INIPROPERTY, *HINIPROPERTY;
|
|
+
|
|
+/********************************************
|
|
+ * tINIOBJECT
|
|
+ *
|
|
+ * Each object line has just an object name. This structure
|
|
+ * stores the object name and its subordinate information.
|
|
+ * The lines that follow are considered to be properties
|
|
+ * and are stored in a list of tINIPROPERTY.
|
|
+ ********************************************/
|
|
+
|
|
+typedef struct tINIOBJECT
|
|
+{
|
|
+ struct tINIOBJECT *pNext;
|
|
+ struct tINIOBJECT *pPrev;
|
|
+
|
|
+ char szName[INI_MAX_OBJECT_NAME+1];
|
|
+
|
|
+ HINIPROPERTY hFirstProperty;
|
|
+ HINIPROPERTY hLastProperty;
|
|
+ int nProperties;
|
|
+
|
|
+} INIOBJECT, *HINIOBJECT;
|
|
+
|
|
+/********************************************
|
|
+ * tINI
|
|
+ *
|
|
+ * Each INI file contains a list of objects. This
|
|
+ * structure stores each object in a list of tINIOBJECT.
|
|
+ ********************************************/
|
|
+
|
|
+typedef struct tINI
|
|
+{
|
|
+#ifdef __OS2__
|
|
+ int iniFileType; /* ini file type 0 = text, 1 = binary (OS/2 only) */
|
|
+#endif
|
|
+ char szFileName[ODBC_FILENAME_MAX+1]; /* FULL INI FILE NAME */
|
|
+ char cComment[ 5 ]; /* COMMENT CHAR MUST BE IN FIRST COLUMN */
|
|
+ char cLeftBracket; /* BRACKETS DELIMIT THE OBJECT NAME, THE LEFT BRACKET MUST BE IN COLUMN ONE */
|
|
+ char cRightBracket;
|
|
+ char cEqual; /* SEPERATES THE PROPERTY NAME FROM ITS VALUE */
|
|
+ int bChanged; /* IF true, THEN THE WHOLE FILE IS OVERWRITTEN UPON iniCommit */
|
|
+ int bReadOnly; /* TRUE IF AT LEAST ONE CALL HAS BEEN MADE TO iniAppend() */
|
|
+
|
|
+ HINIOBJECT hFirstObject;
|
|
+ HINIOBJECT hLastObject;
|
|
+ HINIOBJECT hCurObject;
|
|
+ int nObjects;
|
|
+
|
|
+ HINIPROPERTY hCurProperty;
|
|
+
|
|
+} INI, *HINI;
|
|
+
|
|
+/********************************************
|
|
+ * tINIBOOKMARK
|
|
+ *
|
|
+ * Used to store the current Object and Property pointers so
|
|
+ * that the caller can quickly return to some point in the
|
|
+ * INI data.
|
|
+ ********************************************/
|
|
+
|
|
+typedef struct tINIBOOKMARK
|
|
+{
|
|
+ HINI hIni;
|
|
+ HINIOBJECT hCurObject;
|
|
+ HINIPROPERTY hCurProperty;
|
|
+
|
|
+} INIBOOKMARK, *HINIBOOKMARK;
|
|
+
|
|
+#if defined(__cplusplus)
|
|
+ extern "C" {
|
|
+#endif
|
|
+
|
|
+/*********[ PRIMARY INTERFACE ]*****************************************************/
|
|
+
|
|
+/******************************
|
|
+ * iniOpen
|
|
+ *
|
|
+ * 1. make sure file exists
|
|
+ * 2. allocate memory for HINI
|
|
+ * 3. initialize HINI
|
|
+ * 4. load entire file into structured memory
|
|
+ * 5. set TRUE if you want to create file if non-existing
|
|
+ ******************************/
|
|
+#ifdef __OS2__
|
|
+int iniOpen( HINI *hIni, char *pszFileName, char *cComment, char cLeftBracket, char cRightBracket, char cEqual, int bCreate, int bFileType );
|
|
+#else
|
|
+int iniOpen( HINI *hIni, char *pszFileName, char *cComment, char cLeftBracket, char cRightBracket, char cEqual, int bCreate );
|
|
+#endif
|
|
+/******************************
|
|
+ * iniAppend
|
|
+ *
|
|
+ * 1. append Sections in pszFileName that do not already exist in hIni
|
|
+ * 2. Makes hIni ReadOnly!
|
|
+ ******************************/
|
|
+int iniAppend( HINI hIni, char *pszFileName );
|
|
+
|
|
+/******************************
|
|
+ * iniDelete
|
|
+ *
|
|
+ * 1. simple removes all objects (and their properties) from the list using iniObjectDelete() in a loop
|
|
+ ******************************/
|
|
+int iniDelete( HINI hIni );
|
|
+
|
|
+/******************************
|
|
+ * iniClose
|
|
+ *
|
|
+ * 1. free memory previously allocated for HINI
|
|
+ * 2. DO NOT SAVE ANY CHANGES (see iniCommit)
|
|
+ ******************************/
|
|
+int iniClose( HINI hIni );
|
|
+
|
|
+/******************************
|
|
+ * iniCommit
|
|
+ *
|
|
+ * 1. replaces file contents with memory contents (overwrites the file)
|
|
+ ******************************/
|
|
+int iniCommit( HINI hIni );
|
|
+
|
|
+/******************************
|
|
+ * iniObjectFirst
|
|
+ *
|
|
+ ******************************/
|
|
+int iniObjectFirst( HINI hIni );
|
|
+
|
|
+/******************************
|
|
+ * iniObjectLast
|
|
+ *
|
|
+ ******************************/
|
|
+int iniObjectLast( HINI hIni );
|
|
+
|
|
+/******************************
|
|
+ * iniObjectNext
|
|
+ *
|
|
+ * 1. iniObjects() if no current object name else
|
|
+ * 2. find and store next object name
|
|
+ ******************************/
|
|
+int iniObjectNext( HINI hIni );
|
|
+
|
|
+/******************************
|
|
+ * iniObjectSeek
|
|
+ *
|
|
+ * 1. find and store object name
|
|
+ ******************************/
|
|
+int iniObjectSeek( HINI hIni, char *pszObject );
|
|
+
|
|
+/******************************
|
|
+ * iniObjectSeekSure
|
|
+ *
|
|
+ * 1. find and store object name
|
|
+ * 2. ensure that it exists
|
|
+ ******************************/
|
|
+int iniObjectSeekSure( HINI hIni, char *pszObject );
|
|
+
|
|
+/******************************
|
|
+ * iniObjectEOL
|
|
+ *
|
|
+ ******************************/
|
|
+int iniObjectEOL( HINI hIni );
|
|
+
|
|
+/******************************
|
|
+ * iniObject
|
|
+ *
|
|
+ * 1. returns the current object name
|
|
+ ******************************/
|
|
+int iniObject( HINI hIni, char *pszObject );
|
|
+
|
|
+/******************************
|
|
+ * iniObjectDelete
|
|
+ *
|
|
+ * 1. deletes current Object
|
|
+ ******************************/
|
|
+int iniObjectDelete( HINI hIni );
|
|
+
|
|
+/******************************
|
|
+ * iniObjectUpdate
|
|
+ *
|
|
+ * 1. update current Object
|
|
+ ******************************/
|
|
+int iniObjectUpdate( HINI hIni, char *pszObject );
|
|
+
|
|
+/******************************
|
|
+ * iniPropertyObject
|
|
+ *
|
|
+ * 1. inserts a new Object
|
|
+ * 2. becomes current
|
|
+ ******************************/
|
|
+int iniObjectInsert( HINI hIni, char *pszObject );
|
|
+
|
|
+/******************************
|
|
+ * iniPropertyFirst
|
|
+ *
|
|
+ ******************************/
|
|
+int iniPropertyFirst( HINI hIni );
|
|
+
|
|
+/******************************
|
|
+ * iniPropertyLast
|
|
+ *
|
|
+ ******************************/
|
|
+int iniPropertyLast( HINI hIni );
|
|
+
|
|
+/******************************
|
|
+ * iniPropertyNext
|
|
+ *
|
|
+ * 1. iniProperties() if no current property name else
|
|
+ * 2. find and store next property name
|
|
+ ******************************/
|
|
+int iniPropertyNext( HINI hIni );
|
|
+
|
|
+/******************************
|
|
+ * iniPropertySeek
|
|
+ *
|
|
+ * 1. set current Object & Property positions where matching parameters
|
|
+ * 2. any parms which are empty strings (ie pszObject[0]) are ignored
|
|
+ * 3. it is kinda pointless to pass empty strings for all parms... you will get 1st Property in 1st Object
|
|
+ ******************************/
|
|
+int iniPropertySeek( HINI hIni, char *pszObject, char *pszProperty, char *pszValue );
|
|
+
|
|
+/******************************
|
|
+ * iniPropertySeekSure
|
|
+ *
|
|
+ * 1. same as iniPropertySeek but
|
|
+ * 2. will ensure that both Object and Property exist
|
|
+ ******************************/
|
|
+int iniPropertySeekSure( HINI hIni, char *pszObject, char *pszProperty, char *pszValue );
|
|
+
|
|
+/******************************
|
|
+ * iniPropertyEOL
|
|
+ *
|
|
+ ******************************/
|
|
+int iniPropertyEOL( HINI hIni );
|
|
+
|
|
+/******************************
|
|
+ * iniProperty
|
|
+ *
|
|
+ * 1. returns the current property name
|
|
+ ******************************/
|
|
+int iniProperty( HINI hIni, char *pszProperty );
|
|
+
|
|
+/******************************
|
|
+ * iniPropertyDelete
|
|
+ *
|
|
+ * 1. deletes current Property
|
|
+ ******************************/
|
|
+int iniPropertyDelete( HINI hIni );
|
|
+
|
|
+/******************************
|
|
+ * iniPropertyUpdate
|
|
+ *
|
|
+ * 1. update current Property
|
|
+ ******************************/
|
|
+int iniPropertyUpdate( HINI hIni, char *pszProperty, char *pszValue );
|
|
+
|
|
+/******************************
|
|
+ * iniPropertyInsert
|
|
+ *
|
|
+ * 1. inserts a new Property for current Object
|
|
+ * 2. becomes current
|
|
+ ******************************/
|
|
+int iniPropertyInsert( HINI hIni, char *pszProperty, char *pszValue );
|
|
+
|
|
+/******************************
|
|
+ * iniValue
|
|
+ *
|
|
+ * 1. returns the value for the current object/property
|
|
+ ******************************/
|
|
+int iniValue( HINI hIni, char *pszValue );
|
|
+
|
|
+/******************************
|
|
+ * iniGetBookmark
|
|
+ *
|
|
+ * 1. Store the current data positions (Object and Property)
|
|
+ * into hIniBookmark.
|
|
+ * 2. Does not allocate memory for hIniBookmark so pass a
|
|
+ * pointer to a valid bookmark.
|
|
+ ******************************/
|
|
+int iniGetBookmark( HINI hIni, HINIBOOKMARK hIniBookmark );
|
|
+
|
|
+/******************************
|
|
+ * iniGotoBookmark
|
|
+ *
|
|
+ * 1. Sets the current Object and Property positions to
|
|
+ * those stored in IniBookmark.
|
|
+ * 2. Does not account for the bookmark becoming
|
|
+ * invalid ie from the Object or Property being deleted.
|
|
+ ******************************/
|
|
+int iniGotoBookmark( INIBOOKMARK IniBookmark );
|
|
+
|
|
+/******************************
|
|
+ * iniCursor
|
|
+ *
|
|
+ * 1. Returns a copy of the hIni with a new
|
|
+ * set of position cursors (current Object and Property).
|
|
+ * 2. Not safe to use when in the possibility of
|
|
+ * deleting data in another cursor on same data.
|
|
+ * 3. Use when reading data only.
|
|
+ * 4. Does not allocate memory so hIniCursor should be valid.
|
|
+ * 5. All calls, other than those for movement, are
|
|
+ * global and will affect any other view of the data.
|
|
+ ******************************/
|
|
+int iniCursor( HINI hIni, HINI hIniCursor );
|
|
+
|
|
+/*************************************************************************************/
|
|
+/*********[ SUPPORT FUNCS ]***********************************************************/
|
|
+/*************************************************************************************/
|
|
+
|
|
+/******************************
|
|
+ * iniElement
|
|
+ *
|
|
+ ******************************/
|
|
+int iniElement( char *pszData, char cSeperator, char cTerminator, int nElement, char *pszElement, int nMaxElement );
|
|
+int iniElementMax( char *pData, char cSeperator, int nDataLen, int nElement, char *pszElement, int nMaxElement );
|
|
+int iniElementToEnd( char *pszData, char cSeperator, char cTerminator, int nElement, char *pszElement, int nMaxElement );
|
|
+int iniElementEOL( char *pszData, char cSeperator, char cTerminator, int nElement, char *pszElement, int nMaxElement );
|
|
+
|
|
+/******************************
|
|
+ * iniElementCount
|
|
+ *
|
|
+ ******************************/
|
|
+int iniElementCount( char *pszData, char cSeperator, char cTerminator );
|
|
+
|
|
+/******************************
|
|
+ * iniPropertyValue
|
|
+ *
|
|
+ * 1. returns the property value for pszProperty in pszValue
|
|
+ * 2. pszString example;
|
|
+ * "PropertyName1=Value1;PropertyName2=Value2;..."
|
|
+ * 3. cEqual is usually '='
|
|
+ * 4. cPropertySep is usually ';'
|
|
+ *
|
|
+ * This function can be called without calling any other functions in this lib.
|
|
+ ******************************/
|
|
+int iniPropertyValue( char *pszString, char *pszProperty, char *pszValue, char cEqual, char cPropertySep );
|
|
+
|
|
+/******************************
|
|
+ * iniAllTrim
|
|
+ *
|
|
+ * 1. trims blanks, tabs and newlines from start and end of pszString
|
|
+ *
|
|
+ * This function can be called without calling any other functions in this lib.
|
|
+ ******************************/
|
|
+int iniAllTrim( char *pszString );
|
|
+
|
|
+/******************************
|
|
+ * iniToUpper
|
|
+ *
|
|
+ * 1. Converts all chars in pszString to upper case.
|
|
+ *
|
|
+ * This function can be called without calling any other functions in this lib.
|
|
+ ******************************/
|
|
+int iniToUpper( char *pszString );
|
|
+
|
|
+
|
|
+/******************************
|
|
+ * _iniObjectRead
|
|
+ *
|
|
+ ******************************/
|
|
+int _iniObjectRead( HINI hIni, char *szLine, char *pszObjectName );
|
|
+
|
|
+/******************************
|
|
+ * _iniPropertyRead
|
|
+ *
|
|
+ ******************************/
|
|
+int _iniPropertyRead( HINI hIni, char *szLine, char *pszPropertyName, char *pszPropertyValue );
|
|
+
|
|
+/******************************
|
|
+ * _iniDump
|
|
+ *
|
|
+ ******************************/
|
|
+int _iniDump( HINI hIni, FILE *hStream );
|
|
+
|
|
+/******************************
|
|
+ * _iniScanUntilObject
|
|
+ *
|
|
+ ******************************/
|
|
+int _iniScanUntilObject( HINI hIni, FILE *hFile, char *pszLine );
|
|
+int _iniScanUntilNextObject( HINI hIni, FILE *hFile, char *pszLine );
|
|
+
|
|
+/*
|
|
+ * Some changes to avoid a 255 file handle limit, thanks MQJoe.
|
|
+ * Make it conditional as it does have some performance impact esp with LARGE ini files (like what I have :-)
|
|
+ */
|
|
+
|
|
+#if defined( HAVE_VSNPRINTF ) && defined( USE_LL_FIO )
|
|
+
|
|
+FILE *uo_fopen( const char *filename, const char *mode );
|
|
+int uo_fclose( FILE *stream );
|
|
+char *uo_fgets( char *szbuffer, int n, FILE *stream );
|
|
+int uo_fprintf( FILE *stream, const char *fmt, ...);
|
|
+int uo_vfprintf( FILE *stream, const char *fmt, va_list ap);
|
|
+
|
|
+#else
|
|
+
|
|
+#define uo_fopen fopen
|
|
+#define uo_fclose fclose
|
|
+#define uo_fgets fgets
|
|
+#define uo_fprintf fprintf
|
|
+#define uo_vfprintf vfprintf
|
|
+
|
|
+#endif
|
|
+
|
|
+#if defined(__cplusplus)
|
|
+ }
|
|
+#endif
|
|
+
|
|
+#endif
|