Fixing a small bug for hide mouse. Save the current surface under the mouse. But...
[reactos.git] / rosapps / packmgr / cmd-line / main.c
index 07e9f0e..946046c 100644 (file)
-////////////////////////////////////////////////////////\r
-//\r
-// main.cpp\r
-// \r
-// Implementation of a Commandlne Interface\r
-// for the ReactOs Package Manager\r
-//\r
-// Maarten Bosma, 09.01.2004\r
-// maarten.paul@bosma.de\r
-//\r
-////////////////////////////////////////////////////////////////////\r
-\r
-#include "main.h"\r
-#include <stdio.h>\r
-\r
-\r
-int main (int argc, char **argv) \r
-{\r
-       wprintf(L"ReactOs PackageManager %d.%d.%d Commandline Interface \n\n", PACKMGR_VERSION_MAJOR, PACKMGR_VERSION_MINOR, PACKMGR_VERSION_PATCH_LEVEL);\r
-       Argv = argv; Argc = argc;\r
-\r
-       if(argc<2)\r
-               return Help();\r
-\r
-\r
-       // install a package\r
-       if (argv[1] == "install") \r
-               Install();\r
-\r
-       // install a package from source\r
-       else if (argv[1] == "src-inst")\r
-       {\r
-               wprintf(L"Sorry but I can't do that yet. \n");\r
-       }\r
-\r
-       // update a package\r
-       else if (argv[1] == "update")\r
-       {\r
-               wprintf(L"Sorry but I can't do that yet. \n");\r
-       }\r
-\r
-       // update everything\r
-       else if (argv[1] == "dist-upgrade")\r
-       {\r
-               wprintf(L"Sorry but I can't do that yet. \n");\r
-       }\r
-\r
-       // remove a package\r
-       else if (argv[1] == "remove")\r
-       {\r
-               wprintf(L"Sorry but I can't do that yet. \n");\r
-       }\r
-\r
-       // search for a package\r
-       else if (argv[1] == "show")\r
-       {\r
-               Show();\r
-       }\r
-\r
-       // search for a package\r
-       else if (argv[1] == "search")\r
-       {\r
-               wprintf(L"Sorry but I can't do that yet. \n");\r
-       }\r
-\r
-       else\r
-               Help();\r
-\r
-       //\r
-       wprintf(L"\n");\r
-       \r
-\r
-       return 0;\r
-}\r
-\r
-int Help (void)\r
-{\r
-       wprintf(L"Usage: ros-get [command] \n\n");\r
-\r
-       wprintf(L"Possible commands: \n");\r
-       wprintf(L"  install [package name] \t Installs a package \n\n");\r
-       wprintf(L"  show [package name] \t\t Shows you detailed information about a package \n");\r
-\r
-       wprintf(L"Currently unimplemented commands: \n");\r
-       wprintf(L"  src-install [package name] \t Installs a package from source code \n");\r
-       wprintf(L"  update [package name] \t Updates a package \n");\r
-       wprintf(L"  dist-update [package name] \t Updates a package \n");\r
-       wprintf(L"  remove [package name] \t Uninstalls a package \n\n");\r
-\r
-       wprintf(L"  search [search agrument] \t Finds a package \n");\r
-       wprintf(L"  list \t\t\t\t Lists all installed programs \n");\r
-\r
-       return 0;\r
-}\r
-\r
-int Ask (const WCHAR* question)\r
-{\r
-       // ask the user\r
-       wprintf(L"%s [y/n] ", question);\r
-       char answer = getchar();\r
-\r
-       // clear keybuffer\r
-       while(getchar()!='\n');\r
-       wprintf(L"\n");\r
-\r
-       // prozess answer\r
-       if (answer == 'y')\r
-               return 1;\r
-\r
-       else if (answer == 'n')\r
-               return 0;\r
-\r
-       return Ask(question);\r
-}\r
-       \r
-int SetStatus (int status1, int status2, WCHAR* text)\r
-{\r
-       if(text)\r
-               wprintf(L"%s\n", text);\r
-\r
-       // If the Status is 1000 things are done\r
-       if(status1==1000)\r
-       {\r
-               wprintf(L"%s\n", PML_TransError(status2));\r
-               done = TRUE;\r
-       }\r
-\r
-       return 0;\r
-}\r
-\r
-int Install (void)\r
-{\r
-       pTree tree;\r
-       int i, error;\r
-\r
-       // load the tree\r
-       error = PML_LoadTree (&tree, "tree.xml", NULL);\r
-       if(error)\r
-       {\r
-               wprintf(PML_TransError(error));\r
-               return 0;\r
-       }\r
-               \r
-       // look up the item\r
-       for (i=2; i<Argc; i++)\r
-       {\r
-               int id = PML_FindItem(tree, Argv[i]);\r
-\r
-               if(id)\r
-               {\r
-                       PML_LoadPackage(tree, id, NULL);\r
-                       PML_SetAction(tree, id, 1, NULL, Ask);\r
-               }\r
-\r
-               else \r
-                       printf("Could not find the Package \"%s\"\n", Argv[i]);\r
-       }\r
-\r
-       // do it\r
-       error = PML_DoIt (tree, SetStatus, Ask);\r
-       if(error)\r
-       {\r
-               wprintf(PML_TransError(error));\r
-               PML_CloseTree (tree);\r
-               return 0;\r
-       }\r
-\r
-       // wait\r
-       while (!done)\r
-               Sleep(1000);\r
-\r
-       // clean up\r
-       PML_CloseTree (tree);\r
-\r
-       return 0;\r
-}\r
-\r
-int Show (void)\r
-{\r
-       pTree tree;\r
-       int i, error;\r
-\r
-       // load the tree\r
-       error = PML_LoadTree (&tree, "tree.xml", NULL);\r
-       if(error)\r
-       {\r
-               wprintf(PML_TransError(error));\r
-               return 0;\r
-       }\r
-\r
-       // look up the item\r
-       for (i=2; i<Argc; i++)\r
-       {\r
-               int id = PML_FindItem(tree, Argv[i]);\r
-\r
-               if(id)\r
-                       printf(PML_GetDescription(tree, id));\r
-\r
-               else \r
-                       printf("Could not find the Package \"%s\"\n", Argv[i]);\r
-       }\r
-\r
-       // clean up\r
-       PML_CloseTree (tree);\r
-\r
-       return 0;\r
-}\r
+////////////////////////////////////////////////////////
+//
+// main.cpp
+// 
+// Implementation of a Commandlne Interface
+// for the ReactOs Package Manager
+//
+// Maarten Bosma, 09.01.2004
+// maarten.paul@bosma.de
+//
+////////////////////////////////////////////////////////////////////
+
+#include "main.h"
+#include <stdio.h>
+
+
+int main (int argc, char **argv) 
+{
+       wprintf(L"ReactOs PackageManager %d.%d.%d Commandline Interface \n\n", PACKMGR_VERSION_MAJOR, PACKMGR_VERSION_MINOR, PACKMGR_VERSION_PATCH_LEVEL);
+       Argv = argv; Argc = argc;
+
+       if(argc<2)
+               return Help();
+
+       // install a package
+       if (!strcmp(argv[1], "install")) 
+               Install();
+
+       // install a package from source
+       else if (!strcmp(argv[1], "src-inst"))
+       {
+               wprintf(L"Sorry but I can't do that yet. \n");
+       }
+
+       // update a package
+       else if (!strcmp(argv[1], "update"))
+       {
+               wprintf(L"Sorry but I can't do that yet. \n");
+       }
+
+       // update everything
+       else if (!strcmp(argv[1], "dist-upgrade"))
+       {
+               wprintf(L"Sorry but I can't do that yet. \n");
+       }
+
+       // remove a package
+       else if (!strcmp(argv[1], "remove"))
+       {
+               wprintf(L"Sorry but I can't do that yet. \n");
+       }
+
+       // search for a package
+       else if (!strcmp(argv[1], "show"))
+       {
+               Show();
+       }
+
+       // search for a package
+       else if (!strcmp(argv[1], "search"))
+       {
+               wprintf(L"Sorry but I can't do that yet. \n");
+       }
+
+       else
+               Help();
+
+       //
+       wprintf(L"\n");
+       
+
+       return 0;
+}
+
+int Help (void)
+{
+       wprintf(L"Usage: ros-get [command] \n\n");
+
+       wprintf(L"Possible commands: \n");
+       wprintf(L"  install [package name] \t Installs a package \n\n");
+       wprintf(L"  show [package name] \t\t Shows you detailed information about a package \n");
+
+       wprintf(L"Currently unimplemented commands: \n");
+       wprintf(L"  src-install [package name] \t Installs a package from source code \n");
+       wprintf(L"  update [package name] \t Updates a package \n");
+       wprintf(L"  dist-update [package name] \t Updates a package \n");
+       wprintf(L"  remove [package name] \t Uninstalls a package \n\n");
+
+       wprintf(L"  search [search agrument] \t Finds a package \n");
+       wprintf(L"  list \t\t\t\t Lists all installed programs \n");
+
+       return 0;
+}
+
+int Ask (const WCHAR* question)
+{
+       // ask the user
+       wprintf(L"%s [y/n] ", question);
+       char answer = getchar();
+
+       // clear keybuffer
+       while(getchar()!='\n');
+       wprintf(L"\n");
+
+       // prozess answer
+       if (answer == 'y')
+               return 1;
+
+       else if (answer == 'n')
+               return 0;
+
+       return Ask(question);
+}
+       
+int SetStatus (int status1, int status2, WCHAR* text)
+{
+       WCHAR errbuf[2000];
+       if(text)
+               wprintf(L"%s\n", text);
+
+       // If the Status is 1000 things are done
+       if(status1==1000)
+       {
+               wprintf(L"%s\n", PML_TransError(status2, errbuf, sizeof(errbuf)/sizeof(WCHAR)));
+               done = TRUE;
+       }
+
+       return 0;
+}
+
+int Install (void)
+{
+       pTree tree;
+       int i, error;
+       WCHAR errbuf[2000];
+
+       // load the tree
+       error = PML_LoadTree (&tree, "tree.xml", NULL);
+       if(error)
+       {
+
+               wprintf(PML_TransError(error, errbuf, sizeof(errbuf)/sizeof(WCHAR)));
+               return 0;
+       }
+               
+       // look up the item
+       for (i=2; i<Argc; i++)
+       {
+               int id = PML_FindItem(tree, Argv[i]);
+
+               if(id)
+               {
+                       PML_LoadPackage(tree, id, NULL);
+                       PML_SetAction(tree, id, 1, NULL, Ask);
+               }
+
+               else 
+                       printf("Could not find the Package \"%s\"\n", Argv[i]);
+       }
+
+       // do it
+       error = PML_DoIt (tree, SetStatus, Ask);
+       if(error)
+       {
+
+               wprintf(PML_TransError(error, errbuf, sizeof(errbuf)/sizeof(WCHAR)));
+               PML_CloseTree (tree);
+               return 0;
+       }
+
+       // wait
+       while (!done)
+               Sleep(1000);
+
+       // clean up
+       PML_CloseTree (tree);
+
+       return 0;
+}
+
+int Show (void)
+{
+       pTree tree;
+       int i, error;
+       WCHAR errbuf[2000];
+
+       // load the tree
+       error = PML_LoadTree (&tree, "tree.xml", NULL);
+       if(error)
+       {
+               wprintf(PML_TransError(error, errbuf, sizeof(errbuf)/sizeof(WCHAR)));
+               return 0;
+       }
+
+       // look up the item
+       for (i=2; i<Argc; i++)
+       {
+               int id = PML_FindItem(tree, Argv[i]);
+
+               if(id)
+                       printf(PML_GetDescription(tree, id));
+
+               else 
+                       printf("Could not find the Package \"%s\"\n", Argv[i]);
+       }
+
+       // clean up
+       PML_CloseTree (tree);
+
+       return 0;
+}