summaryrefslogtreecommitdiff
path: root/examples/APG/Config/ARGV_Example.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/APG/Config/ARGV_Example.cpp')
-rw-r--r--examples/APG/Config/ARGV_Example.cpp62
1 files changed, 62 insertions, 0 deletions
diff --git a/examples/APG/Config/ARGV_Example.cpp b/examples/APG/Config/ARGV_Example.cpp
new file mode 100644
index 00000000000..92fb25cd30d
--- /dev/null
+++ b/examples/APG/Config/ARGV_Example.cpp
@@ -0,0 +1,62 @@
+/**
+ * $Id$
+ *
+ * ACE_ARGV examples not in a larger program. Sample code from The ACE
+ * Programmer's Guide, Copyright 2003 Addison-Wesley. All Rights Reserved.
+ */
+
+#include "ace/os_include/os_netdb.h"
+#include "ace/OS_NS_string.h"
+#include "ace/Log_Msg.h"
+
+// Listing 1 code/ch04
+#include "ace/ARGV.h"
+#include "ace/Get_Opt.h"
+
+int ACE_TMAIN (int, ACE_TCHAR *[])
+{
+ static const ACE_TCHAR options[] = ACE_TEXT (":f:h:");
+ static const ACE_TCHAR cmdline[] =
+ ACE_TEXT ("-f /home/managed.cfg -h $HOSTNAME");
+ ACE_ARGV cmdline_args (cmdline);
+ ACE_Get_Opt cmd_opts (cmdline_args.argc (),
+ cmdline_args.argv (),
+ options,
+ 0); // Don't skip any args
+
+// Listing 1
+
+ int option;
+ ACE_TCHAR config_file[MAXPATHLEN];
+ ACE_TCHAR hostname[MAXHOSTNAMELEN];
+ ACE_OS_String::strcpy (config_file, ACE_TEXT ("HAStatus.conf"));
+ ACE_OS_String::strcpy (hostname, ACE_TEXT ("not set"));
+ while ((option = cmd_opts ()) != EOF)
+ switch (option) {
+ case 'f':
+ ACE_OS_String::strncpy (config_file,
+ cmd_opts.opt_arg (),
+ MAXPATHLEN);
+ break;
+
+ case 'h':
+ ACE_OS_String::strncpy (hostname,
+ cmd_opts.opt_arg (),
+ MAXHOSTNAMELEN);
+ break;
+
+ case ':':
+ ACE_ERROR_RETURN
+ ((LM_ERROR, ACE_TEXT ("-%c requires an argument\n"),
+ cmd_opts.opt_opt ()), -1);
+
+
+ default:
+ ACE_ERROR_RETURN
+ ((LM_ERROR, ACE_TEXT ("Parse error.\n")), -1);
+ }
+
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Config file: %s\n"), config_file));
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Hostname: %s\n"), hostname));
+ return 0;
+}