RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  ____________________________________________________________________________

  Server: rpm5.org                         Name:   Jeff Johnson
  Root:   /v/rpm/cvs                       Email:  [email protected]
  Module: rpm                              Date:   15-Jul-2010 22:48:21
  Branch: HEAD                             Handle: 2010071520482100

  Added files:
    rpm/rpmdb               tag2asn.sh

  Log:
    - rpmtag: stub in no-brainer ASN.1 generation for rpmTagData.

  Summary:
    Revision    Changes     Path
    1.1         +85 -0      rpm/rpmdb/tag2asn.sh
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/tag2asn.sh
  ============================================================================
  $ cvs diff -u -r0 -r1.1 tag2asn.sh
  --- /dev/null 2010-07-15 22:45:49.000000000 +0200
  +++ tag2asn.sh        2010-07-15 22:48:21.925833110 +0200
  @@ -0,0 +1,85 @@
  +#!/bin/sh
  +
  +AWK=awk
  +
  +$AWK '
  +BEGIN {
  +  printf("\
  +rpmTagData\
  +\n   { iso org(3) dod(6) internet(1) private(4) enterprise(1)\
  +\n           rpm(36106) tag(1) }\
  +\n\
  +\nDEFINITIONS EXPLICIT TAGS ::=\
  +\nBEGIN\
  +\n\
  +\nRPM_UINT8_TYPE     ::= INTEGER (0..255)\
  +\nRPM_UINT16_TYPE    ::= INTEGER (0..65535\
  +\nRPM_UINT32_TYPE    ::= INTEGER (0..4294967295)\
  +\nRPM_UINT64_TYPE    ::= INTEGER (0..18446744073709551615)\
  +\nRPM_STRING_TYPE    ::= VisibleString\
  +\nRPM_BIN_TYPE               ::= OCTET STRING\
  +\nRPM_STRING_ARRAY_TYPE      ::= VisibleString\
  +\nRPM_I18NSTRING_TYPE        ::= UTF8String\
  +");
  +}
  +
  +/[ \t](RPMTAG_[A-Z0-9]*)[ \t]+([0-9]*)/ && !/internal/ {
  +  tt = "NULL"; ta = "ANY";
  +
  +  tagOid = substr($1, length("RPMTAG_")+1);
  +  tagN = toupper(substr(tagOid, 1, 1)) tolower(substr(tagOid,2));
  +  tagNum = $3 + 0;
  +  if (tagNum == 0) {
  +     next;
  +  }
  +
  +  if ($2 == "=") {
  +    printf("\nid-%s\tOBJECT_IDENTIFIER ::= { rpmTagData %d }", tagN, tagNum)
  +  }
  +
  +  if ($5 == "c")     {
  +    tt = "UINT8";    ta = "";
  +  }
  +  if ($5 == "c[]")   {
  +    tt = "UINT8";    ta = "SEQUENCE OF ";
  +  }
  +  if ($5 == "h")     {
  +    tt = "UINT16";   ta = "";
  +  }
  +  if ($5 == "h[]")   {
  +    tt = "UINT16";   ta = "SEQUENCE OF ";
  +  }
  +  if ($5 == "i")     {
  +    tt = "UINT32";   ta = "";
  +  }
  +  if ($5 == "i[]")   {
  +    tt = "UINT32";   ta = "SEQUENCE OF ";
  +  }
  +  if ($5 == "l")     {
  +    tt = "UINT64";   ta = "";
  +  }
  +  if ($5 == "l[]")   {
  +    tt = "UINT64";   ta = "SEQUENCE OF ";
  +  }
  +  if ($5 == "s")     {
  +    tt = "STRING";   ta = "";
  +  }
  +  if ($5 == "s[]")   {
  +    tt = "STRING_ARRAY"; ta = "SEQUENCE OF ";
  +  }
  +  if ($5 == "s{}")   {
  +    tt = "I18NSTRING";       ta = "";
  +  }
  +  if ($5 == "x")     {
  +    tt = "BIN";              ta = "";
  +  }
  +
  +  printf("\n%s ::= %sRPM_%s_TYPE", tagN, ta, tt);
  +
  +}
  +
  +END {
  +  printf("\nEND\n");
  +}
  +
  +' < rpmtag.h
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                [email protected]

Reply via email to