Update of /cvsroot/pure-data/externals/hcs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7985
Modified Files: folder_list.c Log Message: got the full path working on windows... ug.. why is windows programming inevitably a total pain in the ass?
Index: folder_list.c =================================================================== RCS file: /cvsroot/pure-data/externals/hcs/folder_list.c,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** folder_list.c 26 Mar 2006 23:48:04 -0000 1.6 --- folder_list.c 27 Mar 2006 03:06:29 -0000 1.7 *************** *** 37,46 ****
#ifdef _WIN32 ! WIN32_FIND_DATA FindFileData; HANDLE hFind; DWORD errorNumber; LPVOID lpErrorMessage; ! hFind = FindFirstFile(x->x_pattern->s_name, &FindFileData); if (hFind == INVALID_HANDLE_VALUE) { --- 37,55 ----
#ifdef _WIN32 ! WIN32_FIND_DATA findData; HANDLE hFind; DWORD errorNumber; LPVOID lpErrorMessage; + char fullPathNameBuffer[MAX_PATH+1] = ""; + char unbashBuffer[MAX_PATH+1] = ""; + char pathBuffer[MAX_PATH+1] = ""; + int length; + + // arg, looks perfect, but only in Windows Vista + // GetFinalPathNameByHandle(hFind,fullPathNameBuffer,MAX_PATH,FILE_NAME_NORMALIZED); + GetFullPathName(x->x_pattern->s_name,MAX_PATH,fullPathNameBuffer,NULL); + sys_unbashfilename(fullPathNameBuffer,unbashBuffer); ! hFind = FindFirstFile(x->x_pattern->s_name, &findData); if (hFind == INVALID_HANDLE_VALUE) { *************** *** 66,71 **** } do { ! outlet_symbol( x->x_obj.ob_outlet, gensym(FindFileData.cFileName) ); ! } while (FindNextFile(hFind, &FindFileData) != 0); FindClose(hFind); #else --- 75,91 ---- } do { ! if( strcmp(findData.cFileName, ".") && strcmp(findData.cFileName, "..") ) ! { ! length = strlen(unbashBuffer); ! do ! { ! length--; ! } while ( *(unbashBuffer + length) == '/' ); ! strncpy(pathBuffer, unbashBuffer, length); ! pathBuffer[length] = '\0'; ! strcat(pathBuffer,findData.cFileName); ! outlet_symbol( x->x_obj.ob_outlet, gensym(pathBuffer) ); ! } ! } while (FindNextFile(hFind, &findData) != 0); FindClose(hFind); #else