Win32: browse Network Neighborhood
This commit is contained in:
		
							parent
							
								
									282b472b71
								
							
						
					
					
						commit
						58eaeda164
					
				@ -63,7 +63,7 @@
 | 
				
			|||||||
    <Link>
 | 
					    <Link>
 | 
				
			||||||
      <SubSystem>Windows</SubSystem>
 | 
					      <SubSystem>Windows</SubSystem>
 | 
				
			||||||
      <GenerateDebugInformation>true</GenerateDebugInformation>
 | 
					      <GenerateDebugInformation>true</GenerateDebugInformation>
 | 
				
			||||||
      <AdditionalDependencies>zlib.lib;SDL2.lib;SDL2main.lib;SDL2_image.lib;lua53.lib;%(AdditionalDependencies)</AdditionalDependencies>
 | 
					      <AdditionalDependencies>mpr.lib;zlib.lib;SDL2.lib;SDL2main.lib;SDL2_image.lib;lua53.lib;%(AdditionalDependencies)</AdditionalDependencies>
 | 
				
			||||||
      <AdditionalLibraryDirectories>$(ZLibLibDir);$(SDL2LibDir);$(SDL2ImageLibDir);$(LuaLibDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
 | 
					      <AdditionalLibraryDirectories>$(ZLibLibDir);$(SDL2LibDir);$(SDL2ImageLibDir);$(LuaLibDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
 | 
				
			||||||
    </Link>
 | 
					    </Link>
 | 
				
			||||||
  </ItemDefinitionGroup>
 | 
					  </ItemDefinitionGroup>
 | 
				
			||||||
@ -84,7 +84,7 @@
 | 
				
			|||||||
      <GenerateDebugInformation>true</GenerateDebugInformation>
 | 
					      <GenerateDebugInformation>true</GenerateDebugInformation>
 | 
				
			||||||
      <EnableCOMDATFolding>true</EnableCOMDATFolding>
 | 
					      <EnableCOMDATFolding>true</EnableCOMDATFolding>
 | 
				
			||||||
      <OptimizeReferences>true</OptimizeReferences>
 | 
					      <OptimizeReferences>true</OptimizeReferences>
 | 
				
			||||||
      <AdditionalDependencies>zlib.lib;SDL2.lib;SDL2main.lib;SDL2_image.lib;lua53.lib;%(AdditionalDependencies)</AdditionalDependencies>
 | 
					      <AdditionalDependencies>mpr.lib;zlib.lib;SDL2.lib;SDL2main.lib;SDL2_image.lib;lua53.lib;%(AdditionalDependencies)</AdditionalDependencies>
 | 
				
			||||||
      <AdditionalLibraryDirectories>$(ZLibLibDir);$(SDL2LibDir);$(SDL2ImageLibDir);$(LuaLibDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
 | 
					      <AdditionalLibraryDirectories>$(ZLibLibDir);$(SDL2LibDir);$(SDL2ImageLibDir);$(LuaLibDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
 | 
				
			||||||
    </Link>
 | 
					    </Link>
 | 
				
			||||||
  </ItemDefinitionGroup>
 | 
					  </ItemDefinitionGroup>
 | 
				
			||||||
@ -217,4 +217,4 @@
 | 
				
			|||||||
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
 | 
					  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
 | 
				
			||||||
  <ImportGroup Label="ExtensionTargets">
 | 
					  <ImportGroup Label="ExtensionTargets">
 | 
				
			||||||
  </ImportGroup>
 | 
					  </ImportGroup>
 | 
				
			||||||
</Project>
 | 
					</Project>
 | 
				
			||||||
 | 
				
			|||||||
@ -58,7 +58,7 @@
 | 
				
			|||||||
    </ClCompile>
 | 
					    </ClCompile>
 | 
				
			||||||
    <Link>
 | 
					    <Link>
 | 
				
			||||||
      <GenerateDebugInformation>true</GenerateDebugInformation>
 | 
					      <GenerateDebugInformation>true</GenerateDebugInformation>
 | 
				
			||||||
      <AdditionalDependencies>libtiff.lib;lua53.lib;libpng16.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
 | 
					      <AdditionalDependencies>mpr.lib;libtiff.lib;lua53.lib;libpng16.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
 | 
				
			||||||
      <AdditionalLibraryDirectories>$(TIFFLibDir);$(PNGLibDirDebug);$(LuaLibDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
 | 
					      <AdditionalLibraryDirectories>$(TIFFLibDir);$(PNGLibDirDebug);$(LuaLibDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
 | 
				
			||||||
    </Link>
 | 
					    </Link>
 | 
				
			||||||
  </ItemDefinitionGroup>
 | 
					  </ItemDefinitionGroup>
 | 
				
			||||||
@ -77,7 +77,7 @@
 | 
				
			|||||||
      <GenerateDebugInformation>true</GenerateDebugInformation>
 | 
					      <GenerateDebugInformation>true</GenerateDebugInformation>
 | 
				
			||||||
      <EnableCOMDATFolding>true</EnableCOMDATFolding>
 | 
					      <EnableCOMDATFolding>true</EnableCOMDATFolding>
 | 
				
			||||||
      <OptimizeReferences>true</OptimizeReferences>
 | 
					      <OptimizeReferences>true</OptimizeReferences>
 | 
				
			||||||
      <AdditionalDependencies>libtiff.lib;lua53.lib;libpng16.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
 | 
					      <AdditionalDependencies>mpr.lib;libtiff.lib;lua53.lib;libpng16.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
 | 
				
			||||||
      <AdditionalLibraryDirectories>$(TIFFLibDir);$(PNGLibDirRelease);$(LuaLibDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
 | 
					      <AdditionalLibraryDirectories>$(TIFFLibDir);$(PNGLibDirRelease);$(LuaLibDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
 | 
				
			||||||
    </Link>
 | 
					    </Link>
 | 
				
			||||||
  </ItemDefinitionGroup>
 | 
					  </ItemDefinitionGroup>
 | 
				
			||||||
 | 
				
			|||||||
@ -63,7 +63,7 @@
 | 
				
			|||||||
    <Link>
 | 
					    <Link>
 | 
				
			||||||
      <SubSystem>Windows</SubSystem>
 | 
					      <SubSystem>Windows</SubSystem>
 | 
				
			||||||
      <GenerateDebugInformation>true</GenerateDebugInformation>
 | 
					      <GenerateDebugInformation>true</GenerateDebugInformation>
 | 
				
			||||||
      <AdditionalDependencies>zlib.lib;SDL.lib;SDLmain.lib;SDL_image.lib;lua53.lib;%(AdditionalDependencies)</AdditionalDependencies>
 | 
					      <AdditionalDependencies>mpr.lib;zlib.lib;SDL.lib;SDLmain.lib;SDL_image.lib;lua53.lib;%(AdditionalDependencies)</AdditionalDependencies>
 | 
				
			||||||
      <AdditionalLibraryDirectories>$(ZLibLibDir);$(SDLLibDir);$(SDLImageLibDir);$(LuaLibDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
 | 
					      <AdditionalLibraryDirectories>$(ZLibLibDir);$(SDLLibDir);$(SDLImageLibDir);$(LuaLibDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
 | 
				
			||||||
    </Link>
 | 
					    </Link>
 | 
				
			||||||
  </ItemDefinitionGroup>
 | 
					  </ItemDefinitionGroup>
 | 
				
			||||||
@ -84,7 +84,7 @@
 | 
				
			|||||||
      <GenerateDebugInformation>true</GenerateDebugInformation>
 | 
					      <GenerateDebugInformation>true</GenerateDebugInformation>
 | 
				
			||||||
      <EnableCOMDATFolding>true</EnableCOMDATFolding>
 | 
					      <EnableCOMDATFolding>true</EnableCOMDATFolding>
 | 
				
			||||||
      <OptimizeReferences>true</OptimizeReferences>
 | 
					      <OptimizeReferences>true</OptimizeReferences>
 | 
				
			||||||
      <AdditionalDependencies>zlib.lib;SDL.lib;SDLmain.lib;SDL_image.lib;lua53.lib;%(AdditionalDependencies)</AdditionalDependencies>
 | 
					      <AdditionalDependencies>mpr.lib;zlib.lib;SDL.lib;SDLmain.lib;SDL_image.lib;lua53.lib;%(AdditionalDependencies)</AdditionalDependencies>
 | 
				
			||||||
      <AdditionalLibraryDirectories>$(ZLibLibDir);$(SDLLibDir);$(SDLImageLibDir);$(LuaLibDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
 | 
					      <AdditionalLibraryDirectories>$(ZLibLibDir);$(SDLLibDir);$(SDLImageLibDir);$(LuaLibDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
 | 
				
			||||||
    </Link>
 | 
					    </Link>
 | 
				
			||||||
  </ItemDefinitionGroup>
 | 
					  </ItemDefinitionGroup>
 | 
				
			||||||
@ -217,4 +217,4 @@
 | 
				
			|||||||
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
 | 
					  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
 | 
				
			||||||
  <ImportGroup Label="ExtensionTargets">
 | 
					  <ImportGroup Label="ExtensionTargets">
 | 
				
			||||||
  </ImportGroup>
 | 
					  </ImportGroup>
 | 
				
			||||||
</Project>
 | 
					</Project>
 | 
				
			||||||
 | 
				
			|||||||
@ -129,6 +129,7 @@ ifdef COMSPEC
 | 
				
			|||||||
  LOPT += -L../3rdparty/usr-win32/lib -lgdi32 -lcomdlg32
 | 
					  LOPT += -L../3rdparty/usr-win32/lib -lgdi32 -lcomdlg32
 | 
				
			||||||
  PLATFORMFILES =
 | 
					  PLATFORMFILES =
 | 
				
			||||||
  endif
 | 
					  endif
 | 
				
			||||||
 | 
					  LOPT += -lmpr
 | 
				
			||||||
  LOPT += -ltiff
 | 
					  LOPT += -ltiff
 | 
				
			||||||
  LOPT += -lpng -lz
 | 
					  LOPT += -lpng -lz
 | 
				
			||||||
  LUALOPT = -llua
 | 
					  LUALOPT = -llua
 | 
				
			||||||
@ -501,7 +502,7 @@ endif
 | 
				
			|||||||
      STRIP = $(CROSS_STRIP)
 | 
					      STRIP = $(CROSS_STRIP)
 | 
				
			||||||
      BIN = ../bin/grafx2-$(API).exe
 | 
					      BIN = ../bin/grafx2-$(API).exe
 | 
				
			||||||
      COPT = -W -Wall -Wdeclaration-after-statement -O$(OPTIM) -g -ggdb $(TTFCOPT)
 | 
					      COPT = -W -Wall -Wdeclaration-after-statement -O$(OPTIM) -g -ggdb $(TTFCOPT)
 | 
				
			||||||
      LOPT = -mwindows -lmingw32 -lshlwapi $(TTFLOPT)
 | 
					      LOPT = -mwindows -lmingw32 -lshlwapi -lmpr $(TTFLOPT)
 | 
				
			||||||
      ifeq ($(API),sdl)
 | 
					      ifeq ($(API),sdl)
 | 
				
			||||||
      COPT += -Dmain=SDL_main $(shell $(CROSS_SDLCONFIG) --cflags)
 | 
					      COPT += -Dmain=SDL_main $(shell $(CROSS_SDLCONFIG) --cflags)
 | 
				
			||||||
      LOPT += -lSDLmain -lSDL $(shell $(CROSS_SDLCONFIG) --libs) -lSDL_image
 | 
					      LOPT += -lSDLmain -lSDL $(shell $(CROSS_SDLCONFIG) --libs) -lSDL_image
 | 
				
			||||||
 | 
				
			|||||||
@ -738,6 +738,7 @@ void Read_list_of_drives(T_Fileselector *list, byte name_length)
 | 
				
			|||||||
        list->Nb_directories++;
 | 
					        list->Nb_directories++;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    Enumerate_Network(list);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  #elif defined(__MINT__)
 | 
					  #elif defined(__MINT__)
 | 
				
			||||||
    drive_bits = Drvmap(); //get drive map bitfield
 | 
					    drive_bits = Drvmap(); //get drive map bitfield
 | 
				
			||||||
@ -822,12 +823,29 @@ void Read_list_of_drives(T_Fileselector *list, byte name_length)
 | 
				
			|||||||
// Comparison of file names:
 | 
					// Comparison of file names:
 | 
				
			||||||
#ifdef WIN32
 | 
					#ifdef WIN32
 | 
				
			||||||
// case-insensitive
 | 
					// case-insensitive
 | 
				
			||||||
  #define FILENAME_COMPARE strcasecmp
 | 
					static int Windows_Path_Compare(const char * s1, const char * s2)
 | 
				
			||||||
  #define FILENAME_COMPARE_UNICODE wcsicmp
 | 
					{
 | 
				
			||||||
 | 
					  // trick to make network shares path (starting with \\)
 | 
				
			||||||
 | 
					  // at the end of the list
 | 
				
			||||||
 | 
					  if (s1[0] == '\\')
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    if (s2[0] != '\\')
 | 
				
			||||||
 | 
					      return 1;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    // s1[0] != '\\'
 | 
				
			||||||
 | 
					    if (s2[0] == '\\')
 | 
				
			||||||
 | 
					      return -1;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  return strcasecmp(s1, s2);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#define FILENAME_COMPARE Windows_Path_Compare
 | 
				
			||||||
 | 
					#define FILENAME_COMPARE_UNICODE wcsicmp
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
// case-sensitive
 | 
					// case-sensitive
 | 
				
			||||||
  #define FILENAME_COMPARE strcmp
 | 
					#define FILENAME_COMPARE strcmp
 | 
				
			||||||
  #define FILENAME_COMPARE_UNICODE Unicode_strcmp
 | 
					#define FILENAME_COMPARE_UNICODE Unicode_strcmp
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -33,6 +33,9 @@
 | 
				
			|||||||
  #include <windows.h>
 | 
					  #include <windows.h>
 | 
				
			||||||
  #include <shellapi.h>
 | 
					  #include <shellapi.h>
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					#if defined(_MSC_VER)
 | 
				
			||||||
 | 
					#define strdup _strdup
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef USE_X11
 | 
					#ifdef USE_X11
 | 
				
			||||||
#include <unistd.h>
 | 
					#include <unistd.h>
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										58
									
								
								src/io.c
									
									
									
									
									
								
							
							
						
						
									
										58
									
								
								src/io.c
									
									
									
									
									
								
							@ -70,6 +70,8 @@
 | 
				
			|||||||
#include "global.h"
 | 
					#include "global.h"
 | 
				
			||||||
#include "gfx2log.h"
 | 
					#include "gfx2log.h"
 | 
				
			||||||
#include "gfx2mem.h"
 | 
					#include "gfx2mem.h"
 | 
				
			||||||
 | 
					// for the network browse
 | 
				
			||||||
 | 
					#include "filesel.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Lit un octet
 | 
					// Lit un octet
 | 
				
			||||||
// Renvoie -1 si OK, 0 en cas d'erreur
 | 
					// Renvoie -1 si OK, 0 en cas d'erreur
 | 
				
			||||||
@ -1222,3 +1224,59 @@ char * Calculate_relative_path(const char * ref_path, const char * path)
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
  return rel_path;
 | 
					  return rel_path;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(WIN32)
 | 
				
			||||||
 | 
					static void Enumerate_Network_R(T_Fileselector *list, LPNETRESOURCEA lpnr)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  // Mpr.lib
 | 
				
			||||||
 | 
					  HANDLE hEnum;
 | 
				
			||||||
 | 
					  DWORD r;
 | 
				
			||||||
 | 
					  r = WNetOpenEnumA (RESOURCE_GLOBALNET, RESOURCETYPE_DISK, 0, lpnr, &hEnum);
 | 
				
			||||||
 | 
					  if (r == NO_ERROR)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    DWORD buffer_size = 16*1024;
 | 
				
			||||||
 | 
					    DWORD count = -1;
 | 
				
			||||||
 | 
					    LPNETRESOURCEA lpnrLocal = (LPNETRESOURCEA) GlobalAlloc(GPTR, buffer_size);
 | 
				
			||||||
 | 
					    do
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      ZeroMemory(lpnrLocal, buffer_size);
 | 
				
			||||||
 | 
					      r = WNetEnumResourceA(hEnum, &count, lpnrLocal, &buffer_size);
 | 
				
			||||||
 | 
					      if (r == NO_ERROR)
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        DWORD i;
 | 
				
			||||||
 | 
					        for (i = 0 ; i < count; i++)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          GFX2_Log(GFX2_DEBUG, "%08x %08x %08x %s %s %s %s\n",
 | 
				
			||||||
 | 
					            lpnrLocal[i].dwType, lpnrLocal[i].dwDisplayType,
 | 
				
			||||||
 | 
					            lpnrLocal[i].dwUsage,
 | 
				
			||||||
 | 
					            lpnrLocal[i].lpProvider, lpnrLocal[i].lpLocalName,
 | 
				
			||||||
 | 
					            lpnrLocal[i].lpRemoteName, lpnrLocal[i].lpComment);
 | 
				
			||||||
 | 
					          if (lpnrLocal[i].dwUsage & RESOURCEUSAGE_CONTAINER)
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            Enumerate_Network_R(list, &lpnrLocal[i]);
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					          if (lpnrLocal[i].dwType == RESOURCETYPE_DISK &&
 | 
				
			||||||
 | 
					            lpnrLocal[i].dwDisplayType == RESOURCEDISPLAYTYPE_SHARE)
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            Add_element_to_list(list, lpnrLocal[i].lpRemoteName,
 | 
				
			||||||
 | 
					                    Format_filename(lpnrLocal[i].lpRemoteName, 19-1, FSOBJECT_DRIVE),
 | 
				
			||||||
 | 
					                    FSOBJECT_DRIVE, ICON_NETWORK);
 | 
				
			||||||
 | 
					            list->Nb_directories++;
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      else
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    while (0);
 | 
				
			||||||
 | 
					    GlobalFree((HGLOBAL) lpnrLocal);
 | 
				
			||||||
 | 
					    WNetCloseEnum(hEnum);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void Enumerate_Network(T_Fileselector *list)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  Enumerate_Network_R(list, NULL);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										4
									
								
								src/io.h
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								src/io.h
									
									
									
									
									
								
							@ -201,5 +201,9 @@ int Remove_directory(const char * path);
 | 
				
			|||||||
/// Calculate relative path
 | 
					/// Calculate relative path
 | 
				
			||||||
char * Calculate_relative_path(const char * ref_path, const char * path);
 | 
					char * Calculate_relative_path(const char * ref_path, const char * path);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(WIN32)
 | 
				
			||||||
 | 
					void Enumerate_Network(T_Fileselector *list);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** @}*/
 | 
					/** @}*/
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user