ReactOS  0.4.13-dev-482-ge57f103
mkhive.c File Reference
#include <limits.h>
#include <string.h>
#include <stdio.h>
#include "mkhive.h"
Include dependency graph for mkhive.c:

Go to the source code of this file.

Macros

#define PATH_MAX   260
 
#define DIR_SEPARATOR_CHAR   '/'
 
#define DIR_SEPARATOR_STRING   "/"
 

Functions

void usage (void)
 
void convert_path (char *dst, char *src)
 
int main (int argc, char *argv[])
 

Macro Definition Documentation

◆ DIR_SEPARATOR_CHAR

#define DIR_SEPARATOR_CHAR   '/'

Definition at line 46 of file mkhive.c.

◆ DIR_SEPARATOR_STRING

#define DIR_SEPARATOR_STRING   "/"

Definition at line 47 of file mkhive.c.

◆ PATH_MAX

#define PATH_MAX   260

Definition at line 44 of file mkhive.c.

Function Documentation

◆ convert_path()

void convert_path ( char dst,
char src 
)

Definition at line 66 of file mkhive.c.

67 {
68  int i;
69 
70  i = 0;
71  while (src[i] != 0)
72  {
73 #ifdef _WIN32
74  if (src[i] == '/')
75  {
76  dst[i] = '\\';
77  }
78 #else
79  if (src[i] == '\\')
80  {
81  dst[i] = '/';
82  }
83 #endif
84  else
85  {
86  dst[i] = src[i];
87  }
88 
89  i++;
90  }
91  dst[i] = 0;
92 }
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
GLenum src
Definition: glext.h:6340
GLenum GLenum dst
Definition: glext.h:6340

Referenced by main().

◆ main()

int main ( int argc  ,
char argv[] 
)

hosttype.c Copyright (C) 2002 by Brian Palmer brian.nosp@m.p@sg.nosp@m.inet..nosp@m.com

Definition at line 94 of file mkhive.c.

95 {
96  INT ret;
97  INT i;
98  PSTR ptr;
99  BOOL UpperCaseFileName = FALSE;
100  PCSTR HiveList = NULL;
101  CHAR DestPath[PATH_MAX] = "";
103 
104  if (argc < 4)
105  {
106  usage();
107  return -1;
108  }
109 
110  printf("Binary hive maker\n");
111 
112  /* Read the options */
113  for (i = 1; i < argc && *argv[i] == '-'; i++)
114  {
115  if (argv[i][1] == '?' && argv[i][2] == 0)
116  {
117  usage();
118  return 0;
119  }
120 
121  if (argv[i][1] == 'u' && argv[i][2] == 0)
122  {
123  UpperCaseFileName = TRUE;
124  }
125  else
126  if (argv[i][1] == 'h' && (argv[i][2] == ':' || argv[i][2] == '='))
127  {
128  HiveList = argv[i] + 3;
129  }
130  else if (argv[i][1] == 'd' && (argv[i][2] == ':' || argv[i][2] == '='))
131  {
132  convert_path(DestPath, argv[i] + 3);
133  }
134  else
135  {
136  fprintf(stderr, "Unrecognized option: %s\n", argv[i]);
137  return -1;
138  }
139  }
140 
141  /* Check whether we have all the parameters needed */
142  if (!HiveList || !*HiveList)
143  {
144  fprintf(stderr, "The mandatory list of hives is missing.\n");
145  return -1;
146  }
147  if (!*DestPath)
148  {
149  fprintf(stderr, "The mandatory output directory is missing.\n");
150  return -1;
151  }
152  if (i >= argc)
153  {
154  fprintf(stderr, "Not enough parameters, or the list of INF files is missing.\n");
155  return -1;
156  }
157 
158  /* Initialize the registry */
159  RegInitializeRegistry(HiveList);
160 
161  /* Default to failure */
162  ret = -1;
163 
164  /* Now we should have the list of INF files: parse it */
165  for (; i < argc; ++i)
166  {
169  goto Quit;
170  }
171 
172  for (i = 0; i < MAX_NUMBER_OF_REGISTRY_HIVES; ++i)
173  {
174  /* Skip this registry hive if it's not in the list */
175  if (!strstr(HiveList, RegistryHives[i].HiveName))
176  continue;
177 
178  strcpy(FileName, DestPath);
180 
182 
183  strcat(FileName, RegistryHives[i].HiveName);
184 
185  /* Exception for the special setup registry hive */
186  // if (strcmp(RegistryHives[i].HiveName, "SETUPREG") == 0)
187  if (i == 0)
188  strcat(FileName, ".HIV");
189 
190  /* Adjust file name case if needed */
191  if (UpperCaseFileName)
192  {
193  for (; *ptr; ++ptr)
194  *ptr = toupper(*ptr);
195  }
196  else
197  {
198  for (; *ptr; ++ptr)
199  *ptr = tolower(*ptr);
200  }
201 
203  goto Quit;
204 
205  /* If we happen to deal with the special setup registry hive, stop there */
206  // if (strcmp(RegistryHives[i].HiveName, "SETUPREG") == 0)
207  if (i == 0)
208  break;
209  }
210 
211  /* Success */
212  ret = 0;
213 
214 Quit:
215  /* Shut down the registry */
217 
218  if (ret == 0)
219  printf(" Done.\n");
220 
221  return ret;
222 }
NTSTATUS RegInitializeRegistry(IN PUNICODE_STRING NtSystemRoot)
Definition: registry.c:679
static int argc
Definition: ServiceArgs.c:12
#define TRUE
Definition: types.h:120
char * strcat(char *DstString, const char *SrcString)
Definition: utclib.c:568
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
void usage(void)
Definition: mkhive.c:55
char * strstr(char *String1, char *String2)
Definition: utclib.c:653
#define MAX_NUMBER_OF_REGISTRY_HIVES
Definition: registry.h:19
char CHAR
Definition: xmlstorage.h:175
BOOL ExportBinaryHive(IN PCSTR FileName, IN PCMHIVE CmHive)
Definition: binhive.c:34
#define argv
Definition: mplay32.c:18
int32_t INT
Definition: typedefs.h:56
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
unsigned int BOOL
Definition: ntddk_ex.h:94
_Check_return_opt_ _CRTIMP int __cdecl fprintf(_Inout_ FILE *_File, _In_z_ _Printf_format_string_ const char *_Format,...)
static PVOID ptr
Definition: dispmode.c:27
VOID RegShutdownRegistry(VOID)
Definition: registry.c:1193
smooth NULL
Definition: ftsmooth.c:416
int toupper(int c)
Definition: utclib.c:881
static BOOL ImportRegistryFile(HWND hWnd)
Definition: framewnd.c:440
int ret
signed char * PSTR
Definition: retypes.h:7
static PCMHIVE CmHive
Definition: registry.c:28
#define DIR_SEPARATOR_STRING
Definition: mkhive.c:47
HIVE_LIST_ENTRY RegistryHives[]
Definition: registry.c:581
char * strcpy(char *DstString, const char *SrcString)
Definition: utclib.c:388
FILE * stderr
#define PATH_MAX
Definition: mkhive.c:44
const char * PCSTR
Definition: typedefs.h:51
int tolower(int c)
Definition: utclib.c:902
void convert_path(char *dst, char *src)
Definition: mkhive.c:66
#define printf
Definition: config.h:203

◆ usage()

void usage ( void  )

Definition at line 55 of file mkhive.c.

56 {
57  printf("Usage: mkhive [-?] -h:hive1[,hiveN...] [-u] -d:<dstdir> <inffiles>\n\n"
58  " -h:hiveN - Comma-separated list of hives to create. Possible values are:\n"
59  " SETUPREG, SYSTEM, SOFTWARE, DEFAULT, SAM, SECURITY, BCD.\n"
60  " -u - Generate file names in uppercase (default: lowercase) (TEMPORARY FLAG!).\n"
61  " -d:dstdir - The binary hive files are created in this directory.\n"
62  " inffiles - List of INF files with full path.\n"
63  " -? - Displays this help screen.\n");
64 }
#define printf
Definition: config.h:203

Referenced by main().