-////////////////////////////////////////////////////////\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
- // install a package\r
- if (!strcmp(argv[1], "install")) \r
- Install();\r
-\r
- // install a package from source\r
- else if (!strcmp(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 (!strcmp(argv[1], "update"))\r
- {\r
- wprintf(L"Sorry but I can't do that yet. \n");\r
- }\r
-\r
- // update everything\r
- else if (!strcmp(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 (!strcmp(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 (!strcmp(argv[1], "show"))\r
- {\r
- Show();\r
- }\r
-\r
- // search for a package\r
- else if (!strcmp(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)
+{
+ 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));
+ done = TRUE;
+ }
+
+ return 0;
+}
+
+int Install (void)
+{
+ pTree tree;
+ int i, error;
+
+ // load the tree
+ error = PML_LoadTree (&tree, "tree.xml", NULL);
+ if(error)
+ {
+ wprintf(PML_TransError(error));
+ 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));
+ 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;
+
+ // load the tree
+ error = PML_LoadTree (&tree, "tree.xml", NULL);
+ if(error)
+ {
+ wprintf(PML_TransError(error));
+ 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;
+}