Updates to test program.
authorRobert Dickenson <robd@reactos.org>
Wed, 1 Jan 2003 11:16:18 +0000 (11:16 +0000)
committerRobert Dickenson <robd@reactos.org>
Wed, 1 Jan 2003 11:16:18 +0000 (11:16 +0000)
svn path=/trunk/; revision=3912

reactos/apps/tests/regdump/main.c
reactos/apps/tests/regdump/regcmds.c
reactos/apps/tests/regdump/regdump.c
reactos/apps/tests/regdump/regproc.c
reactos/apps/utils/ps/makefile

index 66bb85c..dd474c3 100644 (file)
@@ -25,3 +25,21 @@ int __cdecl main(int argc, char* argv[])
     //return regmain(argc, argv);
     return regdump(argc, argv);
 }
+
+
+#ifndef __GNUC__
+
+//__declspec(dllimport) int __stdcall DllMain(void* hinstDll, unsigned long dwReason, void* reserved);
+
+char* args[] = { "regdump.exe", "0", "ansi", "verbose"};
+
+int __cdecl mainCRTStartup(void)
+{
+
+    //DllMain(NULL, DLL_PROCESS_ATTACH, NULL);
+
+    main(1, args);
+    return 0;
+}
+
+#endif /*__GNUC__*/
index 7bede0c..69fdcd8 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: regcmds.c,v 1.1 2002/11/24 19:13:40 robd Exp $
+/* $Id: regcmds.c,v 1.2 2003/01/01 11:16:18 robd Exp $
  *
  *  ReactOS regedit
  *
@@ -73,7 +73,7 @@ static char *usage =
 "command-line interface only.\n";
 
 typedef enum {
-    ACTION_UNDEF, ACTION_ADD, ACTION_EXPORT, ACTION_DELETE
+    ACTION_UNDEF, ACTION_ADD, ACTION_EXPORT, ACTION_DELETE, ACTION_VIEW
 } REGEDIT_ACTION;
 
 /**
@@ -173,6 +173,9 @@ BOOL ProcessCmdLine(LPSTR lpCmdLine)
                 case 'E':
                     action = ACTION_EXPORT;
                     break;
+                case 'V':
+                    action = ACTION_VIEW;
+                    break;
                 case '?':
                     printf(usage);
                     return FALSE;
index 0fe781e..7caec5f 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: regdump.c,v 1.2 2002/11/24 19:13:40 robd Exp $
+/* $Id: regdump.c,v 1.3 2003/01/01 11:16:18 robd Exp $
  *
  *  ReactOS regedit
  *
 #include "regdump.h"
 
 
-#define MAX_REGKEY_NAME_LEN    500
-#define MAX_REG_DATA_SIZE 500
-#define REG_FILE_HEX_LINE_LEN   76
-
 #ifdef UNICODE
 //#define dprintf _tprintf
 #define dprintf printf
 #define dprintf printf
 #endif
 
-/*
-char dprintf_buffer[1024];
-
-void dprintf(char* fmt, ...)
-{
-    int msg_len;
-    va_list args;
-
-    va_start(args, fmt);
-    vsprintf(dprintf_buffer, fmt, args);
-    //_vstprintf(dprintf_buffer, fmt, args);
-    msg_len = strlen(dprintf_buffer)
-    WriteConsoleA(OutputHandle, dprintf_buffer, msg_len, NULL, NULL);
-    va_end(args);
-}
- */
-BOOL _DumpRegKey(TCHAR* KeyPath, HKEY hKey)
-{ 
-    if (hKey != NULL) {
-        HKEY hNewKey;
-        LONG errCode;
-
-        //_tprintf(_T("_DumpRegKey() - Calling RegOpenKeyEx(%x)\n"), hKey);
-        //
-        // TODO: this is freezing ROS in bochs hard
-        errCode = RegOpenKeyEx(hKey, NULL, 0, KEY_READ, &hNewKey);
-        //
-        //errCode = RegOpenKeyExA(hKey, NULL, 0, KEY_READ, &hNewKey);
-
-        //_tprintf(_T("RegOpenKeyEx returned %x\n"), errCode);
-
-        if (errCode == ERROR_SUCCESS) {
-            TCHAR Name[MAX_REGKEY_NAME_LEN];
-            DWORD cName = MAX_REGKEY_NAME_LEN;
-            FILETIME LastWriteTime;
-            DWORD dwIndex = 0L;
-                       TCHAR* pKeyName = &KeyPath[_tcslen(KeyPath)];
-
-            //_tprintf(_T("Calling RegEnumKeyEx(%x)\n"), hNewKey);
-
-            while (RegEnumKeyEx(hNewKey, dwIndex, Name, &cName, NULL, NULL, NULL, &LastWriteTime) == ERROR_SUCCESS) {
-                               HKEY hSubKey;
-                DWORD dwCount = 0L;
-                //int len;
-                               _tcscat(KeyPath, _T("\\"));
-                               _tcscat(KeyPath, Name);
-                _tprintf(_T("[%s]\n"), KeyPath);
-#if 1
-                //_tprintf(_T("Calling RegOpenKeyEx\n"));
-
-                errCode = RegOpenKeyEx(hNewKey, Name, 0, KEY_READ, &hSubKey);
-                if (errCode == ERROR_SUCCESS) {
-#if 1
-                    BYTE Data[MAX_REG_DATA_SIZE];
-                    DWORD cbData = MAX_REG_DATA_SIZE;
-                    TCHAR ValueName[MAX_REGKEY_NAME_LEN];
-                    DWORD cValueName = MAX_REGKEY_NAME_LEN;
-                    DWORD Type;
-
-                    //_tprintf(_T("Calling RegEnumValue\n"));
-
-                    while (RegEnumValue(hSubKey, dwCount, ValueName, &cValueName, NULL, &Type, Data, &cbData) == ERROR_SUCCESS) {
-                        //dprintf("\t%S (%d) %d data bytes\n", ValueName, Type, cbData);
-                        _tprintf(_T("\t%s = "), ValueName);
-////
-            switch (Type) {
-            case REG_EXPAND_SZ:
-                _tprintf(_T("expand:"));
-            case REG_SZ:
-                _tprintf(_T("\"%s\"\n"), Data);
-                break;
-            case REG_DWORD:
-                _tprintf(_T("dword:%08lx\n"), *((DWORD *)Data));
-                break;
-            default:
-                _tprintf(_T("warning - unsupported registry format '%ld', ") \
-                         _T("treat as binary\n"), Type);
-                _tprintf(_T("key name: \"%s\"\n"), Name);
-                _tprintf(_T("value name:\"%s\"\n\n"), ValueName);
-                /* falls through */
-            case REG_MULTI_SZ:
-                /* falls through */
-            case REG_BINARY:
-            {
-                DWORD i1;
-                TCHAR *hex_prefix;
-                TCHAR buf[20];
-                int cur_pos;
-
-                if (Type == REG_BINARY) {
-                    hex_prefix = _T("hex:");
-                } else {
-                    hex_prefix = buf;
-                    _stprintf(buf, _T("hex(%ld):"), Type);
-                }
-
-                /* position of where the next character will be printed */
-                /* NOTE: yes, _tcslen("hex:") is used even for hex(x): */
-                cur_pos = _tcslen(_T("\"\"=")) + _tcslen(_T("hex:")) + _tcslen(ValueName);
-
-                //dprintf(hex_prefix);
-                //_tprintf(hex_prefix);
-
-                for (i1 = 0; i1 < cbData; i1++) {
-                    _tprintf(_T("%02x"), (unsigned int)(Data)[i1]);
-                    if (i1 + 1 < cbData) {
-                        _tprintf(_T(","));
-                }
-                    cur_pos += 3;
-                    /* wrap the line */
-                    if (cur_pos > REG_FILE_HEX_LINE_LEN) {
-                        _tprintf(_T("\\\n  "));
-                        cur_pos = 2;
-                    }
-                }
-                _tprintf(_T("\n"));
-                break;
-            }
-            }
-////
-                        cValueName = MAX_REGKEY_NAME_LEN;
-                        cbData = MAX_REG_DATA_SIZE;
-                        ++dwCount;
-                    }
-#endif
-#if 1
-                    _DumpRegKey(KeyPath, hSubKey);
-#endif
-                    RegCloseKey(hSubKey);
-                }
-#endif
-                cName = MAX_REGKEY_NAME_LEN;
-                               *pKeyName = _T('\0');
-                               ++dwIndex;
-            }
-            RegCloseKey(hNewKey);
-        } else {
-            _tprintf(_T("_DumpRegKey(...) RegOpenKeyEx() failed.\n\n"));
-        }
-    } else {
-        _tprintf(_T("_DumpRegKey(...) - NULL key parameter passed.\n\n"));
-    }
-    return TRUE;
-} 
-
-BOOL DumpRegKey(TCHAR* KeyPath, HKEY hKey)
-{ 
-    _tprintf(_T("\n[%s]\n"), KeyPath);
-    //_tprintf(_T("Calling _DumpRegKey(..., %x))\n", hKey);
-    return _DumpRegKey(KeyPath, hKey);
-}
-
-void RegKeyPrint(int which)
-{
-       TCHAR szKeyPath[1000];
+void RegKeyPrint(int which);
 
-        switch (which) {
-        case '1':
-            _tcscpy(szKeyPath, _T("HKEY_CLASSES_ROOT"));
-            DumpRegKey(szKeyPath, HKEY_CLASSES_ROOT);
-            break;
-        case '2':
-            _tcscpy(szKeyPath, _T("HKEY_CURRENT_USER"));
-            DumpRegKey(szKeyPath, HKEY_CURRENT_USER);
-            break;
-        case '3':
-            _tcscpy(szKeyPath, _T("HKEY_LOCAL_MACHINE"));
-            DumpRegKey(szKeyPath, HKEY_LOCAL_MACHINE);
-            break;
-        case '4':
-            _tcscpy(szKeyPath, _T("HKEY_USERS"));
-            DumpRegKey(szKeyPath, HKEY_USERS);
-            break;
-        case '5':
-            _tcscpy(szKeyPath, _T("HKEY_CURRENT_CONFIG"));
-            DumpRegKey(szKeyPath, HKEY_CURRENT_CONFIG);
-            break;
-        case '6':
-//            DumpRegKey(szKeyPath, HKEY_CLASSES_ROOT);
-//            DumpRegKey(szKeyPath, HKEY_CURRENT_USER);
-//            DumpRegKey(szKeyPath, HKEY_LOCAL_MACHINE);
-//            DumpRegKey(szKeyPath, HKEY_USERS);
-//            DumpRegKey(szKeyPath, HKEY_CURRENT_CONFIG);
-            _tprintf(_T("unimplemented...\n"));
-            break;
-               }
 
-}
 
 const char* default_cmd_line1 = "/E HKLM_EXPORT.TXT HKEY_LOCAL_MACHINE";
 const char* default_cmd_line2 = "TEST_IMPORT.TXT";
