Sweden-Number/misc/network.c
Alexandre Julliard 4f8c37b487 Release 960114
Sun Jan 14 13:45:22 1996  Alexandre Julliard  <julliard@sunsite.unc.edu>

	* [configure.in]
	Added check for gcc strength-reduce bug.

	* [controls/listbox.c]
	Changed ListBoxDirectory() to use the new DOS file functions.

	* [controls/menu.c]
	Fixed parameters for DeleteMenu() call in ChangeMenu().

	* [debugger/stack.c]
	Also display current frame in back-trace.

	* [files/directory.c] [files/dos_fs.c] [files/drive.c] [files/file.c]
	Complete rewrite of the DOS file handling.
	Implemented per-task file handles.
	Removed default Z: drive; needs to be put explicitely in wine.ini
	if desired.

	* [loader/module.c]
	Fixed file descriptor leak in LoadModule().

	* [loader/task.c]
	Initialise PDB file handle table in TASK_CreateTask().
	Close file handles on task termination.
	Implemented SetErrorMode().

	* [misc/network.c]
	Fixed WNetGetConnection() to use GetDriveType().

	* [misc/xmalloc.c]
	Added function xstrdup().

	* [miscemu/int21.c]
	Many changes for new DOS file functions.

	* [miscemu/interrupts.c]
	Moved DOS_GetEquipment() function into INT_Int11Handler().

	* [windows/win.c]
	Bug fix: create system menu before sending WM_NCCREATE.

	* [*/*.c]
	Replaced strcasecmp and strncasecmp by lstrcmpi and lstrncmpi for
	better portability.

Sat Jan 13 16:13:02 1996  Jim Peterson <jspeter@birch.ee.vt.edu>

	* [include/wintypes.h]
	Added 'typedef HGLOBAL GOBALHANDLE;'.  This is not precisely in line
	with the true windows 'typedef HANDLE GLOBALHANDLE;', but I believe
	it should suffice.

	* [include/winsock.h]
	Added '#include <arpa/inet.h>' for various declarations.  '#ifdef'-ed
	out some old style internet address #define's.

	* [loader/task.c]
	Made MakeProcInstance() return first parameter #ifdef WINELIB32.
	Made FreeProcInstance() do nothing #ifdef WINELIB32.
	'#ifdef'-ed out TASK_AllocThunk(), as it was unused in WINELIB32.

	* [library/miscstubs.c]
	Made GetWndProcEntry16() return ACTIVATEAPP_callback() when called
	with name="ActivateAppProc".  This hardly seems correct, but it's my
	best guess as to how the emulator responds.

Sat Jan  6 17:57:45 1996  Martin von Loewis <loewis@informatik.hu-berlin.de>

	* [if1632/kernel32.spec][win32/process.c]
	WIN32_GetProcAddress, LoadLibraryA: new functions

	* [if1632/relay32.c]
	RELAY32_GetEntryPoint: Removed code to load PE DLLs

	* [include/pe_image.h][include/pe_exe.h]
	struct pe_data: new fields base_addr,load_addr,vma_size,pe_reloc
	struct PE_Reloc_Block: new structure

	* [loader/module.c]
	MODULE_RegisterModule: new function

	* [loader/pe_image.c]
	PE_FindExportedFunction,PE_GetProcAddress: new functions
	fixup_imports: expect struct w_files* now, fill dlls_to_init,
	               load PE DLLs
	do_relocations: new functions
	calc_vma_size: renamed from dump_table
	PE_LoadImage: use malloc to allocate memory for image
	PE_InitDLL: expect HMODULE
	PE_InitializeDLLs: new function

	* [loader/task.c]
	NE_InitializeDLLs: branch to PE_InitializeDLLs for PE modules
	GetExePtr: Accept PE modules

	* [misc/commdlg.c]
	FILEDLG_WMCommand: unpack WIN32 WM_COMMAND appropriately for WineLib

Thu Jan  4 11:36:21 1996  Manfred Weichel <Manfred.Weichel@mch.sni.de>

	* [misc/port.c]
	New file with usleep() function for SVR4.

	* [configure.in]
	Check for usleep() function.

Tue Jan 02 14:00:00 1996  Anand Kumria <akumria@ozemail.com.au>

	* [if1632/toolhelp.spec] [include/toolhelp.h]
	  [misc/user.c] [windows/message.c]
	Implement TOOLHELP.80 TimerCount. Fix GetTickCount.

	* [winsocket.c]
	Fixed ENOENT error.

	* [miscemu/dpmi.c]
	Implement DPMI Get Page Size (AX=0604, INT 31)

	* [memory/global.c]
	Implement TOOLHELP.72 GetMemManInfo.

Mon Jan  2 10:33:00 1996  Thomas Sandford <t.d.g.sandford@prds-grn.demon.co.uk>

	* [if1632/callback.c]
	CallWindowProc() - When calling RELAY32_CallWindowProc, check
	whether lParam should be a SEGPTR, and if so convert it to one.

	* [if1632/gdi.spec] [if1632/kernel32.spec] [if1632/user32.spec]
	Numerous functions added, mostly calls to original (win16)
 	functions.  Note that some (many) of these are probably not
 	strictly correct, but with these additions freecell will at least
 	display its main window though it is garbled.

	* [if1632/winprocs.spec]
	Completely rewritten - all WndProcs now have win32 versions to
	help with the lparam SEGPTR fix in callback.c

	* [include/kernel32.h]
	LPTCSTR defined.

	* [include/peexe.h]
	Definition of PE_Export_Directory amended.

	* [include/resource32.h]
	New file.

	* [include/stackframe.h]
	Definition of MAKE_SEGPTR macro #ifdef'd out and replaced with
	prototype for replacement function in memory/selector.c which
	can operate on any given memory address. This is currently
	required for win32 support. It is a dreadful cludge, and will
	certainly slow down other programs. If you are not interested
	in win32 development you may wish to reverse this patch.

	* [include/windows.h]
	Definition of SW_SHOWDEFAULT added.

	* [loader/pe_image.c]
	Extensive rewrites of xmmap() fixup_imports().
	PE_LoadImage() - initialisation of bss added, extraction of
	module name fixed, initialisation of DLL added.
	PE_InitDLL() - now does something.
	PE_Win32CallToStart() - initialisation of TEB pointed to by
	fs added.
	PE_InitTEB() created to perform TEB initialisation.

	* [memory/selector.c] 
	New function MAKE_SEGPTR() - see include/stackframe.h above.

	* [misc/user32.c]
	USER32_RegisterClassA(), CreateWindowExA() memory allocation
	method changed. This is probably now unnecessary with the
	new MAKE_SEGPTR handling code.
	USER32_DefWndProcA() removed to win32/winprocs.c
	USER32_TranslateMessage added.

	* [tools/build.c]
	handling of win32 spec files changed to support gcc2.6.X
	this requires optimisations to be disabled.

	* [win32/resource.c] [win32/newfns.c] [win32/heap.c] [win32/winprocs.c]
	New files.

	* [win32/Makefile.in]
	New files heap.c, newfns.c, resource.c and winprocs.c added to build.

	* [win32/file.c]
	New function W32_SetHandleCount.

	* [win32/init.c]
	WIN32_GetModuleHandle() - now returns handle of running process
	if called with NULL.
	GetStartupInfoA() - set cbReserved2 to 0.

	* [win32/memory.c]
	VirtualAlloc() - set mmap() file parameter to -1 instead of 0 to make
	it work with FreeBSD. Also check for return value. Removed extra
	return.

	* [windows/winpos.c]
	ShowWindow() - SW_SHOWDEFAULT handling kludged in.
1996-01-14 18:12:01 +00:00

405 lines
12 KiB
C

/*
* Network functions
*/
#include <ctype.h>
#include <stdio.h>
#include "windows.h"
#include "drive.h"
#define WN_SUCCESS 0x0000
#define WN_NOT_SUPPORTED 0x0001
#define WN_NET_ERROR 0x0002
#define WN_MORE_DATA 0x0003
#define WN_BAD_POINTER 0x0004
#define WN_BAD_VALUE 0x0005
#define WN_BAD_PASSWORD 0x0006
#define WN_ACCESS_DENIED 0x0007
#define WN_FUNCTION_BUSY 0x0008
#define WN_WINDOWS_ERROR 0x0009
#define WN_BAD_USER 0x000A
#define WN_OUT_OF_MEMORY 0x000B
#define WN_CANCEL 0x000C
#define WN_CONTINUE 0x000D
#define WN_NOT_CONNECTED 0x0030
#define WN_OPEN_FILES 0x0031
#define WN_BAD_NETNAME 0x0032
#define WN_BAD_LOCALNAME 0x0033
#define WN_ALREADY_CONNECTED 0x0034
#define WN_DEVICE_ERROR 0x0035
#define WN_CONNECTION_CLOSED 0x0036
typedef LPSTR LPNETRESOURCE;
/**************************************************************************
* WNetErrorText [USER.499]
*/
int WNetErrorText(WORD nError,LPSTR lpszText,WORD cbText)
{
printf("EMPTY STUB !!! WNetErrorText(%x,%p,%x)\n",
nError,lpszText,cbText);
return FALSE;
}
/**************************************************************************
* WNetOpenJob [USER.501]
*/
int WNetOpenJob(LPSTR szQueue,LPSTR szJobTitle,WORD nCopies,LPWORD pfh)
{
printf("EMPTY STUB !!! WNetOpenJob('%s','%s',%x,%p)\n",
szQueue,szJobTitle,nCopies,pfh);
return WN_NET_ERROR;
}
/**************************************************************************
* WNetCloseJob [USER.502]
*/
int WNetCloseJob(WORD fh,LPWORD pidJob,LPSTR szQueue)
{
printf("EMPTY STUB !!! WNetCloseJob(%x,%p,'%s')\n",
fh,pidJob,szQueue);
return WN_NET_ERROR;
}
/**************************************************************************
* WNetAbortJob [USER.503]
*/
int WNetAbortJob(LPSTR szQueue,WORD wJobId)
{
printf("EMPTY STUB !!! WNetAbortJob('%s',%x)\n",
szQueue,wJobId);
return WN_NET_ERROR;
}
/**************************************************************************
* WNetHoldJob [USER.504]
*/
int WNetHoldJob(LPSTR szQueue,WORD wJobId)
{
printf("EMPTY STUB !!! WNetHoldJob('%s',%x)\n",
szQueue,wJobId);
return WN_NET_ERROR;
}
/**************************************************************************
* WNetReleaseJob [USER.505]
*/
int WNetReleaseJob(LPSTR szQueue,WORD wJobId)
{
printf("EMPTY STUB !!! WNetReleaseJob('%s',%x)\n",
szQueue,wJobId);
return WN_NET_ERROR;
}
/**************************************************************************
* WNetCancelJob [USER.506]
*/
int WNetCancelJob(LPSTR szQueue,WORD wJobId)
{
printf("EMPTY STUB !!! WNetCancelJob('%s',%x)\n",
szQueue,wJobId);
return WN_NET_ERROR;
}
/**************************************************************************
* WNetSetJobCopies [USER.507]
*/
int WNetSetJobCopies(LPSTR szQueue,WORD wJobId,WORD nCopies)
{
printf("EMPTY STUB !!! WNetSetJobCopies('%s',%x,%x)\n",
szQueue,wJobId,nCopies);
return WN_NET_ERROR;
}
/**************************************************************************
* WNetWatchQueue [USER.508]
*/
int WNetWatchQueue(HWND hWnd,LPSTR szLocal,LPSTR szUser,WORD nQueue)
{
printf("EMPTY STUB !!! WNetWatchQueue("NPFMT",'%s','%s',%x)\n",
hWnd,szLocal,szUser,nQueue);
return WN_NET_ERROR;
}
/**************************************************************************
* WNetUnwatchQueue [USER.509]
*/
int WNetUnwatchQueue(LPSTR szQueue)
{
printf("EMPTY STUB !!! WNetUnwatchQueue('%s')\n", szQueue);
return WN_NET_ERROR;
}
/**************************************************************************
* WNetLockQueueData [USER.510]
*/
int WNetLockQueueData(LPSTR szQueue,LPSTR szUser,void *lplpQueueStruct)
{
printf("EMPTY STUB !!! WNetLockQueueData('%s','%s',%p)\n",
szQueue,szUser,lplpQueueStruct);
return WN_NET_ERROR;
}
/**************************************************************************
* WNetUnlockQueueData [USER.511]
*/
int WNetUnlockQueueData(LPSTR szQueue)
{
printf("EMPTY STUB !!! WNetUnlockQueueData('%s')\n",szQueue);
return WN_NET_ERROR;
}
/**************************************************************************
* WNetGetConnection [USER.512]
*/
int WNetGetConnection(LPSTR lpLocalName,
LPSTR lpRemoteName, UINT FAR *cbRemoteName)
{
const char *path;
if (lpLocalName[1] == ':')
{
int drive = toupper(lpLocalName[0]) - 'A';
switch(GetDriveType(drive))
{
case DRIVE_CANNOTDETERMINE:
case DRIVE_DOESNOTEXIST:
return WN_BAD_LOCALNAME;
case DRIVE_REMOVABLE:
case DRIVE_FIXED:
return WN_NOT_CONNECTED;
case DRIVE_REMOTE:
path = DRIVE_GetDosCwd(drive);
if (strlen(path) + 1 > *cbRemoteName) return WN_MORE_DATA;
strcpy( lpRemoteName, path );
*cbRemoteName = strlen(lpRemoteName) + 1;
return WN_SUCCESS;
}
}
return WN_BAD_LOCALNAME;
}
/**************************************************************************
* WNetGetCaps [USER.513]
*/
int WNetGetCaps(WORD capability)
{
return 0;
}
/**************************************************************************
* WNetDeviceMode [USER.514]
*/
int WNetDeviceMode(HWND hWndOwner)
{
printf("EMPTY STUB !!! WNetDeviceMode("NPFMT")\n",hWndOwner);
return WN_NET_ERROR;
}
/**************************************************************************
* WNetBrowseDialog [USER.515]
*/
int WNetBrowseDialog(HWND hParent,WORD nType,LPSTR szPath)
{
printf("EMPTY STUB !!! WNetBrowseDialog("NPFMT",%x,'%s')\n",
hParent,nType,szPath);
return WN_NET_ERROR;
}
/**************************************************************************
* WNetGetUser [USER.516]
*/
UINT WNetGetUser(LPSTR lpLocalName, LPSTR lpUserName, DWORD *lpSize)
{
printf("EMPTY STUB !!! WNetGetUser(%p, %p, %p);\n",
lpLocalName, lpUserName, lpSize);
return WN_NET_ERROR;
}
/**************************************************************************
* WNetAddConnection [USER.517]
*/
UINT WNetAddConnection(LPSTR lpNetPath, LPSTR lpPassWord, LPSTR lpLocalName)
{
printf("EMPTY STUB !!! WNetAddConnection('%s', %p, '%s');\n",
lpNetPath, lpPassWord, lpLocalName);
return WN_NET_ERROR;
}
/**************************************************************************
* WNetCancelConnection [USER.518]
*/
UINT WNetCancelConnection(LPSTR lpName, BOOL bForce)
{
printf("EMPTY STUB !!! WNetCancelConnection('%s', %04X);\n",
lpName, bForce);
return WN_NET_ERROR;
}
/**************************************************************************
* WNetGetError [USER.519]
*/
int WNetGetError(LPWORD nError)
{
printf("EMPTY STUB !!! WNetGetError(%p)\n",nError);
return WN_NET_ERROR;
}
/**************************************************************************
* WNetGetErrorText [USER.520]
*/
int WNetGetErrorText(WORD nError, LPSTR lpBuffer, LPWORD nBufferSize)
{
printf("EMPTY STUB !!! WNetGetErrorText(%x,%p,%p)\n",
nError,lpBuffer,nBufferSize);
return WN_NET_ERROR;
}
/**************************************************************************
* WNetRestoreConnection [USER.523]
*/
int WNetRestoreConnection(HWND hwndOwner,LPSTR lpszDevice)
{
printf("EMPTY STUB !!! WNetRestoreConnection("NPFMT",'%s')\n",
hwndOwner,lpszDevice);
return WN_NET_ERROR;
}
/**************************************************************************
* WNetWriteJob [USER.524]
*/
int WNetWriteJob(HANDLE hJob,void *lpData,LPWORD lpcbData)
{
printf("EMPTY STUB !!! WNetWriteJob("NPFMT",%p,%p)\n",
hJob,lpData,lpcbData);
return WN_NET_ERROR;
}
/**************************************************************************
* WnetConnectDialog [USER.525]
*/
UINT WNetConnectDialog(HWND hWndParent, WORD iType)
{
printf("EMPTY STUB !!! WNetConnectDialog("NPFMT", %4X)\n", hWndParent, iType);
return WN_SUCCESS;
}
/**************************************************************************
* WNetDisconnectDialog [USER.526]
*/
int WNetDisconnectDialog(HWND hwndOwner, WORD iType)
{
printf("EMPTY STUB !!! WNetDisconnectDialog("NPFMT",%x)\n",
hwndOwner,iType);
return WN_NET_ERROR;
}
/**************************************************************************
* WnetConnectionDialog [USER.527]
*/
UINT WNetConnectionDialog(HWND hWndParent, WORD iType)
{
printf("EMPTY STUB !!! WNetConnectionDialog("NPFMT", %4X)\n",
hWndParent, iType);
return WN_SUCCESS;
}
/**************************************************************************
* WNetViewQueueDialog [USER.528]
*/
int WNetViewQueueDialog(HWND hwndOwner,LPSTR lpszQueue)
{
printf("EMPTY STUB !!! WNetViewQueueDialog("NPFMT",'%s')\n",
hwndOwner,lpszQueue);
return WN_NET_ERROR;
}
/**************************************************************************
* WNetPropertyDialog [USER.529]
*/
int WNetPropertyDialog(HWND hwndParent,WORD iButton,
WORD nPropSel,LPSTR lpszName,WORD nType)
{
printf("EMPTY STUB !!! WNetPropertyDialog("NPFMT",%x,%x,'%s',%x)\n",
hwndParent,iButton,nPropSel,lpszName,nType);
return WN_NET_ERROR;
}
/**************************************************************************
* WNetGetDirectoryType [USER.530]
*/
int WNetGetDirectoryType(LPSTR lpName,void *lpType)
{
printf("EMPTY STUB !!! WNetGetDirectoryType('%s',%p)\n",
lpName,lpType);
return WN_NET_ERROR;
}
/**************************************************************************
* WNetDirectoryNotify [USER.531]
*/
int WNetDirectoryNotify(HWND hwndOwner,void *lpDir,WORD wOper)
{
printf("EMPTY STUB !!! WNetDirectoryNotify("NPFMT",%p,%x)\n",
hwndOwner,lpDir,wOper);
return WN_NET_ERROR;
}
/**************************************************************************
* WNetGetPropertyText [USER.532]
*/
int WNetGetPropertyText(HWND hwndParent,WORD iButton,WORD nPropSel,
LPSTR lpszName,WORD nType)
{
printf("EMPTY STUB !!! WNetGetPropertyText("NPFMT",%x,%x,'%s',%x)\n",
hwndParent,iButton,nPropSel,lpszName,nType);
return WN_NET_ERROR;
}
/**************************************************************************
* WNetAddConnection2 [USER.???]
*/
UINT WNetAddConnection2(LPSTR lpNetPath, LPSTR lpPassWord,
LPSTR lpLocalName, LPSTR lpUserName)
{
printf("EMPTY STUB !!! WNetAddConnection2('%s', %p, '%s', '%s');\n",
lpNetPath, lpPassWord, lpLocalName, lpUserName);
return WN_NET_ERROR;
}
/**************************************************************************
* WNetCloseEnum [USER.???]
*/
UINT WNetCloseEnum(HANDLE hEnum)
{
printf("EMPTY STUB !!! WNetCloseEnum("NPFMT");\n", hEnum);
return WN_NET_ERROR;
}
/**************************************************************************
* WNetEnumResource [USER.???]
*/
UINT WNetEnumResource(HANDLE hEnum, DWORD cRequ,
DWORD *lpCount, LPVOID lpBuf)
{
printf("EMPTY STUB !!! WNetEnumResource("NPFMT", %08lX, %p, %p);\n",
hEnum, cRequ, lpCount, lpBuf);
return WN_NET_ERROR;
}
/**************************************************************************
* WNetOpenEnum [USER.???]
*/
UINT WNetOpenEnum(DWORD dwScope, DWORD dwType,
LPNETRESOURCE lpNet, HANDLE FAR *lphEnum)
{
printf("EMPTY STUB !!! WNetOpenEnum(%08lX, %08lX, %p, %p);\n",
dwScope, dwType, lpNet, lphEnum);
return WN_NET_ERROR;
}