ReactOS  0.4.15-dev-1070-ge1a01de
regcmds.c File Reference
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
#include <ctype.h>
#include "regproc.h"
Include dependency graph for regcmds.c:

Go to the source code of this file.

Macros

#define WIN32_LEAN_AND_MEAN
 

Enumerations

enum  REGEDIT_ACTION {
  ACTION_UNDEF, ACTION_ADD, ACTION_EXPORT, ACTION_DELETE,
  ACTION_UNDEF, ACTION_ADD, ACTION_EXPORT, ACTION_DELETE,
  ACTION_VIEW
}
 

Functions

void error_unknown_switch (char chu, char *s)
 
BOOL PerformRegAction (REGEDIT_ACTION action, LPSTR s)
 
BOOL ProcessCmdLine (LPSTR lpCmdLine)
 

Variables

static charusage
 

Macro Definition Documentation

◆ WIN32_LEAN_AND_MEAN

#define WIN32_LEAN_AND_MEAN

Definition at line 25 of file regcmds.c.

Enumeration Type Documentation

◆ REGEDIT_ACTION

Enumerator
ACTION_UNDEF 
ACTION_ADD 
ACTION_EXPORT 
ACTION_DELETE 
ACTION_UNDEF 
ACTION_ADD 
ACTION_EXPORT 
ACTION_DELETE 
ACTION_VIEW 

Definition at line 74 of file regcmds.c.

Function Documentation

◆ error_unknown_switch()

void error_unknown_switch ( char  chu,
char s 
)

Process unknown switch.

Params: chu - the switch character in upper-case. s - the command line string where s points to the switch character.

Definition at line 85 of file regcmds.c.

86 {
87  if (isalpha(chu)) {
88  printf("Undefined switch /%c!\n", chu);
89  } else {
90  printf("Alphabetic character is expected after '%c' "
91  "in switch specification\n", *(s - 1));
92  }
93  //exit(1);
94 }
#define isalpha(c)
Definition: acclib.h:74
GLdouble s
Definition: gl.h:2039
#define printf
Definition: config.h:203

Referenced by ProcessCmdLine().

◆ PerformRegAction()

BOOL PerformRegAction ( REGEDIT_ACTION  action,
LPSTR  s 
)

Definition at line 96 of file regcmds.c.

97 {
99  TCHAR reg_key_name[KEY_MAX_LEN];
100 
101  switch (action) {
102  case ACTION_ADD:
104  if (!filename[0]) {
105  printf("No file name is specified\n%s", usage);
106  return FALSE;
107  //exit(1);
108  }
109  while (filename[0]) {
111  perror("");
112  printf("Can't open file \"%s\"\n", filename);
113  return FALSE;
114  //exit(1);
115  }
117  }
118  break;
119  case ACTION_DELETE:
120  get_file_name(&s, reg_key_name, KEY_MAX_LEN);
121  if (!reg_key_name[0]) {
122  printf("No registry key is specified for removal\n%s", usage);
123  return FALSE;
124  //exit(1);
125  }
126  delete_registry_key(reg_key_name);
127  break;
128  case ACTION_EXPORT:
129  filename[0] = '\0';
131  if (!filename[0]) {
132  printf("No file name is specified\n%s", usage);
133  return FALSE;
134  //exit(1);
135  }
136  if (s[0]) {
137  get_file_name(&s, reg_key_name, KEY_MAX_LEN);
138  export_registry_key(filename, reg_key_name);
139  } else {
141  }
142  break;
143  default:
144  printf("Unhandled action!\n");
145  return FALSE;
146  }
147  return TRUE;
148 }
#define TRUE
Definition: types.h:120
const char * filename
Definition: ioapi.h:135
#define KEY_MAX_LEN
Definition: regproc.h:22
#define FALSE
Definition: types.h:117
void get_file_name(LPWSTR *command_line, LPWSTR file_name)
Definition: regedit.c:77
_CRTIMP void __cdecl perror(_In_opt_z_ const char *_ErrMsg)
smooth NULL
Definition: ftsmooth.c:416
char TCHAR
Definition: xmlstorage.h:189
#define MAX_PATH
Definition: compat.h:34
GLsizeiptr const GLvoid GLenum usage
Definition: glext.h:5919
GLdouble s
Definition: gl.h:2039
const WCHAR * action
Definition: action.c:7783
BOOL export_registry_key(WCHAR *file_name, WCHAR *reg_key_name, DWORD format)
Definition: regproc.c:1310
BOOL import_registry_file(FILE *reg_file)
Definition: regproc.c:1405
void delete_registry_key(WCHAR *reg_key_name)
Definition: regproc.c:1432
#define printf
Definition: config.h:203

Referenced by ProcessCmdLine().

◆ ProcessCmdLine()

BOOL ProcessCmdLine ( LPSTR  lpCmdLine)

Definition at line 150 of file regcmds.c.

151 {
153  LPSTR s = lpCmdLine; /* command line pointer */
154  CHAR ch = *s; /* current character */
155 
156  while (ch && ((ch == '-') || (ch == '/'))) {
157  char chu;
158  char ch2;
159 
160  s++;
161  ch = *s;
162  ch2 = *(s+1);
163  chu = toupper(ch);
164  if (!ch2 || isspace(ch2)) {
165  if (chu == 'S' || chu == 'V') {
166  /* ignore these switches */
167  } else {
168  switch (chu) {
169  case 'D':
171  break;
172  case 'E':
174  break;
175  case 'V':
177  break;
178  case '?':
179  printf(usage);
180  return FALSE;
181  //exit(0);
182  break;
183  default:
184  error_unknown_switch(chu, s);
185  return FALSE;
186  break;
187  }
188  }
189  s++;
190  } else {
191  if (ch2 == ':') {
192  switch (chu) {
193  case 'L':
194  /* fall through */
195  case 'R':
196  s += 2;
197  while (*s && !isspace(*s)) {
198  s++;
199  }
200  break;
201  default:
202  error_unknown_switch(chu, s);
203  return FALSE;
204  break;
205  }
206  } else {
207  /* this is a file name, starting from '/' */
208  s--;
209  break;
210  }
211  }
212  /* skip spaces to the next parameter */
213  ch = *s;
214  while (ch && isspace(ch)) {
215  s++;
216  ch = *s;
217  }
218  }
219  if (action == ACTION_UNDEF) {
220  action = ACTION_ADD;
221  }
222  return PerformRegAction(action, s);
223 }
#define isspace(c)
Definition: acclib.h:69
char CHAR
Definition: xmlstorage.h:175
char * LPSTR
Definition: xmlstorage.h:182
BOOL PerformRegAction(REGEDIT_ACTION action, LPSTR s)
Definition: regcmds.c:96
#define FALSE
Definition: types.h:117
int toupper(int c)
Definition: utclib.c:881
GLsizeiptr const GLvoid GLenum usage
Definition: glext.h:5919
GLdouble s
Definition: gl.h:2039
void error_unknown_switch(char chu, char *s)
Definition: regcmds.c:85
REGEDIT_ACTION
Definition: regedit.c:55
const WCHAR * action
Definition: action.c:7783
#define printf
Definition: config.h:203

Variable Documentation

◆ usage

char* usage
static

Definition at line 42 of file regcmds.c.