-const char* default_cmd_line3 = "/D HKEY_LOCAL_MACHINE\\SYSTEM";
-const char* default_cmd_line4 = "/D HKEY_LOCAL_MACHINE\\SOFTWARE";
-const char* default_cmd_line5 = "/D HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes";
+const char* default_cmd_line3 = "/P HKEY_LOCAL_MACHINE\\SYSTEM";
+const char* default_cmd_line4 = "/P HKEY_LOCAL_MACHINE\\SOFTWARE";
+const char* default_cmd_line5 = "/P HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes";
 const char* default_cmd_line6 = "/E HKCR_EXPORT.TXT HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes";
-const char* default_cmd_line7 = "/D HKEY_LOCAL_MACHINE\\SOFTWARE";
+const char* default_cmd_line7 = "/D HKEY_LOCAL_MACHINE\\SYSTEM";
 const char* default_cmd_line8 = "/D HKEY_LOCAL_MACHINE\\SOFTWARE";
-const char* default_cmd_line9 = "/D HKEY_LOCAL_MACHINE\\SOFTWARE";
+const char* default_cmd_line9 = "/D HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes";
+
+/* Show usage */
+void usage(const char* appName)
+{
+    fprintf(stderr, "%s: Dump registry key to console\n", appName);
+    fprintf(stderr, "%s HKCR | HKCU | HKLM | HKU | HKCC | HKRR\n", appName);
+}
 
 void show_menu(void)
 {
-        _tprintf(_T("\nchoose test :\n"));
-        _tprintf(_T("  0 = Exit\n"));
-        _tprintf(_T("  1 = HKEY_CLASSES_ROOT\n"));
-        _tprintf(_T("  2 = HKEY_CURRENT_USER\n"));
-        _tprintf(_T("  3 = HKEY_LOCAL_MACHINE\n"));
-        _tprintf(_T("  4 = HKEY_USERS\n"));
-        _tprintf(_T("  5 = HKEY_CURRENT_CONFIG\n"));
-        _tprintf(_T("  6 = REGISTRY ROOT\n"));
-        printf("  7 = %s\n", default_cmd_line1);
-        printf("  8 = %s\n", default_cmd_line2);
-        printf("  9 = %s\n", default_cmd_line3);
-        printf("  A = %s\n", default_cmd_line4);
-        printf("  B = %s\n", default_cmd_line5);
-        printf("  C = %s\n", default_cmd_line6);
-        printf("  D = %s\n", default_cmd_line7);
-        printf("  E = %s\n", default_cmd_line8);
-        printf("  F = %s\n", default_cmd_line9);
+    _tprintf(_T("\nchoose test :\n"));
+    _tprintf(_T("  0 = Exit\n"));
+         printf("  1 = %s\n", default_cmd_line1);
+         printf("  2 = %s\n", default_cmd_line2);
+         printf("  3 = %s\n", default_cmd_line3);
+         printf("  4 = %s\n", default_cmd_line4);
+         printf("  5 = %s\n", default_cmd_line5);
+         printf("  6 = %s\n", default_cmd_line6);
+         printf("  7 = %s\n", default_cmd_line7);
+         printf("  8 = %s\n", default_cmd_line8);
+         printf("  9 = %s\n", default_cmd_line9);
 /*
-        _tprintf(_T("  7 = %s\n"), default_cmd_line1);
-        _tprintf(_T("  8 = %s\n"), default_cmd_line2);
-        _tprintf(_T("  9 = %s\n"), default_cmd_line3);
-        _tprintf(_T("  A = %s\n"), default_cmd_line4);
-        _tprintf(_T("  B = %s\n"), default_cmd_line5);
-        _tprintf(_T("  C = %s\n"), default_cmd_line6);
-        _tprintf(_T("  D = %s\n"), default_cmd_line7);
-        _tprintf(_T("  E = %s\n"), default_cmd_line8);
-        _tprintf(_T("  F = %s\n"), default_cmd_line9);
+    _tprintf(_T("  1 = %s\n"), default_cmd_line1);
+    _tprintf(_T("  2 = %s\n"), default_cmd_line2);
+    _tprintf(_T("  3 = %s\n"), default_cmd_line3);
+    _tprintf(_T("  4 = %s\n"), default_cmd_line4);
+    _tprintf(_T("  5 = %s\n"), default_cmd_line5);
+    _tprintf(_T("  6 = %s\n"), default_cmd_line6);
+    _tprintf(_T("  7 = %s\n"), default_cmd_line7);
+    _tprintf(_T("  8 = %s\n"), default_cmd_line8);
+    _tprintf(_T("  9 = %s\n"), default_cmd_line9);
  */
+//        _tprintf(_T("  A = HKEY_CLASSES_ROOT\n"));
+//        _tprintf(_T("  B = HKEY_CURRENT_USER\n"));
+//        _tprintf(_T("  C = HKEY_LOCAL_MACHINE\n"));
+//        _tprintf(_T("  D = HKEY_USERS\n"));
+//        _tprintf(_T("  E = HKEY_CURRENT_CONFIG\n"));
+//        _tprintf(_T("  F = REGISTRY ROOT\n"));
 }
 
 int regdump(int argc, char* argv[])
 {
     char Buffer[500];
 
-       if (argc > 1) {
-//             if (0 == _tcsstr(argv[1], _T("HKLM"))) {
+    if (argc > 1) {
+//      if (0 == _tcsstr(argv[1], _T("HKLM"))) {
         if (strstr(argv[1], "help")) {
-
+            usage(argv[0]);
         } else if (strstr(argv[1], "HKCR")) {
-                       RegKeyPrint('1');
+            RegKeyPrint('1');
         } else if (strstr(argv[1], "HKCU")) {
-                       RegKeyPrint('2');
+            RegKeyPrint('2');
         } else if (strstr(argv[1], "HKLM")) {
-                       RegKeyPrint('3');
+            RegKeyPrint('3');
         } else if (strstr(argv[1], "HKU")) {
-                       RegKeyPrint('4');
+            RegKeyPrint('4');
         } else if (strstr(argv[1], "HKCC")) {
-                       RegKeyPrint('5');
+            RegKeyPrint('5');
         } else if (strstr(argv[1], "HKRR")) {
-                       RegKeyPrint('6');
-               } else {
+            RegKeyPrint('6');
+        } else {
             dprintf("started with argc = %d, argv[1] = %s (unknown?)\n", argc, argv[1]);
-               }
+        }
         return 0;
     }
     show_menu();
-       while (1) {
+    while (1) {
         GetInput(Buffer, sizeof(Buffer));
         switch (toupper(Buffer[0])) {
         case '0':
             return(0);
         case '1':
-        case '2':
-        case '3':
-        case '4':
-        case '5':
-        case '6':
-                       RegKeyPrint(Buffer[0]/* - '0'*/);
-            break;
-        case '7':
             strcpy(Buffer, default_cmd_line1);
             goto doit;
-        case '8':
+        case '2':
             strcpy(Buffer, default_cmd_line2);
             goto doit;
-        case '9':
+        case '3':
             strcpy(Buffer, default_cmd_line3);
             goto doit;
-        case 'A':
+        case '4':
             strcpy(Buffer, default_cmd_line4);
             goto doit;
-        case 'B':
+        case '5':
             strcpy(Buffer, default_cmd_line5);
             goto doit;
-        case 'C':
+        case '6':
             strcpy(Buffer, default_cmd_line6);
             goto doit;
-        case 'D':
+        case '7':
             strcpy(Buffer, default_cmd_line7);
             goto doit;
-        case 'E':
+        case '8':
             strcpy(Buffer, default_cmd_line8);
             goto doit;
-        case 'F':
+        case '9':
             strcpy(Buffer, default_cmd_line9);
             goto doit;
+        case 'A':
+        case 'B':
+        case 'C':
+        case 'D':
+        case 'E':
+        case 'F':
+            RegKeyPrint(toupper(Buffer[0]) - 'A' + 1);
+            break;
         default: doit:
             if (!ProcessCmdLine(Buffer)) {
-                           dprintf("invalid input.\n");
+                dprintf("invalid input.\n");
                 show_menu();
             } else {
-                           dprintf("done.\n");
+                dprintf("done.\n");
             }
-                       break;
-               }
-       }
+            break;
+        }
+    }
     return 0;
 }
index a017e47..6fb0a2d 100644 (file)
@@ -920,7 +920,14 @@ void processRegLines(FILE *in, CommandAPI command)
             /* Get as much as possible into the buffer, terminated either by
              * eof, error, eol or getting the maximum amount.  Abort on error.
              */
-            size_to_get = (size_remaining > INT_MAX ? INT_MAX : size_remaining);
+//
+// This line is surely foobar, don't want to read INT_MAX in buffer at s, it's never going to be that big...
+//            size_to_get = (size_remaining > INT_MAX ? INT_MAX : size_remaining);
+//
+// Looks as if 'lineSize' contains the number of characters of buffer size
+//
+            size_to_get = (size_remaining > lineSize ? lineSize : size_remaining);
+
             if (NULL == _fgetts(s, size_to_get, in)) {
                 if (ferror(in)) {
                     //_tperror(_T("While reading input"));
index 6dfc38c..7be4db6 100644 (file)
@@ -12,6 +12,8 @@ TARGET_NAME = ps
 
 TARGET_SDKLIBS = kernel32.a
 
+TARGET_GCCLIBS = stdc++
+
 TARGET_OBJECTS = $(TARGET_NAME).o
 
 include $(PATH_TO_TOP)/rules.mak