summaryrefslogtreecommitdiff
path: root/tests/libtest/mk-lib1521.pl
diff options
context:
space:
mode:
Diffstat (limited to 'tests/libtest/mk-lib1521.pl')
-rw-r--r--tests/libtest/mk-lib1521.pl143
1 files changed, 143 insertions, 0 deletions
diff --git a/tests/libtest/mk-lib1521.pl b/tests/libtest/mk-lib1521.pl
new file mode 100644
index 000000000..60c65f57e
--- /dev/null
+++ b/tests/libtest/mk-lib1521.pl
@@ -0,0 +1,143 @@
+#!/usr/bin/env perl
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.haxx.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
+
+# Usage:
+# cat ../../include/curl/curl.h | perl mk-lib1521.pl > lib1521.c
+
+# minimum and maximum 32 signed values
+my $minlong = - (1<<31)+1;
+my $maxlong = (1<<31);
+
+print <<HEADER
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \\| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \\___|\\___/|_| \\_\\_____|
+ *
+ * Copyright (C) 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include "test.h"
+
+#include "memdebug.h"
+
+/* This source code is generated by mk-lib1521.pl ! */
+
+struct data {
+ char *blaha;
+};
+
+static int func(void)
+{
+ return 0;
+}
+
+#define LO $minlong
+#define HI $maxlong
+#define OFF_VAL (curl_off_t) 3123123123
+#define OFF_LO (curl_off_t) LO
+#define OFF_HI (curl_off_t) HI
+#define OFF_NO (curl_off_t) 0
+
+int test(char *URL)
+{
+ CURL *curl;
+ CURL *dep;
+ CURLSH *share;
+ (void)URL; /* not used */
+ dep = curl_easy_init();
+ share = curl_share_init();
+ curl = curl_easy_init();
+ if(curl) {
+ struct data object;
+HEADER
+ ;
+
+while(<STDIN>) {
+ if($_ =~ /^ CINIT\(([^ ]*), ([^ ]*), (\d*)\)/) {
+ my ($name, $type, $val)=($1, $2, $3);
+ my $w=" ";
+ my $pref = "$w(void)curl_easy_setopt(curl, CURLOPT_$name,";
+ my $i = ' ' x (length($w) + 23);
+ if($type eq "STRINGPOINT") {
+ print "${pref} \"string\");\n";
+ print "${pref} NULL);\n";
+ }
+ elsif($type eq "LONG") {
+ print "${pref} 0L);\n";
+ print "${pref} 22L);\n";
+ print "${pref} LO);\n";
+ print "${pref} HI);\n";
+ }
+ elsif($type eq "OBJECTPOINT") {
+ if($name =~ /DEPENDS/) {
+ print "${pref} dep);\n";
+ }
+ elsif($name =~ /SHARE/) {
+ print "${pref} share);\n";
+ }
+ else {
+ print "${pref} &object);\n";
+ }
+ print "${pref} NULL);\n";
+ }
+ elsif($type eq "FUNCTIONPOINT") {
+ print "${pref} &func);\n";
+ print "${pref} NULL);\n";
+ }
+ elsif($type eq "OFF_T") {
+ # play conservative to work with 32bit curl_off_t
+ print "${pref} OFF_NO);\n";
+ print "${pref} OFF_VAL);\n";
+ print "${pref} OFF_LO);\n";
+ }
+ else {
+ print "\n---- $type\n";
+ }
+ }
+}
+
+
+print <<FOOTER
+ curl_easy_setopt(curl, 1, 0);
+ curl_easy_cleanup(curl);
+ curl_easy_cleanup(dep);
+ curl_share_cleanup(share);
+ }
+ return 0;
+}
+FOOTER
+ ;