[ros-diffs] [cwittich] 31106: Lei Zhang : regedit: Allow entering - for a key in a . reg file to delete that key. <thestig at google.com> Lei Zhang : regedit: Removed dead code from regproc.c. <thestig at google.com>

cwittich at svn.reactos.org cwittich at svn.reactos.org
Sun Dec 9 16:31:41 CET 2007


Author: cwittich
Date: Sun Dec  9 18:31:41 2007
New Revision: 31106

URL: http://svn.reactos.org/svn/reactos?rev=31106&view=rev
Log:
Lei Zhang : regedit: Allow entering - for a key in a . reg file to delete that key. <thestig at google.com>
Lei Zhang : regedit: Removed dead code from regproc.c. <thestig at google.com>

Modified:
    trunk/reactos/base/applications/regedit/regproc.c
    trunk/reactos/base/applications/regedit/regproc.h

Modified: trunk/reactos/base/applications/regedit/regproc.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/regedit/regproc.c?rev=31106&r1=31105&r2=31106&view=diff
==============================================================================
--- trunk/reactos/base/applications/regedit/regproc.c (original)
+++ trunk/reactos/base/applications/regedit/regproc.c Sun Dec  9 18:31:41 2007
@@ -24,14 +24,11 @@
 
 #define REG_VAL_BUF_SIZE        4096
 
-/* Delimiters used to parse the "value" to query queryValue*/
-#define QUERY_VALUE_MAX_ARGS  1
-
 /* maximal number of characters in hexadecimal data line,
    not including '\' character */
 #define REG_FILE_HEX_LINE_LEN   76
 
-/* Globals used by the api setValue, queryValue */
+/* Globals used by the api setValue */
 static LPSTR currentKeyName   = NULL;
 static HKEY  currentKeyClass  = 0;
 static HKEY  currentKeyHandle = 0;
@@ -165,55 +162,6 @@
         return FALSE;
     }
     return TRUE;
-}
-
-/******************************************************************************
- * Converts a hex buffer into a hex comma separated values
- */
-char* convertHexToHexCSV(BYTE *buf, ULONG bufLen)
-{
-    char* str;
-    char* ptrStr;
-    BYTE* ptrBuf;
-
-    ULONG current = 0;
-
-    str    = HeapAlloc(GetProcessHeap(), 0, (bufLen+1)*2);
-    memset(str, 0, (bufLen+1)*2);
-    ptrStr = str;  /* Pointer to result  */
-    ptrBuf = buf;  /* Pointer to current */
-
-    while (current < bufLen) {
-        BYTE bCur = ptrBuf[current++];
-        char res[3];
-
-        sprintf(res, "%02x", (unsigned int)*&bCur);
-        strcat(str, res);
-        strcat(str, ",");
-    }
-
-    /* Get rid of the last comma */
-    str[strlen(str)-1] = '\0';
-    return str;
-}
-
-/******************************************************************************
- * Converts a hex buffer into a DWORD string
- */
-char* convertHexToDWORDStr(BYTE *buf, ULONG bufLen)
-{
-    char* str;
-    DWORD dw;
-
-    if ( bufLen != sizeof(DWORD) ) return NULL;
-
-    str = HeapAlloc(GetProcessHeap(), 0, (bufLen*2)+1);
-
-    memcpy(&dw,buf,sizeof(DWORD));
-    sprintf(str, "%08lx", dw);
-
-    /* Get rid of the last comma */
-    return str;
 }
 
 /******************************************************************************
@@ -327,6 +275,7 @@
     if( arg[0]     == '\"' ) arg++;
 
     tmp = HeapAlloc(GetProcessHeap(), 0, strlen(arg)+1);
+    CHECK_ENOUGH_MEMORY(tmp);
     strcpy(tmp, arg);
 
     return tmp;
@@ -589,6 +538,18 @@
         if ( bTheKeyIsOpen != FALSE )
             closeKey();                    /* Close the previous key before */
 
