mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
130 lines
3.8 KiB
130 lines
3.8 KiB
/************************************************************************/
|
|
/* */
|
|
/* DISKUTIL.C */
|
|
/* */
|
|
/* Copyright (c) 1994, ATI Technologies Incorporated. */
|
|
/************************************************************************/
|
|
|
|
/********************** PolyTron RCS Utilities
|
|
|
|
$Revision: 1.0 $
|
|
$Date: 14 Sep 1994 15:33:02 $
|
|
$Author: RWOLFF $
|
|
$Log: S:/source/wnt/ms11/miniport/vcs/diskutil.c $
|
|
*
|
|
* Rev 1.0 14 Sep 1994 15:33:02 RWOLFF
|
|
* Initial revision.
|
|
|
|
|
|
End of PolyTron RCS section *****************/
|
|
|
|
#ifdef DOC
|
|
DISKUTIL.C - Source file for Windows NT routines used in reading
|
|
files from disk. These routines correspond roughly
|
|
to standard library routines which are not available
|
|
to Windows NT miniports.
|
|
|
|
#endif
|
|
|
|
|
|
// COMPILER INCLUDES
|
|
#include <string.h>
|
|
|
|
// NT INCLUDES
|
|
#include "miniport.h"
|
|
#include "video.h"
|
|
|
|
// APPLICATION INCLUDES
|
|
#include "stdtyp.h"
|
|
#include "amach1.h"
|
|
#include "atimp.h"
|
|
#include "diskutil.h"
|
|
|
|
/*
|
|
* Definitions used internally by routines in this module
|
|
*/
|
|
#define BIG_NUM 0xFFFFFFFFL /* Largest allowed 32 bit unsigned number */
|
|
|
|
|
|
/*
|
|
* Allow miniport to be swapped out when not needed.
|
|
*/
|
|
#if defined (ALLOC_PRAGMA)
|
|
#pragma alloc_text(PAGE_COM, SynthStrcspn)
|
|
#endif
|
|
|
|
|
|
|
|
/***************************************************************************
|
|
*
|
|
* char *SynthStrcspn(InputString, WhatToMatch);
|
|
*
|
|
* char *InputString; String to be searched
|
|
* char *WhatToMatch; Set of characters to look for in InputString
|
|
*
|
|
* DESCRIPTION:
|
|
* Replacement for strcspn(). Searches for first occurence of a
|
|
* character found in WhatToMatch in InputString
|
|
*
|
|
* RETURN VALUE:
|
|
* Pointer to first character from WhatToMatch in InputString
|
|
* NULL if no match found
|
|
*
|
|
* GLOBALS CHANGED:
|
|
* none
|
|
*
|
|
* CALLED BY:
|
|
* FreqTblCallback()
|
|
*
|
|
* AUTHOR:
|
|
* Robert Wolff
|
|
*
|
|
* CHANGE HISTORY:
|
|
*
|
|
* TEST HISTORY:
|
|
*
|
|
***************************************************************************/
|
|
|
|
char *SynthStrcspn(char *InputString, char *WhatToMatch)
|
|
{
|
|
ULONG FirstMatch = BIG_NUM; /* Location of first character from WhatToMatch in InputString */
|
|
ULONG CurrentMatch; /* Location of first instance of current character in InputString */
|
|
ULONG CharToMatch; /* Character from WhatToMatch currently under test */
|
|
|
|
/*
|
|
* Go through all the characters in WhatToMatch.
|
|
*/
|
|
for (CharToMatch = 0; WhatToMatch[CharToMatch] != '\x0'; CharToMatch++)
|
|
{
|
|
/*
|
|
* Find first instance of current character in InputString. If
|
|
* the current character is not present in InputString, strchr()
|
|
* will return NULL. Since NULL is less than any valid pointer,
|
|
* and we want the lowest valid pointer, replace NULL with a
|
|
* value larger than the highest possible valid pointer.
|
|
*/
|
|
CurrentMatch = (ULONG) strchr(InputString, WhatToMatch[CharToMatch]);
|
|
if (CurrentMatch == (ULONG)NULL)
|
|
CurrentMatch = BIG_NUM;
|
|
|
|
/*
|
|
* If the match on the current character occurs earlier than
|
|
* the previous earliest match we found, we have a new
|
|
* earliest match.
|
|
*/
|
|
if (CurrentMatch < FirstMatch)
|
|
FirstMatch = CurrentMatch;
|
|
|
|
} /* end for (search all characters in WhatToMatch) */
|
|
|
|
/*
|
|
* If we have not found a match, return NULL, otherwise return
|
|
* a pointer to the first matching character.
|
|
*/
|
|
if (FirstMatch == BIG_NUM)
|
|
return NULL;
|
|
else
|
|
return (char *)FirstMatch;
|
|
|
|
} /* SynthStrcspn() */
|
|
|