From: Johan P. <jo...@us...> - 2009-05-15 21:55:56
|
Update of /cvsroot/virtuawin In directory fdv4jf1.ch3.sourceforge.com:/tmp/cvs-serv13202 Modified Files: DiskRoutines.c Log Message: 2789338 improved error messages in case of corrupt or zero byte config file. Index: DiskRoutines.c =================================================================== RCS file: /cvsroot/virtuawin/DiskRoutines.c,v retrieving revision 1.60 retrieving revision 1.61 diff -u -d -r1.60 -r1.61 --- DiskRoutines.c 26 Jan 2009 20:14:54 -0000 1.60 +++ DiskRoutines.c 15 May 2009 21:55:34 -0000 1.61 @@ -3,7 +3,7 @@ // DiskRoutines.c - File reading an writing routines. // // Copyright (c) 1999-2005 Johan Piculell -// Copyright (c) 2006-2008 VirtuaWin (Vir...@ho...) +// Copyright (c) 2006-2009 VirtuaWin (Vir...@ho...) // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -432,313 +432,332 @@ void loadVirtuawinConfig(void) { - TCHAR buff[MAX_PATH], buff2[2048], *ss ; - FILE *fp, *wfp; - int ii, jj, ll, hk[4] ; + TCHAR buff[MAX_PATH], buff2[2048], buff3[2048], *ss ; + FILE *fp, *wfp; + int ii, jj, ll, hk[4] ; - GetFilename(vwVIRTUAWIN_CFG,1,buff); - if(GetFileAttributes(buff) == INVALID_FILE_ATTRIBUTES) - { - static char *defaultCfg="ver# 2\nhotkeyCount# 6\nhotkey1# 37 24 1 0\nhotkey2# 39 24 2 0\nhotkey3# 38 24 3 0\nhotkey4# 40 24 4 0\nhotkey5# 37 25 13 0\nhotkey6# 39 25 15 0\ndesktopNameCount# 0\n" ; - /* config file does not exist - new user, setup configuration, check - * the user path exists first and if not try to create it - note that - * multiple levels may need to be created due to the userpath.cfg */ - if((buff[0] == '\\') && (buff[1] == '\\') && ((ss = _tcschr(buff+2,'\\')) != NULL) && (ss[1] != '\0')) - ; - else if(buff[1] == ':') - ss = buff + 2 ; - else - ss = buff ; - while((ss = _tcschr(ss+1,'\\')) != NULL) - { - *ss = '\0' ; - if(((GetFileAttributes(buff) & (0xf0000000|FILE_ATTRIBUTE_DIRECTORY)) != FILE_ATTRIBUTE_DIRECTORY) && - (CreateDirectory(buff,NULL) == 0)) + GetFilename(vwVIRTUAWIN_CFG,1,buff); + if(GetFileAttributes(buff) == INVALID_FILE_ATTRIBUTES) + { + static char *defaultCfg="ver# 2\nhotkeyCount# 6\nhotkey1# 37 24 1 0\nhotkey2# 39 24 2 0\nhotkey3# 38 24 3 0\nhotkey4# 40 24 4 0\nhotkey5# 37 25 13 0\nhotkey6# 39 25 15 0\ndesktopNameCount# 0\n" ; + /* config file does not exist - new user, setup configuration, check + * the user path exists first and if not try to create it - note that + * multiple levels may need to be created due to the userpath.cfg */ + if((buff[0] == '\\') && (buff[1] == '\\') && ((ss = _tcschr(buff+2,'\\')) != NULL) && (ss[1] != '\0')) + ; + else if(buff[1] == ':') + ss = buff + 2 ; + else + ss = buff ; + while((ss = _tcschr(ss+1,'\\')) != NULL) + { + *ss = '\0' ; + if(((GetFileAttributes(buff) & (0xf0000000|FILE_ATTRIBUTE_DIRECTORY)) != FILE_ATTRIBUTE_DIRECTORY) && + (CreateDirectory(buff,NULL) == 0)) + { + _stprintf(buff2,vwVIRTUAWIN_NAME _T(" cannot create the user config directory:\n\n %s\n\nPlease check file permissions. If you continue to have problems, send e-mail to:\n\n ") vwVIRTUAWIN_EMAIL,buff); + MessageBox(hWnd,buff2,vwVIRTUAWIN_NAME _T(" Error"),MB_ICONERROR); + exit(1) ; + } + *ss = '\\' ; + } + + /* If the user path is not the installation path then copy all the + * config files across to the user area */ + fp = NULL ; + ii = vwFILE_COUNT ; + if(_tcsicmp(VirtuaWinPath,UserAppPath)) + { + while(--ii >= vwVIRTUAWIN_CFG) + { + GetFilename(ii,0,buff); + if((fp = _tfopen(buff,_T("rb"))) != NULL) { - _stprintf(buff2,vwVIRTUAWIN_NAME _T(" cannot create the user config directory:\n\n %s\n\nPlease check file permissions. If you continue to have problems, send e-mail to:\n\n ") vwVIRTUAWIN_EMAIL,buff); - MessageBox(hWnd,buff2,vwVIRTUAWIN_NAME _T(" Error"),MB_ICONERROR); - exit(1) ; + GetFilename(ii,1,buff2); + if((wfp = _tfopen(buff2,_T("wb"))) == NULL) + break ; + for(;;) + { + if((jj=fread(buff2,1,2048,fp)) <= 0) + break ; + if(fwrite(buff2,1,jj,wfp) != (size_t) jj) + { + jj = -1 ; + break ; + } + } + fclose(fp) ; + if((fclose(wfp) != 0) || (jj < 0)) + break ; } - *ss = '\\' ; - } - - /* If the user path is not the installation path then copy all the - * config files across to the user area */ - fp = NULL ; - ii = vwFILE_COUNT ; - if(_tcsicmp(VirtuaWinPath,UserAppPath)) - { - while(--ii >= vwVIRTUAWIN_CFG) + } + } + else + { + /* must create the main VirtuaWin.cfg file */ + ii = vwVIRTUAWIN_CFG - 1 ; + fp = NULL ; + } + GetFilename(vwVIRTUAWIN_CFG,1,buff); + /* check a main config file has been copied, if not create a dummy one */ + if((ii < vwVIRTUAWIN_CFG) && (fp == NULL) && + (((wfp = _tfopen(buff,_T("wb"))) == NULL) || + (fwrite(defaultCfg,strlen(defaultCfg),1,wfp) != 1) || (fclose(wfp) != 0))) + ii = vwVIRTUAWIN_CFG ; + /* check we did not break out due to an error and virtuawin.cfg was found */ + if(ii >= vwVIRTUAWIN_CFG) + { + MessageBox(hWnd,_T("Error occurred creating new user configuration, please check installation & file permissions.\nIf you continue to have problems, send e-mail to:\n\n ") vwVIRTUAWIN_EMAIL,vwVIRTUAWIN_NAME _T(" Error"),MB_ICONERROR); + exit(1) ; + } + _stprintf(buff2,_T("Welcome to %s\n\nA new user configuration has been created in directory:\n\n %s\n\nRight click on tray icon to access the Setup dialog."),vwVIRTUAWIN_NAME_VERSION,UserAppPath) ; + MessageBox(hWnd,buff2,vwVIRTUAWIN_NAME,MB_ICONINFORMATION); + } + + /* Is file readable at all? */ + if((fp = _tfopen(buff,_T("r"))) != NULL) + { + /* Try reading a version? */ + if(fscanf(fp, "%s%d", (char *) buff3, &ii) == 2) + { + /* Nope, there was no version */ + if(strcmp((char *) buff3,"ver#")) + { + int kk, hkc[5], hks[3] ; + + mouseEnable = ii ; + hotkeyCount = 0 ; + vwConfigReadInt(fp,buff,ii,mouseDelay); + fscanf(fp, "%s%i", (char *) buff, &jj); + vwConfigReadInt(fp,buff,ii,releaseFocus); + fscanf(fp, "%s%i", (char *) buff, &ii); + fscanf(fp, "%s%i", (char *) buff, hk + 0); + fscanf(fp, "%s%i", (char *) buff, hk + 1); + fscanf(fp, "%s%i", (char *) buff, hk + 2); + fscanf(fp, "%s%i", (char *) buff, hk + 3); + if(jj) { - GetFilename(ii,0,buff); - if((fp = _tfopen(buff,_T("rb"))) != NULL) - { - GetFilename(ii,1,buff2); - if((wfp = _tfopen(buff2,_T("wb"))) == NULL) - break ; - for(;;) - { - if((jj=fread(buff2,1,2048,fp)) <= 0) - break ; - if(fwrite(buff2,1,jj,wfp) != (size_t) jj) - { - jj = -1 ; - break ; - } - } - fclose(fp) ; - if((fclose(wfp) != 0) || (jj < 0)) - break ; - } + jj = hk[0] | hk[1] | hk[2] | hk[3] | vwHOTKEY_EXT ; + ii = 3 ; + do { + hotkeyList[ii].modifier = jj ; + hotkeyList[ii].command = vwCMD_NAV_MOVE_LEFT + ii ; + hotkeyList[ii].desk = 0 ; + } while(--ii >= 0) ; + hotkeyList[0].key = VK_LEFT ; + hotkeyList[1].key = VK_RIGHT ; + hotkeyList[2].key = VK_UP ; + hotkeyList[3].key = VK_DOWN ; + hotkeyCount = 4 ; } - } - else - { - /* must create the main VirtuaWin.cfg file */ - ii = vwVIRTUAWIN_CFG - 1 ; - fp = NULL ; - } - GetFilename(vwVIRTUAWIN_CFG,1,buff); - /* check a main config file has been copied, if not create a dummy one */ - if((ii < vwVIRTUAWIN_CFG) && (fp == NULL) && - (((wfp = _tfopen(buff,_T("wb"))) == NULL) || - (fwrite(defaultCfg,strlen(defaultCfg),1,wfp) != 1) || (fclose(wfp) != 0))) - ii = vwVIRTUAWIN_CFG ; - /* check we did not break out due to an error and virtuawin.cfg was found */ - if(ii >= vwVIRTUAWIN_CFG) - { - MessageBox(hWnd,_T("Error occurred creating new user configuration, please check installation & file permissions.\nIf you continue to have problems, send e-mail to:\n\n ") vwVIRTUAWIN_EMAIL,vwVIRTUAWIN_NAME _T(" Error"),MB_ICONERROR); - exit(1) ; - } - _stprintf(buff2,_T("Welcome to %s\n\nA new user configuration has been created in directory:\n\n %s\n\nRight click on tray icon to access the Setup dialog."),vwVIRTUAWIN_NAME_VERSION,UserAppPath) ; - MessageBox(hWnd,buff2,vwVIRTUAWIN_NAME,MB_ICONINFORMATION); - } - if(((fp = _tfopen(buff,_T("r"))) == NULL) || - (fscanf(fp, "%s%d", (char *) buff, &ii) != 2)) - { - _stprintf(buff2,_T("Error reading config file:\n\n %s\n\nPlease check file permissions. If you continue to have problems, send e-mail to:\n\n ") vwVIRTUAWIN_EMAIL,buff); - MessageBox(hWnd,buff2,vwVIRTUAWIN_NAME _T(" Error"),MB_ICONERROR) ; - exit(1) ; - } - else if(strcmp((char *) buff,"ver#")) - { - int kk, hkc[5], hks[3] ; - - mouseEnable = ii ; - hotkeyCount = 0 ; - vwConfigReadInt(fp,buff,ii,mouseDelay); - fscanf(fp, "%s%i", (char *) buff, &jj); - vwConfigReadInt(fp,buff,ii,releaseFocus); - fscanf(fp, "%s%i", (char *) buff, &ii); - fscanf(fp, "%s%i", (char *) buff, hk + 0); - fscanf(fp, "%s%i", (char *) buff, hk + 1); - fscanf(fp, "%s%i", (char *) buff, hk + 2); - fscanf(fp, "%s%i", (char *) buff, hk + 3); - if(jj) - { - jj = hk[0] | hk[1] | hk[2] | hk[3] | vwHOTKEY_EXT ; - ii = 3 ; - do { - hotkeyList[ii].modifier = jj ; - hotkeyList[ii].command = vwCMD_NAV_MOVE_LEFT + ii ; - hotkeyList[ii].desk = 0 ; - } while(--ii >= 0) ; - hotkeyList[0].key = VK_LEFT ; - hotkeyList[1].key = VK_RIGHT ; - hotkeyList[2].key = VK_UP ; - hotkeyList[3].key = VK_DOWN ; - hotkeyCount = 4 ; - } - vwConfigReadInt(fp,buff,ii,mouseJumpLength); - fscanf(fp, "%s%i", (char *) buff, &ii); - fscanf(fp, "%s%i", (char *) buff, &ii); - vwConfigReadInt(fp,buff,ii,nDesksY); - vwConfigReadInt(fp,buff,ii,nDesksX); - fscanf(fp, "%s%i", (char *) buff, &ii); - for(ii=1,jj=9,kk=0 ; ii<=jj ; ii++) - { + vwConfigReadInt(fp,buff,ii,mouseJumpLength); + fscanf(fp, "%s%i", (char *) buff, &ii); + fscanf(fp, "%s%i", (char *) buff, &ii); + vwConfigReadInt(fp,buff,ii,nDesksY); + vwConfigReadInt(fp,buff,ii,nDesksX); + fscanf(fp, "%s%i", (char *) buff, &ii); + for(ii=1,jj=9,kk=0 ; ii<=jj ; ii++) + { + fscanf(fp, "%s%i", (char *) buff, hk + 1); + if((ii==1) && !strcmp((char *) buff,"Desk_count#")) + { + jj = hk[1] ; + hk[1] = 0 ; + ii = 0 ; + kk = 1 ; + } + else + { + fscanf(fp, "%s%i", (char *) buff, hk + 2); + fscanf(fp, "%s%i\n", (char *) buff, hk + 3); + if(hk[1]) + addOldHotkey(hk[1],hk[2],hk[3],vwCMD_NAV_MOVE_DESKTOP,ii) ; + if(kk && (_fgetts(buff2,2048,fp) != NULL) && ((ss=_tcschr(buff2,' ')) != NULL) && + ((ll=_tcslen(++ss)) > 1)) + { + if(ss[ll-1] == '\n') + ss[ll-1] = '\0' ; + desktopName[ii] = _tcsdup(ss) ; + } + } + } + vwConfigReadInt(fp,buff,ii,mouseModifierUsed); + if(fscanf(fp, "%s%i", (char *) buff, &ii) == 2) + mouseModifier = 0 ; + if(ii) mouseModifier |= vwHOTKEY_ALT ; + fscanf(fp, "%s%i", (char *) buff, &ii); + if(ii) mouseModifier |= vwHOTKEY_SHIFT ; + fscanf(fp, "%s%i", (char *) buff, &ii); + if(ii) mouseModifier |= vwHOTKEY_CONTROL ; + fscanf(fp, "%s%i", (char *) buff, &ii); + vwConfigReadInt(fp,buff,ii,refreshOnWarp); + if(fscanf(fp, "%s%d", (char *) buff, &ii) == 2) + mouseWarp = (ii == 0) ; + fscanf(fp, "%s%i", (char *) buff, hks + 0); + fscanf(fp, "%s%i", (char *) buff, hks + 1); + vwConfigReadInt(fp,buff,ii,preserveZOrder); + vwConfigReadInt(fp,buff,ii,deskWrap); + vwConfigReadInt(fp,buff,ii,invertY); + if(fscanf(fp, "%s%i", (char *) buff, &ii) == 2) + winListContent = 0 ; + if(ii) winListContent |= vwWINLIST_STICKY ; + fscanf(fp, "%s%i", (char *) buff, &ii); + if(ii) winListContent |= vwWINLIST_ASSIGN ; + fscanf(fp, "%s%i", (char *) buff, &ii); + if(ii) winListContent |= vwWINLIST_ACCESS ; + fscanf(fp, "%s%i", (char *) buff, &ii); + fscanf(fp, "%s%i", (char *) buff, &ii); + fscanf(fp, "%s%i", (char *) buff, &ii); + fscanf(fp, "%s%i", (char *) buff, hkc + 0); + fscanf(fp, "%s%i", (char *) buff, hkc + 1); + fscanf(fp, "%s%i", (char *) buff, hkc + 2); + fscanf(fp, "%s%i", (char *) buff, hkc + 3); + fscanf(fp, "%s%i", (char *) buff, hkc + 4); + fscanf(fp, "%s%i", (char *) buff, hk + 0); fscanf(fp, "%s%i", (char *) buff, hk + 1); - if((ii==1) && !strcmp((char *) buff,"Desk_count#")) + fscanf(fp, "%s%i", (char *) buff, hk + 2); + fscanf(fp, "%s%i", (char *) buff, hk + 3); + if(hk[0]) { - jj = hk[1] ; - hk[1] = 0 ; - ii = 0 ; - kk = 1 ; + kk = hotkeyCount ; + addOldHotkey(hk[1],hk[2],hk[3],vwCMD_UI_WINLIST_STD,0) ; } else + kk = -1 ; + vwConfigReadInt(fp,buff,ii,displayTaskbarIcon); + fscanf(fp, "%s%i", (char *) buff, hks + 2); + vwConfigReadInt(fp,buff,ii,noTaskbarCheck); + fscanf(fp, "%s%i", (char *) buff, &ii); + fscanf(fp, "%s%i", (char *) buff, &ii); + fscanf(fp, "%s%i", (char *) buff, &ii); + fscanf(fp, "%s%i", (char *) buff, &ii); + fscanf(fp, "%s%i", (char *) buff, &jj); + if(hkc[0]) { - fscanf(fp, "%s%i", (char *) buff, hk + 2); - fscanf(fp, "%s%i\n", (char *) buff, hk + 3); - if(hk[1]) - addOldHotkey(hk[1],hk[2],hk[3],vwCMD_NAV_MOVE_DESKTOP,ii) ; - if(kk && (_fgetts(buff2,2048,fp) != NULL) && ((ss=_tcschr(buff2,' ')) != NULL) && - ((ll=_tcslen(++ss)) > 1)) - { - if(ss[ll-1] == '\n') - ss[ll-1] = '\0' ; - desktopName[ii] = _tcsdup(ss) ; - } + addOldHotkey(hkc[1],hkc[2],ii,vwCMD_NAV_MOVE_NEXT,0) ; + addOldHotkey(hkc[3],hkc[4],jj,vwCMD_NAV_MOVE_PREV,0) ; } - } - vwConfigReadInt(fp,buff,ii,mouseModifierUsed); - if(fscanf(fp, "%s%i", (char *) buff, &ii) == 2) - mouseModifier = 0 ; - if(ii) mouseModifier |= vwHOTKEY_ALT ; - fscanf(fp, "%s%i", (char *) buff, &ii); - if(ii) mouseModifier |= vwHOTKEY_SHIFT ; - fscanf(fp, "%s%i", (char *) buff, &ii); - if(ii) mouseModifier |= vwHOTKEY_CONTROL ; - fscanf(fp, "%s%i", (char *) buff, &ii); - vwConfigReadInt(fp,buff,ii,refreshOnWarp); - if(fscanf(fp, "%s%d", (char *) buff, &ii) == 2) - mouseWarp = (ii == 0) ; - fscanf(fp, "%s%i", (char *) buff, hks + 0); - fscanf(fp, "%s%i", (char *) buff, hks + 1); - vwConfigReadInt(fp,buff,ii,preserveZOrder); - vwConfigReadInt(fp,buff,ii,deskWrap); - vwConfigReadInt(fp,buff,ii,invertY); - if(fscanf(fp, "%s%i", (char *) buff, &ii) == 2) - winListContent = 0 ; - if(ii) winListContent |= vwWINLIST_STICKY ; - fscanf(fp, "%s%i", (char *) buff, &ii); - if(ii) winListContent |= vwWINLIST_ASSIGN ; - fscanf(fp, "%s%i", (char *) buff, &ii); - if(ii) winListContent |= vwWINLIST_ACCESS ; - fscanf(fp, "%s%i", (char *) buff, &ii); - fscanf(fp, "%s%i", (char *) buff, &ii); - fscanf(fp, "%s%i", (char *) buff, &ii); - fscanf(fp, "%s%i", (char *) buff, hkc + 0); - fscanf(fp, "%s%i", (char *) buff, hkc + 1); - fscanf(fp, "%s%i", (char *) buff, hkc + 2); - fscanf(fp, "%s%i", (char *) buff, hkc + 3); - fscanf(fp, "%s%i", (char *) buff, hkc + 4); - fscanf(fp, "%s%i", (char *) buff, hk + 0); - fscanf(fp, "%s%i", (char *) buff, hk + 1); - fscanf(fp, "%s%i", (char *) buff, hk + 2); - fscanf(fp, "%s%i", (char *) buff, hk + 3); - if(hk[0]) - { - kk = hotkeyCount ; - addOldHotkey(hk[1],hk[2],hk[3],vwCMD_UI_WINLIST_STD,0) ; - } - else - kk = -1 ; - vwConfigReadInt(fp,buff,ii,displayTaskbarIcon); - fscanf(fp, "%s%i", (char *) buff, hks + 2); - vwConfigReadInt(fp,buff,ii,noTaskbarCheck); - fscanf(fp, "%s%i", (char *) buff, &ii); - fscanf(fp, "%s%i", (char *) buff, &ii); - fscanf(fp, "%s%i", (char *) buff, &ii); - fscanf(fp, "%s%i", (char *) buff, &ii); - fscanf(fp, "%s%i", (char *) buff, &jj); - if(hkc[0]) - { - addOldHotkey(hkc[1],hkc[2],ii,vwCMD_NAV_MOVE_NEXT,0) ; - addOldHotkey(hkc[3],hkc[4],jj,vwCMD_NAV_MOVE_PREV,0) ; - } - fscanf(fp, "%s%i", (char *) buff, &ii); - if(ii) - addOldHotkey(hks[1],hks[0],hk[2],vwCMD_WIN_STICKY,0) ; - fscanf(fp, "%s%i", (char *) buff, &ii); - fscanf(fp, "%s%i", (char *) buff, &ii); - fscanf(fp, "%s%i", (char *) buff, &ii); - fscanf(fp, "%s%i", (char *) buff, &ii); - vwConfigReadInt(fp,buff,ii,hiddenWindowAct); - fscanf(fp, "%s%i", (char *) buff, &ii); - fscanf(fp, "%s%i", (char *) buff, hk + 0); - fscanf(fp, "%s%i", (char *) buff, hk + 1); - fscanf(fp, "%s%i", (char *) buff, hk + 2); - fscanf(fp, "%s%i", (char *) buff, hk + 3); - if(hk[0]) - addOldHotkey(hk[1],hk[2],hk[3],vwCMD_WIN_DISMISS,0) ; - vwConfigReadInt(fp,buff,ii,vwLogFlag); - vwConfigReadInt(fp,buff,ii,mouseKnock); - vwConfigReadInt(fp,buff,ii,winListCompact); - if(winListCompact && (kk >= 0)) - hotkeyList[kk].command = vwCMD_UI_WINMENU_CMP ; - fscanf(fp, "%s%i", (char *) buff, hk + 0); - fscanf(fp, "%s%i", (char *) buff, hk + 1); - fscanf(fp, "%s%i", (char *) buff, hk + 2); - fscanf(fp, "%s%i", (char *) buff, hk + 3); - if(hk[0]) - addOldHotkey(hk[1],hk[2],hk[3],vwCMD_UI_WINMENU_STD,0) ; - fscanf(fp, "%s%i", (char *) buff, &ii); - if(ii) winListContent |= vwWINLIST_SHOW ; - } - else if(ii == 2) - { - /* read the hotkeys and desktop names */ - hotkeyCount = 0 ; - fscanf(fp, "%s%d", (char *) buff, &jj); - for(ii=0 ; ii<jj ; ii++) - { - if(fscanf(fp, "%s %d %d %d %d", (char *) buff, hk+0, hk+1, hk+2, hk+3) == 5) + fscanf(fp, "%s%i", (char *) buff, &ii); + if(ii) + addOldHotkey(hks[1],hks[0],hk[2],vwCMD_WIN_STICKY,0) ; + fscanf(fp, "%s%i", (char *) buff, &ii); + fscanf(fp, "%s%i", (char *) buff, &ii); + fscanf(fp, "%s%i", (char *) buff, &ii); + fscanf(fp, "%s%i", (char *) buff, &ii); + vwConfigReadInt(fp,buff,ii,hiddenWindowAct); + fscanf(fp, "%s%i", (char *) buff, &ii); + fscanf(fp, "%s%i", (char *) buff, hk + 0); + fscanf(fp, "%s%i", (char *) buff, hk + 1); + fscanf(fp, "%s%i", (char *) buff, hk + 2); + fscanf(fp, "%s%i", (char *) buff, hk + 3); + if(hk[0]) + addOldHotkey(hk[1],hk[2],hk[3],vwCMD_WIN_DISMISS,0) ; + vwConfigReadInt(fp,buff,ii,vwLogFlag); + vwConfigReadInt(fp,buff,ii,mouseKnock); + vwConfigReadInt(fp,buff,ii,winListCompact); + if(winListCompact && (kk >= 0)) + hotkeyList[kk].command = vwCMD_UI_WINMENU_CMP ; + fscanf(fp, "%s%i", (char *) buff, hk + 0); + fscanf(fp, "%s%i", (char *) buff, hk + 1); + fscanf(fp, "%s%i", (char *) buff, hk + 2); + fscanf(fp, "%s%i", (char *) buff, hk + 3); + if(hk[0]) + addOldHotkey(hk[1],hk[2],hk[3],vwCMD_UI_WINMENU_STD,0) ; + fscanf(fp, "%s%i", (char *) buff, &ii); + if(ii) winListContent |= vwWINLIST_SHOW ; + } + /* There was a version */ + else if(ii == 2) + { + /* read the hotkeys and desktop names */ + hotkeyCount = 0 ; + fscanf(fp, "%s%d", (char *) buff, &jj); + for(ii=0 ; ii<jj ; ii++) { - hotkeyList[hotkeyCount].key = hk[0] ; - hotkeyList[hotkeyCount].modifier = hk[1] ; - hotkeyList[hotkeyCount].command = hk[2] ; - hotkeyList[hotkeyCount].desk = hk[3] ; - hotkeyCount++ ; + if(fscanf(fp, "%s %d %d %d %d", (char *) buff, hk+0, hk+1, hk+2, hk+3) == 5) + { + hotkeyList[hotkeyCount].key = hk[0] ; + hotkeyList[hotkeyCount].modifier = hk[1] ; + hotkeyList[hotkeyCount].command = hk[2] ; + hotkeyList[hotkeyCount].desk = hk[3] ; + hotkeyCount++ ; + } } - } - ii = vwDESKTOP_SIZE ; - while(--ii >= 0) - { - if(desktopName[ii] != NULL) + ii = vwDESKTOP_SIZE ; + while(--ii >= 0) { - free(desktopName[ii]) ; - desktopName[ii] = NULL ; + if(desktopName[ii] != NULL) + { + free(desktopName[ii]) ; + desktopName[ii] = NULL ; + } } - } - fscanf(fp, "%s%d\n", (char *) buff, &jj); - for(ii=1 ; ii<=jj ; ii++) - { - if((_fgetts(buff2,2048,fp) != NULL) && ((ss=_tcschr(buff2,' ')) != NULL) && - ((ll=_tcslen(++ss)) > 1)) + fscanf(fp, "%s%d\n", (char *) buff, &jj); + for(ii=1 ; ii<=jj ; ii++) { - if(ss[ll-1] == '\n') - ss[ll-1] = '\0' ; - desktopName[ii] = _tcsdup(ss) ; + if((_fgetts(buff2,2048,fp) != NULL) && ((ss=_tcschr(buff2,' ')) != NULL) && + ((ll=_tcslen(++ss)) > 1)) + { + if(ss[ll-1] == '\n') + ss[ll-1] = '\0' ; + desktopName[ii] = _tcsdup(ss) ; + } } - } - /* now read all the simple flags */ - vwConfigReadInt(fp,buff,ii,nDesksX); - vwConfigReadInt(fp,buff,ii,nDesksY); - vwConfigReadInt(fp,buff,ii,deskWrap); - vwConfigReadInt(fp,buff,ii,useWindowRules); - vwConfigReadInt(fp,buff,ii,taskButtonAct); - vwConfigReadInt(fp,buff,ii,winListContent); - vwConfigReadInt(fp,buff,ii,winListCompact); - vwConfigReadInt(fp,buff,ii,mouseEnable); - vwConfigReadInt(fp,buff,ii,mouseJumpLength); - vwConfigReadInt(fp,buff,ii,mouseDelay); - vwConfigReadInt(fp,buff,ii,mouseWarp); - vwConfigReadInt(fp,buff,ii,mouseKnock); - vwConfigReadInt(fp,buff,ii,mouseModifierUsed); - vwConfigReadInt(fp,buff,ii,mouseModifier); - vwConfigReadInt(fp,buff,ii,preserveZOrder); - vwConfigReadInt(fp,buff,ii,hiddenWindowAct); - vwConfigReadInt(fp,buff,ii,releaseFocus); - vwConfigReadInt(fp,buff,ii,refreshOnWarp); - vwConfigReadInt(fp,buff,ii,invertY); - vwConfigReadInt(fp,buff,ii,noTaskbarCheck); - vwConfigReadInt(fp,buff,ii,displayTaskbarIcon); - vwConfigReadInt(fp,buff,ii,vwLogFlag); - vwConfigReadInt(fp,buff,ii,winMenuCompact); - vwConfigReadInt(fp,buff,ii,useDynButtonRm); - vwConfigReadInt(fp,buff,ii,hotkeyMenuLoc); - vwConfigReadInt(fp,buff,ii,vwHookUse); - vwConfigReadInt(fp,buff,ii,useDskChgModRelease); - } - else - { - fclose(fp); - _stprintf(buff2,_T("Error reading config file:\n\n %s\n\nUnsupported version %d, please remove."),buff,ii); - MessageBox(hWnd,buff2,vwVIRTUAWIN_NAME _T(" Error"),MB_ICONERROR) ; - exit(1) ; - } - nDesks = nDesksX * nDesksY ; - fclose(fp); + /* now read all the simple flags */ + vwConfigReadInt(fp,buff,ii,nDesksX); + vwConfigReadInt(fp,buff,ii,nDesksY); + vwConfigReadInt(fp,buff,ii,deskWrap); + vwConfigReadInt(fp,buff,ii,useWindowRules); + vwConfigReadInt(fp,buff,ii,taskButtonAct); + vwConfigReadInt(fp,buff,ii,winListContent); + vwConfigReadInt(fp,buff,ii,winListCompact); + vwConfigReadInt(fp,buff,ii,mouseEnable); + vwConfigReadInt(fp,buff,ii,mouseJumpLength); + vwConfigReadInt(fp,buff,ii,mouseDelay); + vwConfigReadInt(fp,buff,ii,mouseWarp); + vwConfigReadInt(fp,buff,ii,mouseKnock); + vwConfigReadInt(fp,buff,ii,mouseModifierUsed); + vwConfigReadInt(fp,buff,ii,mouseModifier); + vwConfigReadInt(fp,buff,ii,preserveZOrder); + vwConfigReadInt(fp,buff,ii,hiddenWindowAct); + vwConfigReadInt(fp,buff,ii,releaseFocus); + vwConfigReadInt(fp,buff,ii,refreshOnWarp); + vwConfigReadInt(fp,buff,ii,invertY); + vwConfigReadInt(fp,buff,ii,noTaskbarCheck); + vwConfigReadInt(fp,buff,ii,displayTaskbarIcon); + vwConfigReadInt(fp,buff,ii,vwLogFlag); + vwConfigReadInt(fp,buff,ii,winMenuCompact); + vwConfigReadInt(fp,buff,ii,useDynButtonRm); + vwConfigReadInt(fp,buff,ii,hotkeyMenuLoc); + vwConfigReadInt(fp,buff,ii,vwHookUse); + vwConfigReadInt(fp,buff,ii,useDskChgModRelease); + } + else + { + fclose(fp); + _stprintf(buff2,_T("Error reading config file:\n\n %s\n\nUnsupported version %d, please remove."), buff, ii); + MessageBox(hWnd, buff2, vwVIRTUAWIN_NAME _T(" Error"), MB_ICONERROR) ; + exit(1); + } + } + else + { + fclose(fp); + _stprintf(buff2,_T("Error reading config file:\n\n %s\n\nFile empty or corrupt, please remove."), buff); + MessageBox(hWnd, buff2, vwVIRTUAWIN_NAME _T(" Error"), MB_ICONERROR) ; + exit(1) ; + } + } + else + { + { + _stprintf(buff2,_T("Error reading config file:\n\n %s\n\nPlease check file permissions. If you continue to have problems, send e-mail to:\n\n ") vwVIRTUAWIN_EMAIL,buff); + MessageBox(hWnd,buff2,vwVIRTUAWIN_NAME _T(" Error"),MB_ICONERROR) ; + exit(1) ; + } + } + nDesks = nDesksX * nDesksY ; + fclose(fp); } /************************************************ |