Add a .pragma directive for configuration files
[openssl.git] / crypto / conf / keysets.pl
index 1aed0c80c4b9b6e49c837270fef62d447a6b47ca..b0e2249364d833646e57b36f58bc830aad5ba4be 100644 (file)
-#!/usr/local/bin/perl
-
-$NUMBER=0x01;
-$UPPER=0x02;
-$LOWER=0x04;
-$EOF=0x08;
-$WS=0x10;
-$ESC=0x20;
-$QUOTE=0x40;
-$COMMENT=0x80;
-$UNDER=0x100;
-
-foreach (0 .. 127)
-       {
-       $v=0;
-       $c=sprintf("%c",$_);
-       $v|=$NUMBER     if ($c =~ /[0-9]/);
-       $v|=$UPPER      if ($c =~ /[A-Z]/);
-       $v|=$LOWER      if ($c =~ /[a-z]/);
-       $v|=$UNDER      if ($c =~ /_/);
-       $v|=$WS         if ($c =~ / \t\r\n/);
-       $v|=$ESC        if ($c =~ /\\/);
-       $v|=$QUOTE      if ($c =~ /['`"]/);
-       $v|=$COMMENT    if ($c =~ /\#/);
-       $v|=$EOF        if ($c =~ /\0/);
-
-       push(@V,$v);
-       }
+#! /usr/bin/env perl
+# Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved.
+#
+# Licensed under the Apache License 2.0 (the "License").  You may not use
+# this file except in compliance with the License.  You can obtain a copy
+# in the file LICENSE in the source distribution or at
+# https://www.openssl.org/source/license.html
+
+use strict;
+use warnings;
+
+my $NUMBER      = 0x0001;
+my $UPPER       = 0x0002;
+my $LOWER       = 0x0004;
+my $UNDER       = 0x0100;
+my $PUNCTUATION = 0x0200;
+my $WS          = 0x0010;
+my $ESC         = 0x0020;
+my $QUOTE       = 0x0040;
+my $DQUOTE      = 0x0400;
+my $COMMENT     = 0x0080;
+my $FCOMMENT    = 0x0800;
+my $DOLLAR      = 0x1000;
+my $EOF         = 0x0008;
+my @V_def;
+my @V_w32;
+
+my $v;
+my $c;
+foreach (0 .. 127) {
+    $c = sprintf("%c", $_);
+    $v = 0;
+    $v |= $NUMBER      if $c =~ /[0-9]/;
+    $v |= $UPPER       if $c =~ /[A-Z]/;
+    $v |= $LOWER       if $c =~ /[a-z]/;
+    $v |= $UNDER       if $c =~ /_/;
+    $v |= $PUNCTUATION if $c =~ /[!\.%&\*\+,\/;\?\@\^\~\|-]/;
+    $v |= $WS          if $c =~ /[ \t\r\n]/;
+    $v |= $ESC         if $c =~ /\\/;
+    $v |= $QUOTE       if $c =~ /['`"]/;         # for emacs: "`'
+    $v |= $COMMENT     if $c =~ /\#/;
+    $v |= $DOLLAR      if $c eq '$';
+    $v |= $EOF         if $c =~ /\0/;
+    push(@V_def, $v);
+
+    $v = 0;
+    $v |= $NUMBER      if $c =~ /[0-9]/;
+    $v |= $UPPER       if $c =~ /[A-Z]/;
+    $v |= $LOWER       if $c =~ /[a-z]/;
+    $v |= $UNDER       if $c =~ /_/;
+    $v |= $PUNCTUATION if $c =~ /[!\.%&\*\+,\/;\?\@\^\~\|-]/;
+    $v |= $WS          if $c =~ /[ \t\r\n]/;
+    $v |= $DQUOTE      if $c =~ /["]/;           # for emacs: "
+    $v |= $FCOMMENT    if $c =~ /;/;
+    $v |= $DOLLAR      if $c eq '$';
+    $v |= $EOF         if $c =~ /\0/;
+    push(@V_w32, $v);
+}
+
+# Output year depends on the year of the script.
+my $YEAR = [localtime([stat($0)]->[9])]->[5] + 1900;
 
 print <<"EOF";
-#define CONF_NUMBER            $NUMBER
-#define CONF_UPPER             $UPPER
-#define CONF_LOWER             $LOWER
-#define CONF_EOF               $EOF
-#define CONF_WS                        $WS
-#define CONF_ESC               $ESC
-#define CONF_QUOTE             $QUOTE
-#define CONF_COMMENT           $COMMENT
-#define CONF_ALPHA             (CONF_UPPER|CONF_LOWER)
-#define CONF_ALPHA_NUMERIC     (CONF_ALPHA|CONF_NUMBER|CONF_UNDER)
-#define CONF_UNDER             $UNDER
-
-#define IS_COMMENT(a)          (CONF_COMMENT&(CONF_type[(a)&0x7f]))
-#define IS_EOF(a)              ((a) == '\\0')
-#define IS_ESC(a)              ((a) == '\\\\')
-#define IS_NUMER(a)            (CONF_type[(a)&0x7f]&CONF_NUMBER)
-#define IS_WS(a)               (CONF_type[(a)&0x7f]&CONF_WS)
-#define IS_ALPHA_NUMERIC(a)    (CONF_type[(a)&0x7f]&CONF_ALPHA_NUMERIC)
-#define IS_QUOTE(a)            (CONF_type[(a)&0x7f]&CONF_QUOTE)
+/*
+ * WARNING: do not edit!
+ * Generated by crypto/conf/keysets.pl
+ *
+ * Copyright 1995-$YEAR The OpenSSL Project Authors. All Rights Reserved.
+ * Licensed under the Apache License 2.0 (the "License").  You may not use
+ * this file except in compliance with the License.  You can obtain a copy
+ * in the file LICENSE in the source distribution or at
+ * https://www.openssl.org/source/license.html
+ */
+
+#define CONF_NUMBER       $NUMBER
+#define CONF_UPPER        $UPPER
+#define CONF_LOWER        $LOWER
+#define CONF_UNDER        $UNDER
+#define CONF_PUNCT        $PUNCTUATION
+#define CONF_WS           $WS
+#define CONF_ESC          $ESC
+#define CONF_QUOTE        $QUOTE
+#define CONF_DQUOTE       $DQUOTE
+#define CONF_COMMENT      $COMMENT
+#define CONF_FCOMMENT     $FCOMMENT
+#define CONF_DOLLAR       $DOLLAR
+#define CONF_EOF          $EOF
+#define CONF_ALPHA        (CONF_UPPER|CONF_LOWER)
+#define CONF_ALNUM        (CONF_ALPHA|CONF_NUMBER|CONF_UNDER)
+#define CONF_ALNUM_PUNCT  (CONF_ALPHA|CONF_NUMBER|CONF_UNDER|CONF_PUNCT)
+
+
+#define IS_COMMENT(conf,c)     is_keytype(conf, c, CONF_COMMENT)
+#define IS_FCOMMENT(conf,c)    is_keytype(conf, c, CONF_FCOMMENT)
+#define IS_EOF(conf,c)         is_keytype(conf, c, CONF_EOF)
+#define IS_ESC(conf,c)         is_keytype(conf, c, CONF_ESC)
+#define IS_NUMBER(conf,c)      is_keytype(conf, c, CONF_NUMBER)
+#define IS_WS(conf,c)          is_keytype(conf, c, CONF_WS)
+#define IS_ALNUM(conf,c)       is_keytype(conf, c, CONF_ALNUM)
+#define IS_ALNUM_PUNCT(conf,c) is_keytype(conf, c, CONF_ALNUM_PUNCT)
+#define IS_QUOTE(conf,c)       is_keytype(conf, c, CONF_QUOTE)
+#define IS_DQUOTE(conf,c)      is_keytype(conf, c, CONF_DQUOTE)
+#define IS_DOLLAR(conf,c)      is_keytype(conf, c, CONF_DOLLAR)
 
 EOF
 
-print "static unsigned short CONF_type[128]={";
+my $i;
 
-for ($i=0; $i<128; $i++)
-       {
-       print "\n\t" if ($i % 8) == 0;
-       printf "0x%03X,",$V[$i];
-       }
+print "static const unsigned short CONF_type_default[128] = {";
+for ($i = 0; $i < 128; $i++) {
+    print "\n   " if ($i % 8) == 0;
+    printf " 0x%04X,", $V_def[$i];
+}
+print "\n};\n\n";
 
-print "\n\t};\n";
+print "#ifndef OPENSSL_NO_DEPRECATED_3_0\n";
+print "static const unsigned short CONF_type_win32[128] = {";
+for ($i = 0; $i < 128; $i++) {
+    print "\n   " if ($i % 8) == 0;
+    printf " 0x%04X,", $V_w32[$i];
+}
+print "\n};\n";
+print "#endif\n";