|
|
/*++
Copyright (c) 1991-1992 Microsoft Corporation
Module Name:
PWORD.C
Abstract:
Convert parsing routines for YES/NO and weekday
Author:
Dan Hinsley (danhi) 06-Jun-1991
Environment:
User Mode - Win32
Revision History:
31-May-1989 chuckc Created
24-Apr-1991 danhi 32 bit NT version
06-Jun-1991 Danhi Sweep to conform to NT coding style
01-Oct-1992 JohnRo RAID 3556: Added NetpSystemTimeToGmtTime() for DosPrint APIs.
--*/
//
// INCLUDES
//
#include <windows.h> // IN, LPTSTR, etc.
#include <lmcons.h>
#include <lui.h>
#include <stdio.h>
#include <malloc.h>
/*
* Should I put the ID in apperr2.h ? * but we should sync the .mc file. */ #include "netmsg.h"
#include <luitext.h>
#include "netascii.h"
#include <tchar.h>
#include <nettext.h> // for swtxt_SW_*
/*-- static data for weeks info --*/
static searchlist_data week_data[] = { {APE2_GEN_NONLOCALIZED_MONDAY, 0}, {APE2_GEN_NONLOCALIZED_TUESDAY, 1}, {APE2_GEN_NONLOCALIZED_WEDNSDAY, 2}, {APE2_GEN_NONLOCALIZED_THURSDAY, 3}, {APE2_GEN_NONLOCALIZED_FRIDAY, 4}, {APE2_GEN_NONLOCALIZED_SATURDAY, 5}, {APE2_GEN_NONLOCALIZED_SUNDAY, 6}, {APE2_GEN_NONLOCALIZED_MONDAY_ABBREV, 0}, {APE2_GEN_NONLOCALIZED_TUESDAY_ABBREV, 1}, {APE2_GEN_NONLOCALIZED_WEDNSDAY_ABBREV, 2}, {APE2_GEN_NONLOCALIZED_THURSDAY_ABBREV, 3}, {APE2_GEN_NONLOCALIZED_FRIDAY_ABBREV, 4}, {APE2_GEN_NONLOCALIZED_SATURDAY_ABBREV, 5}, {APE2_GEN_NONLOCALIZED_SATURDAY_ABBREV2,5}, {APE2_GEN_NONLOCALIZED_SUNDAY_ABBREV, 6}, {APE2_GEN_MONDAY_ABBREV, 0}, {APE2_GEN_TUESDAY_ABBREV, 1}, {APE2_GEN_WEDNSDAY_ABBREV, 2}, {APE2_GEN_THURSDAY_ABBREV, 3}, {APE2_GEN_FRIDAY_ABBREV, 4}, {APE2_GEN_SATURDAY_ABBREV, 5}, {APE2_TIME_SATURDAY_ABBREV2, 5}, {APE2_GEN_SUNDAY_ABBREV, 6}, {APE2_GEN_MONDAY, 0}, {APE2_GEN_TUESDAY, 1}, {APE2_GEN_WEDNSDAY, 2}, {APE2_GEN_THURSDAY, 3}, {APE2_GEN_FRIDAY, 4}, {APE2_GEN_SATURDAY, 5}, {APE2_GEN_SUNDAY, 6}, {0,0} } ;
#define DAYS_IN_WEEK (7)
#define NUM_DAYS_LIST (sizeof(week_data)/sizeof(week_data[0])+DAYS_IN_WEEK)
/*
* NOTE - we init the first 7 hardwired days * and get the rest from the message file */ static searchlist week_list[NUM_DAYS_LIST + DAYS_IN_WEEK] = { {LUI_txt_monday, 0}, {LUI_txt_tuesday, 1}, {LUI_txt_wednesday, 2}, {LUI_txt_thursday, 3}, {LUI_txt_friday, 4}, {LUI_txt_saturday, 5}, {LUI_txt_sunday, 6} } ;
/*
* Name: ParseWeekDay * Takes a string and parses it for a week day * Args: PTCHAR inbuf - string to parse * PDWORD answer - set to 0-6, if inbuf is a weekday, * undefined otherwise. * Returns: 0 if ok, * ERROR_INVALID_PARAMETER or NERR_InternalError otherwise. * Globals: (none) * Statics: (none) * Remarks: * Updates: (none) */ DWORD ParseWeekDay( PTCHAR inbuf, PDWORD answer ) { TCHAR buffer[256] ; DWORD bytesread ; LONG result ;
if (inbuf == NULL || inbuf[0] == NULLC) { return ERROR_INVALID_PARAMETER; }
if (ILUI_setup_listW(buffer, DIMENSION(buffer), 2, &bytesread, week_data,week_list)) { return NERR_InternalError; }
if (ILUI_traverse_slistW(inbuf, week_list, &result)) { return ERROR_INVALID_PARAMETER; }
*answer = result ;
return 0; }
/*----------- Yes or No ------------*/
static searchlist_data yesno_data[] = { {APE2_GEN_YES, LUI_YES_VAL}, {APE2_GEN_NO, LUI_NO_VAL}, {APE2_GEN_NLS_YES_CHAR, LUI_YES_VAL}, {APE2_GEN_NLS_NO_CHAR, LUI_NO_VAL}, {0,0} } ;
#define NUM_YESNO_LIST (sizeof(yesno_data)/sizeof(yesno_data[0])+2)
static searchlist yesno_list[NUM_YESNO_LIST+2] = { {LUI_txt_yes, LUI_YES_VAL}, {LUI_txt_no, LUI_NO_VAL}, } ;
/*
* Name: LUI_ParseYesNo * Takes a string and parses it for YES or NO. * Args: PTCHAR inbuf - string to parse * PUSHORT answer - set to LUI_YES_VAL or LUI_NO_VAL * if inbuf matches YES/NO, undefined otherwise. * Returns: 0 if ok, * ERROR_INVALID_PARAMETER or NERR_InternalError otherwise. * Globals: yesno_data, yesno_list * Statics: (none) * Remarks: * Updates: (none) */ DWORD LUI_ParseYesNo( PTCHAR inbuf, PDWORD answer ) { TCHAR buffer[128] ; DWORD bytesread ; LONG result ; DWORD err;
if (inbuf == NULL || inbuf[0] == NULLC) { return ERROR_INVALID_PARAMETER; }
if (err = ILUI_setup_listW(buffer, DIMENSION(buffer), 2, &bytesread, yesno_data, yesno_list)) { return err; }
if (ILUI_traverse_slistW(inbuf, yesno_list, &result)) { if (!_tcsicmp(inbuf, &swtxt_SW_YES[1])) { *answer = LUI_YES_VAL; return 0; } else if (!_tcsicmp(inbuf, &swtxt_SW_NO[1])) { *answer = LUI_NO_VAL; return 0; } else { return ERROR_INVALID_PARAMETER; } }
*answer = result;
return 0; }
|