FreeDOS/kernel/network.c

173 lines
5.2 KiB
C
Raw Normal View History

/****************************************************************/
/* */
/* network.c */
/* DOS-C */
/* */
/* Networking Support functions */
/* */
/* Copyright (c) 1995, 1999 */
/* James Tabor */
/* All Rights Reserved */
/* */
/* This file is part of DOS-C. */
/* */
/* DOS-C is free software; you can redistribute it and/or */
/* modify it under the terms of the GNU General Public License */
/* as published by the Free Software Foundation; either version */
/* 2, or (at your option) any later version. */
/* */
/* DOS-C is distributed in the hope that it will be useful, but */
/* WITHOUT ANY WARRANTY; without even the implied warranty of */
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See */
/* the GNU General Public License for more details. */
/* */
/* You should have received a copy of the GNU General Public */
/* License along with DOS-C; see the file COPYING. If not, */
/* write to the Free Software Foundation, 675 Mass Ave, */
/* Cambridge, MA 02139, USA. */
/****************************************************************/
#include "portab.h"
#include "globals.h"
#ifdef VERSION_STRINGS
static BYTE *RcsId = "$Id$";
#endif
/*
* $Log$
* Revision 1.12 2001/04/29 17:34:40 bartoldeman
* A new SYS.COM/config.sys single stepping/console output/misc fixes.
*
* Revision 1.11 2001/04/15 03:21:50 bartoldeman
* See history.txt for the list of fixes.
*
* Revision 1.10 2001/04/02 23:18:30 bartoldeman
* Misc, zero terminated device names and redirector bugs fixed.
*
* Revision 1.9 2001/03/30 19:30:06 bartoldeman
* Misc fixes and implementation of SHELLHIGH. See history.txt for details.
*
* Revision 1.8 2001/03/21 02:56:26 bartoldeman
* See history.txt for changes. Bug fixes and HMA support are the main ones.
*
* Revision 1.7 2000/08/06 05:50:17 jimtabor
* Add new files and update cvs with patches and changes
*
* Revision 1.6 2000/06/21 18:16:46 jimtabor
* Add UMB code, patch, and code fixes
*
* Revision 1.5 2000/05/26 19:25:19 jimtabor
* Read History file for Change info
*
* Revision 1.4 2000/05/25 20:56:21 jimtabor
* Fixed project history
*
* Revision 1.3 2000/05/17 19:15:12 jimtabor
* Cleanup, add and fix source.
*
* Revision 1.2 2000/05/08 04:30:00 jimtabor
* Update CVS to 2020
*
* Revision 1.1.1.1 2000/05/06 19:34:53 jhall1
* The FreeDOS Kernel. A DOS kernel that aims to be 100% compatible with
* MS-DOS. Distributed under the GNU GPL.
*
* Revision 1.5 2000/03/31 05:40:09 jtabor
* Added Eric W. Biederman Patches
*
* Revision 1.4 2000/03/17 22:59:04 kernel
* Steffen Kaiser's NLS changes
*
* Revision 1.3 2000/03/09 06:07:11 kernel
* 2017f updates by James Tabor
*
* Revision 1.2 1999/09/23 04:40:48 jprice
* *** empty log message ***
*
*/
/* see RBIL D-2152 and D-215D06 before attempting
to change these two functions!
*/
UWORD get_machine_name(BYTE FAR * netname)
{
fmemcpy(netname, &net_name, 16);
return (NetBios);
}
VOID set_machine_name(BYTE FAR * netname, UWORD name_num)
{
NetBios = name_num;
fmemcpy(&net_name, netname, 15);
net_set_count++;
}
/*
* Read/Write from/to remote file.
* SFT gets updated with the amount of bytes r/w.
*
*/
UCOUNT Remote_RW(UWORD func, UCOUNT n, BYTE FAR * bp, sft FAR * s, COUNT FAR * err)
{
BYTE FAR *save_dta;
UWORD rc,
rx;
save_dta = dta;
lpCurSft = (sfttbl FAR *) s;
dta = bp;
rx = int2f_Remote_call(func, 0, n, 0, (VOID FAR *) s, 0, (VOID FAR *) & rc);
dta = save_dta;
*err = -rx;
return ((UCOUNT) rc);
}
#undef FIND_DEBUG
/*
*/
COUNT Remote_find(UWORD func, UCOUNT attr, BYTE FAR * name)
{
COUNT i;
char FAR *p;
if (func == REM_FINDFIRST)
{
SAttr = attr;
i = truename(name, PriPathName, FALSE);
if (i != SUCCESS) {
return i;
}
#if defined(FIND_DEBUG)
printf("Remote Find: n='");
p = name; while(*p) printf("%c", *p++);
printf("' p='");
p = PriPathName; while(*p) printf("%c", *p++);
printf("'\n");
#endif
}
fmemcpy(TempBuffer, dta, 21);
p = dta;
dta = (BYTE FAR *)TempBuffer;
i = int2f_Remote_call(func, 0, 0, 0, (VOID FAR *)current_ldt, 0, 0);
dta = p;
fmemcpy(dta, TempBuffer, 21);
if (i != 0)
return i;
((dmatch FAR *)dta)->dm_attr_fnd = (BYTE) SearchDir.dir_attrib;
((dmatch FAR *)dta)->dm_time = SearchDir.dir_time;
((dmatch FAR *)dta)->dm_date = SearchDir.dir_date;
((dmatch FAR *)dta)->dm_size = (LONG) SearchDir.dir_size;
ConvertName83ToNameSZ(((dmatch FAR *)dta)->dm_name, (BYTE *)SearchDir.dir_name);
return i;
}