+        /* delete the key if we encounter '-' at the start of reg key */
+        if ( stdInput[1] == '-')
+        {
+            int last_chr = strlen(stdInput) - 1;
+
+            /* skip leading "[-" and get rid of trailing "]" */
+            if (stdInput[last_chr] == ']')
+                stdInput[last_chr] = '\0';
+            delete_registry_key(stdInput+2);
+            return;
+        }
+
         if ( openKey(stdInput) != ERROR_SUCCESS )
             fprintf(stderr,"%s: setValue failed to open key %s\n",
                     getAppName(), stdInput);
@@ -597,44 +558,6 @@
                 ( stdInput[0] == '\"'))) /* reading a new value=data pair */
     {
         processSetValue(stdInput);
-    } else                               /* since we are assuming that the */
-    {                                  /* file format is valid we must   */
-        if ( bTheKeyIsOpen )             /* be reading a blank line which  */
-            closeKey();                    /* indicate end of this key processing */
-    }
-}
-
-/******************************************************************************
- * This function is the main entry point to the queryValue type of action.  It
- * receives the currently read line and dispatch the work depending on the
- * context.
- */
-void doQueryValue(LPSTR stdInput)
-{
-    /*
-     * We encountered the end of the file, make sure we
-     * close the opened key and exit
-     */
-    if (stdInput == NULL) {
-        if (bTheKeyIsOpen != FALSE)
-            closeKey();
-
-        return;
-    }
-
-    if      ( stdInput[0] == '[')      /* We are reading a new key */
-    {
-        if ( bTheKeyIsOpen != FALSE )
-            closeKey();                    /* Close the previous key before */
-
-        if ( openKey(stdInput) != ERROR_SUCCESS )
-            fprintf(stderr,"%s: queryValue failed to open key %s\n",
-                    getAppName(), stdInput);
-    } else if( ( bTheKeyIsOpen ) &&
-               (( stdInput[0] == '@') || /* reading a default @=data pair */
-                ( stdInput[0] == '\"'))) /* reading a new value=data pair */
-    {
-        processQueryValue(stdInput);
     } else                               /* since we are assuming that the */
     {                                  /* file format is valid we must   */
         if ( bTheKeyIsOpen )             /* be reading a blank line which  */
@@ -742,136 +665,6 @@
 }
 
 /******************************************************************************
- * This function is a wrapper for the queryValue function.  It prepares the
- * land and clean the area once completed.
- */
-void processQueryValue(LPSTR cmdline)
-{
-    UNREFERENCED_PARAMETER(cmdline);
-    fprintf(stderr,"ERROR!!! - temporary disabled");
-    exit(1);
-#if 0
-    LPSTR   argv[QUERY_VALUE_MAX_ARGS];/* args storage    */
-    LPSTR   token      = NULL;         /* current token analyzed */
-    ULONG   argCounter = 0;            /* counter of args */
-    INT     counter;
-    HRESULT hRes       = 0;
-    LPSTR   keyValue   = NULL;
-    LPSTR   lpsRes     = NULL;
-
-    /*
-     * Init storage and parse the line
-     */
-    for (counter=0; counter<QUERY_VALUE_MAX_ARGS; counter++)
-        argv[counter]=NULL;
-
-    while( (token = getToken(&cmdline, queryValueDelim[argCounter])) != NULL ) {
-        argv[argCounter++] = getArg(token);
-
-        if (argCounter == QUERY_VALUE_MAX_ARGS)
-            break;  /* Stop processing args no matter what */
-    }
-
-    /* The value we look for is the first token on the line */
-    if ( argv[0] == NULL )
-        return; /* SHOULD NOT HAPPEN */
-    else
-        keyValue = argv[0];
-
-    if( (keyValue[0] == '@') && (strlen(keyValue) == 1) ) {
-        LONG  lLen  = KEY_MAX_LEN;
-        CHAR*  lpsData=HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,KEY_MAX_LEN);
-        /*
-         * We need to query the key default value
-         */
-        hRes = RegQueryValue(
-                   currentKeyHandle,
-                   currentKeyName,
-                   (LPBYTE)lpsData,
-                   &lLen);
-
-        if (hRes==ERROR_MORE_DATA) {
-            lpsData=HeapReAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,lpsData,lLen);
-            hRes = RegQueryValue(currentKeyHandle,currentKeyName,(LPBYTE)lpsData,&lLen);
-        }
-
-        if (hRes == ERROR_SUCCESS) {
-            lpsRes = HeapAlloc( GetProcessHeap(), 0, lLen);
-            lstrcpynA(lpsRes, lpsData, lLen);
-        }
-    } else {
-        DWORD  dwLen  = KEY_MAX_LEN;
-        BYTE*  lpbData=HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,KEY_MAX_LEN);
-        DWORD  dwType;
-        /*
-         * We need to query a specific value for the key
-         */
-        hRes = RegQueryValueEx(
-                   currentKeyHandle,
-                   keyValue,
-                   0,
-                   &dwType,
-                   (LPBYTE)lpbData,
-                   &dwLen);
-
-        if (hRes==ERROR_MORE_DATA) {
-            lpbData=HeapReAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,lpbData,dwLen);
-            hRes = RegQueryValueEx(currentKeyHandle,keyValue,NULL,&dwType,(LPBYTE)lpbData,&dwLen);
-        }
-
-        if (hRes == ERROR_SUCCESS) {
-            /*
-             * Convert the returned data to a displayable format
-             */
-            switch ( dwType ) {
-            case REG_SZ:
-            case REG_EXPAND_SZ: {
-                    lpsRes = HeapAlloc( GetProcessHeap(), 0, dwLen);
-                    lstrcpynA(lpsRes, lpbData, dwLen);
-                    break;
-                }
-            case REG_DWORD: {
-                    lpsRes = convertHexToDWORDStr(lpbData, dwLen);
-                    break;
-                }
-            default: {
-                    lpsRes = convertHexToHexCSV(lpbData, dwLen);
-                    break;
-                }
-            }
-        }
-
-        HeapFree(GetProcessHeap(), 0, lpbData);
-    }
-
-
-    if ( hRes == ERROR_SUCCESS )
-        fprintf(stderr,
-                "%s: Value \"%s\" = \"%s\" in key [%s]\n",
-                getAppName(),
-                keyValue,
-                lpsRes,
-                currentKeyName);
-
-    else
-        fprintf(stderr,"%s: ERROR Value \"%s\" not found for key \"%s\".\n",
-                getAppName(),
-                keyValue,
-                currentKeyName);
-
-    /*
-     * Do some cleanup
-     */
-    for (counter=0; counter<argCounter; counter++)
-        if (argv[counter] != NULL)
-            HeapFree(GetProcessHeap(), 0, argv[counter]);
-
-    if (lpsRes != NULL)
-        HeapFree(GetProcessHeap(), 0, lpsRes);
-#endif
-}
-
-/******************************************************************************
  * Calls command for each line of a registry file.
  * Correctly processes comments (in # form), line continuation.
  *

Modified: trunk/reactos/base/applications/regedit/regproc.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/regedit/regproc.h?rev=31106&r1=31105&r2=31106&view=diff
==============================================================================
--- trunk/reactos/base/applications/regedit/regproc.h (original)
+++ trunk/reactos/base/applications/regedit/regproc.h Sun Dec  9 18:31:41 2007
@@ -34,7 +34,6 @@
 void doDeleteValue(LPSTR lpsLine);
 void doCreateKey(LPSTR lpsLine);
 void doDeleteKey(LPSTR lpsLine);
-void doQueryValue(LPSTR lpsLine);
 void doRegisterDLL(LPSTR lpsLine);
 void doUnregisterDLL(LPSTR lpsLine);
 
@@ -66,11 +65,6 @@
  */
 void    processSetValue(LPSTR cmdline);
 HRESULT setValue(LPSTR val_name, LPSTR val_data);
-
-/*
- * api queryValue prototypes
- */
-void    processQueryValue(LPSTR cmdline);
 
 /*
  * Permission prototypes




More information about the Ros-diffs mailing list