233 lines
4.9 KiB
C
233 lines
4.9 KiB
C
/*++
|
|
|
|
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;
|
|
}
|