windows-nt/Source/XPSP1/NT/ds/netapi/netcmd/common/pword.c

233 lines
4.9 KiB
C
Raw Permalink Normal View History

2020-09-26 03:20:57 -05:00
/*++
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;
}