Index: libsrtp/test/getopt_s.c |
=================================================================== |
--- libsrtp/test/getopt_s.c (revision 0) |
+++ libsrtp/test/getopt_s.c (revision 0) |
@@ -0,0 +1,112 @@ |
+/* |
+ * getopt.c |
+ * |
+ * a minimal implementation of the getopt() function, written so that |
+ * test applications that use that function can run on non-POSIX |
+ * platforms |
+ * |
+ */ |
+/* |
+ * |
+ * Copyright (c) 2001-2006 Cisco Systems, Inc. |
+ * All rights reserved. |
+ * |
+ * Redistribution and use in source and binary forms, with or without |
+ * modification, are permitted provided that the following conditions |
+ * are met: |
+ * |
+ * Redistributions of source code must retain the above copyright |
+ * notice, this list of conditions and the following disclaimer. |
+ * |
+ * Redistributions in binary form must reproduce the above |
+ * copyright notice, this list of conditions and the following |
+ * disclaimer in the documentation and/or other materials provided |
+ * with the distribution. |
+ * |
+ * Neither the name of the Cisco Systems, Inc. nor the names of its |
+ * contributors may be used to endorse or promote products derived |
+ * from this software without specific prior written permission. |
+ * |
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS |
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE |
+ * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, |
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR |
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED |
+ * OF THE POSSIBILITY OF SUCH DAMAGE. |
+ * |
+ */ |
+ |
+#include <stdlib.h> /* for NULL */ |
+ |
+int optind_s = 0; |
+ |
+char *optarg_s; |
+ |
+#define GETOPT_FOUND_WITHOUT_ARGUMENT 2 |
+#define GETOPT_FOUND_WITH_ARGUMENT 1 |
+#define GETOPT_NOT_FOUND 0 |
+ |
+static int |
+getopt_check_character(char c, const char *string) { |
+ unsigned int max_string_len = 128; |
+ |
+ while (*string != 0) { |
+ if (max_string_len == 0) { |
+ return '?'; |
+ } |
+ if (*string++ == c) { |
+ if (*string == ':') { |
+ return GETOPT_FOUND_WITH_ARGUMENT; |
+ } else { |
+ return GETOPT_FOUND_WITHOUT_ARGUMENT; |
+ } |
+ } |
+ } |
+ return GETOPT_NOT_FOUND; |
+} |
+ |
+int |
+getopt_s(int argc, |
+ char * const argv[], |
+ const char *optstring) { |
+ |
+ |
+ while (optind_s + 1 < argc) { |
+ char *string; |
+ |
+ /* move 'string' on to next argument */ |
+ optind_s++; |
+ string = argv[optind_s]; |
+ |
+ if (string == NULL) |
+ return '?'; /* NULL argument string */ |
+ |
+ if (string[0] != '-') |
+ return -1; /* found an unexpected character */ |
+ |
+ switch(getopt_check_character(string[1], optstring)) { |
+ case GETOPT_FOUND_WITH_ARGUMENT: |
+ if (optind_s + 1 < argc) { |
+ optind_s++; |
+ optarg_s = argv[optind_s]; |
+ return string[1]; |
+ } else { |
+ return '?'; /* argument missing */ |
+ } |
+ case GETOPT_FOUND_WITHOUT_ARGUMENT: |
+ return string[1]; |
+ case GETOPT_NOT_FOUND: |
+ default: |
+ return '?'; /* didn't find expected character */ |
+ break; |
+ } |
+ } |
+ |
+ return -1; |
+} |
Property changes on: libsrtp/test/getopt_s.c |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |