| #! /bin/sh | 
 |  | 
 | # Convert one kind of changeset identifier to another. | 
 | # | 
 | # Usage: gcc-svn-ids -f from_kind -t to_kind id | 
 | # | 
 | # Where from_kind is one of: | 
 | #   index   index into the changeset list used by the reghunt tools | 
 | #   rev     is the Subversion revision name | 
 | # and to_kind is one of: | 
 | #   index   index into the changeset list used by the reghunt tools | 
 | #   rev     is the Subversion revision name | 
 | #   date    expanded UTC date string | 
 | #   branch  the branch, or "trunk" for mainline | 
 | #   author  the person who checked in the patch | 
 |  | 
 | errmsg () { | 
 |   echo $1 1>&2 | 
 | } | 
 |  | 
 | usage () { | 
 |   echo 'cvs_ids -f kind -t kind id' 1>&2 | 
 |   echo '   where from_kind is index or rev' 1>&2 | 
 |   echo '   and to_kind is index, rev, date, author, or branch' 1>&2 | 
 |   echo "error" | 
 |   exit 1 | 
 | } | 
 |  | 
 | if [ "x${REG_CHANGESET_LIST}" = "x" ]; then | 
 |   errmsg "REG_CHANGESET_LIST is not defined" | 
 |   echo "error" | 
 |   exit 1 | 
 | fi | 
 |  | 
 | if [ ! -f ${REG_CHANGESET_LIST} ]; then | 
 |   errmsg "changeset list ${REG_CHANGESET_LIST} does not exist" | 
 |   echo "error" | 
 |   exit 1 | 
 | fi | 
 |  | 
 | # Use a shorter name here. | 
 | LIST=${REG_CHANGESET_LIST} | 
 |  | 
 | while getopts "f:t:" ARG; do | 
 |   case ${ARG} in | 
 |   f) FROM_KIND="${OPTARG}";; | 
 |   t) TO_KIND="${OPTARG}";; | 
 |   h) usage;; | 
 |   *) errmsg "unrecognized option: ${ARG}"; | 
 |      usage;; | 
 |   esac | 
 | done | 
 | shift `expr ${OPTIND} - 1` | 
 |  | 
 | if [ $# -eq 0 ]; then | 
 |   errmsg "too few arguments, ID is missing" | 
 |   usage | 
 | fi | 
 | if [ $# -gt 1 ]; then | 
 |   errmsg "unexpected arguments: $*" | 
 |   usage | 
 | fi | 
 | ID="$1" | 
 |  | 
 | case ${FROM_KIND} in | 
 | index)  LINE=`awk -F '|' -v id="${ID}" '{if ($1 == id) print }' < ${LIST}`;; | 
 | rev)    LINE=`awk -F '|' -v id="${ID}" '{if ($2 == id) print }' < ${LIST}`;; | 
 | *)      errmsg "unrecognized FROM kind: ${FROM_KIND}"; | 
 |         usage;; | 
 | esac | 
 |  | 
 | if [ "x${LINE}" = "x" ]; then | 
 |   errmsg "no entry found for ${FROM_KIND} = ${ID}" | 
 |   echo "error" | 
 |   exit 1 | 
 | fi | 
 |  | 
 | case ${TO_KIND} in | 
 | index)  TO_ID="`echo ${LINE} | awk -F '|' '{ print $1 }'`";; | 
 | rev)    TO_ID="`echo ${LINE} | awk -F '|' '{ print $2 }'`";; | 
 | author) TO_ID="`echo ${LINE} | awk -F '|' '{ print $3 }'`";; | 
 | date)   TO_ID="`echo ${LINE} | awk -F '|' '{ print $4 }'`";; | 
 | branch) TO_ID="`echo ${LINE} | awk -F '|' '{ print $5 }'`";; | 
 | *)      errmsg "unrecognized TO kind: ${TO_KIND}"; | 
 |         usage;; | 
 | esac | 
 |  | 
 | echo ${TO_ID} |