[5] | 1 | /**************************************************************************
|
---|
| 2 | *
|
---|
| 3 | * SOURCE FILE NAME = ECSET.C
|
---|
| 4 | *
|
---|
| 5 | * DESCRIPTIVE NAME = eCUPS part, this reads out dialog values
|
---|
| 6 | *
|
---|
| 7 | * Copyright : Bart van Leeuwen, netlabs 2006
|
---|
| 8 | *
|
---|
| 9 | ****************************************************************************/
|
---|
| 10 |
|
---|
| 11 | #define LINT_ARGS /* argument checking enabled */
|
---|
| 12 |
|
---|
| 13 | #define INCL_DOS
|
---|
| 14 | #define INCL_GPI
|
---|
| 15 | #undef INCL_GPI
|
---|
| 16 | #define INCL_DEV
|
---|
| 17 | #define INCL_DOSMEMMGR /* Include standard OS/2 support */
|
---|
| 18 | #define INCL_DOSMODULEMGR /* For DosLoadModule */
|
---|
| 19 | #define INCL_DOSPROCESS
|
---|
| 20 | #define INCL_GPILCIDS
|
---|
| 21 | #define INCL_WINCOMMON /* Include Window Management support */
|
---|
| 22 | #define INCL_WINDOWMGR
|
---|
| 23 | #define INCL_WINSWITCHLIST
|
---|
| 24 | #define INCL_WINPROGRAMLIST
|
---|
| 25 | #define INCL_WINMENUS
|
---|
| 26 | #define INCL_WINWINDOWMGR
|
---|
| 27 | #define INCL_WINMESSAGEMGR
|
---|
| 28 | #define INCL_WINDIALOGS
|
---|
| 29 | #define INCL_WINSTATICS
|
---|
| 30 | #define INCL_WINLISTBOXES
|
---|
| 31 | #define INCL_WINMENUS
|
---|
| 32 | #define INCL_WINSYS
|
---|
| 33 | #define INCL_WINFRAMEMGR
|
---|
| 34 | #define INCL_INCLWINACCELERATORS
|
---|
| 35 | #define INCL_WINPOINTERS
|
---|
| 36 | #define INCL_WINERRORS
|
---|
| 37 | #define INCL_WINSHELLDATA
|
---|
| 38 |
|
---|
| 39 | #define INCL_WINTYPES
|
---|
| 40 | #define INCL_WINACCELERATORS
|
---|
| 41 | #define INCL_WINBUTTONS
|
---|
| 42 | #define INCL_WINENTRYFIELDS
|
---|
| 43 | #define INCL_WINRECTANGLES
|
---|
| 44 | #define INCL_WINTIMER
|
---|
| 45 | #define INCL_WINSCROLLBARS
|
---|
| 46 | #define INCL_WINHEAP
|
---|
| 47 | #define INCL_SHLERRORS
|
---|
| 48 | #define INCL_WININPUT
|
---|
| 49 | #define INCL_WINHELP
|
---|
| 50 | #define INCL_WINSTDSPIN
|
---|
| 51 | #define INCL_WINSTDFILE
|
---|
| 52 |
|
---|
| 53 |
|
---|
| 54 | #define INCL_SPL
|
---|
| 55 | #define INCL_SPLP
|
---|
| 56 | #define INCL_SPLERRORS
|
---|
| 57 | #define INCL_SHLERRORS
|
---|
| 58 | #define INCL_DOSERRORS
|
---|
| 59 | #define INCL_WINHOOKS
|
---|
| 60 | #define INCL_SPLDOSPRINT
|
---|
| 61 |
|
---|
| 62 |
|
---|
| 63 |
|
---|
| 64 | #include <os2.h>
|
---|
| 65 |
|
---|
| 66 | #include <stdlib.h>
|
---|
| 67 | #include <stdio.h>
|
---|
| 68 | #include <string.h>
|
---|
| 69 | #include <time.h>
|
---|
| 70 |
|
---|
| 71 | #include "ecups.h"
|
---|
| 72 | #include "ecdebug.h"
|
---|
| 73 |
|
---|
| 74 |
|
---|
| 75 |
|
---|
| 76 | extern ECUPSSESSIONDATA eCUPSSession;
|
---|
| 77 |
|
---|
| 78 | /*
|
---|
| 79 | ** If port driver is not defined in INI file yet
|
---|
| 80 | ** assume it exists in the boot drive's \OS2\DLL directory
|
---|
| 81 | */
|
---|
| 82 | extern PSZ szDefaultPortDrvPath;
|
---|
| 83 |
|
---|
| 84 | // This structure is the base for key data pairs stored in the INI file
|
---|
| 85 |
|
---|
| 86 |
|
---|
| 87 |
|
---|
| 88 | // in this array we can easely extend the data stored in the INI File
|
---|
| 89 | // add a key name, pointer to a variable which holds the data, the datatype and the default value
|
---|
| 90 | // the get and save data functions will do the work for you then
|
---|
| 91 |
|
---|
| 92 |
|
---|
| 93 |
|
---|
| 94 |
|
---|
| 95 |
|
---|
| 96 |
|
---|
| 97 | ECUPSSESSIONDATA eCUPSSession = {NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL};
|
---|
| 98 |
|
---|
| 99 | /****************************************************************************
|
---|
| 100 | *
|
---|
| 101 | * FUNCTION NAME = SavePortSettings
|
---|
| 102 | *
|
---|
| 103 | * DESCRIPTION = save any changed values for this COM port in INI file
|
---|
| 104 | *
|
---|
| 105 | * INPUT = pSerialData -> this port's information
|
---|
| 106 | *
|
---|
| 107 | * OUTPUT = TRUE - successful
|
---|
| 108 | * FALSE - PrfWrite failed
|
---|
| 109 | *
|
---|
| 110 | * RETURN-NORMAL = TRUE
|
---|
| 111 | * RETURN-ERROR = FALSE
|
---|
| 112 | *
|
---|
| 113 | ****************************************************************************/
|
---|
| 114 |
|
---|
| 115 | BOOL SavePortSettings()
|
---|
| 116 |
|
---|
| 117 | {
|
---|
| 118 | ULONG count,rc;
|
---|
| 119 | // /*
|
---|
| 120 | // ** Only save settings if they don't match original settings
|
---|
| 121 | // **
|
---|
| 122 | // ** Format of comm port initialization string:
|
---|
| 123 | // ** "Baudrate;Parity;Wordlength;StopBits;Handshaking"
|
---|
| 124 | // **
|
---|
| 125 | // ** Default values are "9600;0;8;1;1;"
|
---|
| 126 | // **
|
---|
| 127 | // */
|
---|
| 128 |
|
---|
| 129 | _PmpfF(("INICount %d",INICount));
|
---|
| 130 | for(count = 0; count < INICount; count ++)
|
---|
| 131 | {
|
---|
| 132 |
|
---|
| 133 | if(INIKeys[count].ulType==2)
|
---|
| 134 | {
|
---|
| 135 | _PmpfF(("INKey: %d -> %s - %d -> %s",count,INIKeys[count].pszKeyName,INIKeys[count].ulType,*(PSZ*)INIKeys[count].pData));
|
---|
| 136 | PrfWriteProfileString (HINI_SYSTEMPROFILE,
|
---|
| 137 | APPNAME,
|
---|
| 138 | INIKeys[count].pszKeyName,
|
---|
| 139 | *(PSZ*)INIKeys[count].pData);
|
---|
| 140 | }
|
---|
| 141 | if(INIKeys[count].ulType==1)
|
---|
| 142 | {
|
---|
| 143 | _PmpfF(("INKey: %d -> %s - %d -> %d",count,INIKeys[count].pszKeyName,INIKeys[count].ulType,*(ULONG*)INIKeys[count].pData));
|
---|
| 144 | rc = PrfWriteProfileData (HINI_SYSTEMPROFILE,
|
---|
| 145 | APPNAME,
|
---|
| 146 | INIKeys[count].pszKeyName,
|
---|
| 147 | INIKeys[count].pData,
|
---|
| 148 | sizeof(ULONG));
|
---|
| 149 | }
|
---|
| 150 | }
|
---|
| 151 | return TRUE;
|
---|
| 152 | }
|
---|
| 153 |
|
---|
| 154 | /****************************************************************************
|
---|
| 155 | *
|
---|
| 156 | * FUNCTION NAME = GetPortSettings
|
---|
| 157 | *
|
---|
| 158 | * DESCRIPTION = Get port Initialization settings from INI file
|
---|
| 159 | *
|
---|
| 160 | * INPUT = pSerialData -> structure containing port name.
|
---|
| 161 | * On return this will have port timeout,
|
---|
| 162 | * baud rate, word length, parity, stop bits
|
---|
| 163 | * and handshake.
|
---|
| 164 | *
|
---|
| 165 | * OUTPUT = TRUE - if INI information found for port
|
---|
| 166 | * FALSE - if INI info not found
|
---|
| 167 | *
|
---|
| 168 | * RETURN-NORMAL =
|
---|
| 169 | * RETURN-ERROR =
|
---|
| 170 | *
|
---|
| 171 | ****************************************************************************/
|
---|
| 172 |
|
---|
| 173 | BOOL GetPortSettings()
|
---|
| 174 | {
|
---|
| 175 | ULONG ulDataSize,count,rc,temp;
|
---|
| 176 |
|
---|
| 177 | for(count = 0; count < INICount; count ++)
|
---|
| 178 | {
|
---|
| 179 | ulDataSize=0;
|
---|
| 180 | if(INIKeys[count].ulType==2)
|
---|
| 181 | {
|
---|
| 182 | _PmpfF(("INKey: %d -> %s - %d rc=%d -> %s",count,INIKeys[count].pszKeyName,INIKeys[count].ulType,rc,*(PSZ*)INIKeys[count].pData));
|
---|
| 183 | PrfQueryProfileSize (HINI_SYSTEMPROFILE,
|
---|
| 184 | APPNAME,
|
---|
| 185 | INIKeys[count].pszKeyName,
|
---|
| 186 | &ulDataSize);
|
---|
| 187 | if(*(PSZ*)INIKeys[count].pData == NULL)
|
---|
| 188 | {
|
---|
| 189 | *(PSZ*)INIKeys[count].pData=malloc(ulDataSize);
|
---|
| 190 | }
|
---|
| 191 | else
|
---|
| 192 | {
|
---|
| 193 | free(*(PSZ*)INIKeys[count].pData);
|
---|
| 194 | *(PSZ*)INIKeys[count].pData=malloc(ulDataSize);
|
---|
| 195 | }
|
---|
| 196 |
|
---|
| 197 | if(ulDataSize == 0)
|
---|
| 198 | {
|
---|
| 199 | if((PSZ)INIKeys[count].pDefault!=NULL)
|
---|
| 200 | {
|
---|
| 201 | _PmpfF(("default : %s",(PSZ)INIKeys[count].pDefault));
|
---|
| 202 | *(PSZ*)INIKeys[count].pData=malloc(strlen((PSZ)INIKeys[count].pDefault));
|
---|
| 203 | memcpy(*(PSZ*)INIKeys[count].pData,(PSZ)INIKeys[count].pDefault,strlen((PSZ)INIKeys[count].pDefault));
|
---|
| 204 | }
|
---|
| 205 | else
|
---|
| 206 | *(PSZ*)INIKeys[count].pData=NULL;
|
---|
| 207 | }
|
---|
| 208 | else
|
---|
| 209 | rc = PrfQueryProfileString (HINI_SYSTEMPROFILE,
|
---|
| 210 | APPNAME,
|
---|
| 211 | INIKeys[count].pszKeyName,
|
---|
| 212 | "x",
|
---|
| 213 | *(PSZ*)INIKeys[count].pData,
|
---|
| 214 | ulDataSize);
|
---|
| 215 |
|
---|
| 216 | _PmpfF(("INKey: %d -> %s - %d rc=%d -> %s",count,INIKeys[count].pszKeyName,INIKeys[count].ulType,rc,*(PSZ*)INIKeys[count].pData));
|
---|
| 217 | }
|
---|
| 218 | if(INIKeys[count].ulType==1)
|
---|
| 219 | {
|
---|
| 220 | _PmpfF(("INKey: %d -> %s",count,INIKeys[count].pszKeyName));
|
---|
| 221 | PrfQueryProfileSize (HINI_SYSTEMPROFILE,
|
---|
| 222 | APPNAME,
|
---|
| 223 | INIKeys[count].pszKeyName,
|
---|
| 224 | &ulDataSize);
|
---|
| 225 | if(ulDataSize == 0)
|
---|
| 226 | {
|
---|
| 227 | _PmpfF(("default : %d",(ULONG*)INIKeys[count].pDefault));
|
---|
| 228 | *(ULONG*)INIKeys[count].pData=(ULONG*)INIKeys[count].pDefault;
|
---|
| 229 | }
|
---|
| 230 | else
|
---|
| 231 | PrfQueryProfileData (HINI_SYSTEMPROFILE,
|
---|
| 232 | APPNAME,
|
---|
| 233 | INIKeys[count].pszKeyName,
|
---|
| 234 | &temp,
|
---|
| 235 | &ulDataSize);
|
---|
| 236 | *(ULONG*)INIKeys[count].pData = temp;
|
---|
| 237 | _PmpfF(("INKey: %d -> %s - %d size: %d -> %d",count,INIKeys[count].pszKeyName,INIKeys[count].ulType,ulDataSize,*(ULONG*)INIKeys[count].pData));
|
---|
| 238 | }
|
---|
| 239 | }
|
---|
| 240 |
|
---|
| 241 |
|
---|
| 242 | return(TRUE);
|
---|
| 243 | }
|
---|
| 244 |
|
---|
| 245 | /****************************************************************************
|
---|
| 246 | *
|
---|
| 247 | * FUNCTION NAME = GetPortDefaultSettings
|
---|
| 248 | *
|
---|
| 249 | * DESCRIPTION = Get port Initialization settings from INI file
|
---|
| 250 | *
|
---|
| 251 | * INPUT = pszSaveCommSetting - gets default port settings
|
---|
| 252 | *
|
---|
| 253 | * OUTPUT = TRUE - if INI information found for port
|
---|
| 254 | * FALSE - if INI info not found
|
---|
| 255 | *
|
---|
| 256 | * RETURN-NORMAL =
|
---|
| 257 | * RETURN-ERROR =
|
---|
| 258 | *
|
---|
| 259 | ****************************************************************************/
|
---|
| 260 |
|
---|
| 261 | VOID GetPortDefaultSettings(PSZ pszSaveCommSetting)
|
---|
| 262 | {
|
---|
| 263 | ULONG ulDataSize,count,rc;
|
---|
| 264 |
|
---|
| 265 |
|
---|
| 266 | for(count = 0; count < INICount; count ++)
|
---|
| 267 | {
|
---|
| 268 |
|
---|
| 269 | if(INIKeys[count].ulType==2)
|
---|
| 270 | {
|
---|
| 271 | *(PSZ*)INIKeys[count].pData=malloc(strlen((PSZ)INIKeys[count].pDefault));
|
---|
| 272 | memcpy(*(PSZ*)INIKeys[count].pData,(PSZ)INIKeys[count].pDefault,strlen((PSZ)INIKeys[count].pDefault));
|
---|
| 273 | }
|
---|
| 274 | if(INIKeys[count].ulType==1)
|
---|
| 275 | {
|
---|
| 276 | *(ULONG*)INIKeys[count].pData=malloc(sizeof(ULONG));
|
---|
| 277 | memcpy(*(ULONG*)INIKeys[count].pData,(ULONG*)INIKeys[count].pDefault,sizeof(ULONG));
|
---|
| 278 | }
|
---|
| 279 | }
|
---|
| 280 | }
|
---|