DOS操作系统源代码

源代码在线查看: strings.c

软件大小: 844 K
上传用户: cy_jing
关键词: DOS 操作系统 源代码
下载地址: 免注册下载 普通下载 VIP

相关代码

				
				/****************************************************************/
				/*								*/
				/*			    strings.c				*/
				/*								*/
				/*		  Global String Handling Functions		*/
				/*								*/
				/*			Copyright (c) 1995			*/
				/*		 	Pasquale J. Villani			*/
				/*			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 "../../hdr/portab.h"
				
				/* $Logfile:   C:/dos-c/src/kernel/strings.c_v  $ */
				#ifdef VERSION_STRINGS
				static BYTE *stringsRcsId = "$Header:   C:/dos-c/src/kernel/strings.c_v   1.6   04 Jan 1998 23:15:16   patv  $";
				#endif
				
				/* $Log:   C:/dos-c/src/kernel/strings.c_v  $
				 * 
				 *    Rev 1.6   04 Jan 1998 23:15:16   patv
				 * Changed Log for strip utility
				 * 
				 *    Rev 1.5   31 Dec 1997  3:59:30   patv
				 * Added new far string functions.
				 * 
				 *    Rev 1.4   29 May 1996 21:03:30   patv
				 * bug fixes for v0.91a
				 * 
				 *    Rev 1.3   19 Feb 1996  3:21:36   patv
				 * Added NLS, int2f and config.sys processing
				 * 
				 *    Rev 1.2   01 Sep 1995 17:54:22   patv
				 * First GPL release.
				 * 
				 *    Rev 1.1   30 Jul 1995 20:51:58   patv
				 * Eliminated version strings in ipl
				 * 
				 *    Rev 1.0   02 Jul 1995  8:33:46   patv
				 * Initial revision.
				 */
				/* $EndLog$ */
				
				#ifdef PROTO
				VOID strcpy(REG BYTE *, REG BYTE *);
				#endif
				
				
				COUNT 
				strlen (REG BYTE *s)
				{
					REG WORD cnt = 0;
				
					while(*s++ != 0)
						++cnt;
					return cnt;
				}
				
				
				COUNT 
				fstrlen (REG BYTE FAR *s)
				{
					REG WORD cnt = 0;
				
					while(*s++ != 0)
						++cnt;
					return cnt;
				}
				
				
				VOID
				strcpy (REG BYTE *d, REG BYTE *s)
				{
					while(*s != 0)
						*d++ = *s++;
					*d = 0;
				}
				
				VOID
				_fstrcpy (REG BYTE FAR *d, REG BYTE FAR *s)
				{
					while(*s != 0)
						*d++ = *s++;
					*d = 0;
				}
				
				VOID
				strncpy (REG BYTE *d, REG BYTE *s, COUNT l)
				{
					COUNT idx = 1;
					while(*s != 0 && idx++ 						*d++ = *s++;
					*d = 0;
				}
				
				
				VOID 
				strcat (REG BYTE *d, REG BYTE *s)
				{
					while(*d != 0)
						++d;
					strcpy(d, s);
				}
				
				
				COUNT 
				strcmp (REG BYTE *d, REG BYTE *s)
				{
					while(*s != '\0' && *d != '\0')
					{
						if(*d == *s)
							++s, ++d;
						else
							return *d - *s;
					}
					return *d - *s;
				}
				
				COUNT 
				fstrcmp (REG BYTE FAR *d, REG BYTE FAR *s)
				{
					while(*s != '\0' && *d != '\0')
					{
						if(*d == *s)
							++s, ++d;
						else
							return *d - *s;
					}
					return *d - *s;
				}
				
				COUNT 
				strncmp (REG BYTE *d, REG BYTE *s, COUNT l)
				{
					COUNT index = 1;
					while(*s != '\0' && *d != '\0' && index++ 					{
						if(*d == *s)
							++s, ++d;
						else
							return *d - *s;
					}
					return *d - *s;
				}
				
				
				COUNT 
				fstrncmp (REG BYTE FAR *d, REG BYTE FAR *s, COUNT l)
				{
					COUNT index = 1;
					while(*s != '\0' && *d != '\0' && index++ 					{
						if(*d == *s)
							++s, ++d;
						else
							return *d - *s;
					}
					return *d - *s;
				}
				
				
				VOID
				fstrncpy(REG BYTE FAR *d, REG BYTE FAR *s, COUNT l)
				{
					COUNT idx = 1;
					while(*s != 0 && idx++ 						*d++ = *s++;
					*d = 0;
				}
				
				
				/* Yet another change for true portability (WDL)			*/
				COUNT 
				tolower (COUNT c)
				{
					if(c >= 'A' && c 						return (c + ('a' - 'A'));
					else
						return c;
				}
				
				
				/* Yet another change for true portability (PJV)			*/
				COUNT 
				toupper (COUNT c)
				{
					if(c >= 'a' && c 						return (c - ('a' - 'A'));
					else
						return c;
				}
				
				
				
				
				
							

相关资源