1*36ac495dSmrg#! /bin/sh 2*36ac495dSmrg 3*36ac495dSmrg# Convert one kind of changeset identifier to another. 4*36ac495dSmrg# 5*36ac495dSmrg# Usage: gcc-svn-ids -f from_kind -t to_kind id 6*36ac495dSmrg# 7*36ac495dSmrg# Where from_kind is one of: 8*36ac495dSmrg# index index into the changeset list used by the reghunt tools 9*36ac495dSmrg# rev is the Subversion revision name 10*36ac495dSmrg# and to_kind is one of: 11*36ac495dSmrg# index index into the changeset list used by the reghunt tools 12*36ac495dSmrg# rev is the Subversion revision name 13*36ac495dSmrg# date expanded UTC date string 14*36ac495dSmrg# branch the branch, or "trunk" for mainline 15*36ac495dSmrg# author the person who checked in the patch 16*36ac495dSmrg 17*36ac495dSmrgerrmsg () { 18*36ac495dSmrg echo $1 1>&2 19*36ac495dSmrg} 20*36ac495dSmrg 21*36ac495dSmrgusage () { 22*36ac495dSmrg echo 'cvs_ids -f kind -t kind id' 1>&2 23*36ac495dSmrg echo ' where from_kind is index or rev' 1>&2 24*36ac495dSmrg echo ' and to_kind is index, rev, date, author, or branch' 1>&2 25*36ac495dSmrg echo "error" 26*36ac495dSmrg exit 1 27*36ac495dSmrg} 28*36ac495dSmrg 29*36ac495dSmrgif [ "x${REG_CHANGESET_LIST}" = "x" ]; then 30*36ac495dSmrg errmsg "REG_CHANGESET_LIST is not defined" 31*36ac495dSmrg echo "error" 32*36ac495dSmrg exit 1 33*36ac495dSmrgfi 34*36ac495dSmrg 35*36ac495dSmrgif [ ! -f ${REG_CHANGESET_LIST} ]; then 36*36ac495dSmrg errmsg "changeset list ${REG_CHANGESET_LIST} does not exist" 37*36ac495dSmrg echo "error" 38*36ac495dSmrg exit 1 39*36ac495dSmrgfi 40*36ac495dSmrg 41*36ac495dSmrg# Use a shorter name here. 42*36ac495dSmrgLIST=${REG_CHANGESET_LIST} 43*36ac495dSmrg 44*36ac495dSmrgwhile getopts "f:t:" ARG; do 45*36ac495dSmrg case ${ARG} in 46*36ac495dSmrg f) FROM_KIND="${OPTARG}";; 47*36ac495dSmrg t) TO_KIND="${OPTARG}";; 48*36ac495dSmrg h) usage;; 49*36ac495dSmrg *) errmsg "unrecognized option: ${ARG}"; 50*36ac495dSmrg usage;; 51*36ac495dSmrg esac 52*36ac495dSmrgdone 53*36ac495dSmrgshift `expr ${OPTIND} - 1` 54*36ac495dSmrg 55*36ac495dSmrgif [ $# -eq 0 ]; then 56*36ac495dSmrg errmsg "too few arguments, ID is missing" 57*36ac495dSmrg usage 58*36ac495dSmrgfi 59*36ac495dSmrgif [ $# -gt 1 ]; then 60*36ac495dSmrg errmsg "unexpected arguments: $*" 61*36ac495dSmrg usage 62*36ac495dSmrgfi 63*36ac495dSmrgID="$1" 64*36ac495dSmrg 65*36ac495dSmrgcase ${FROM_KIND} in 66*36ac495dSmrgindex) LINE=`awk -F '|' -v id="${ID}" '{if ($1 == id) print }' < ${LIST}`;; 67*36ac495dSmrgrev) LINE=`awk -F '|' -v id="${ID}" '{if ($2 == id) print }' < ${LIST}`;; 68*36ac495dSmrg*) errmsg "unrecognized FROM kind: ${FROM_KIND}"; 69*36ac495dSmrg usage;; 70*36ac495dSmrgesac 71*36ac495dSmrg 72*36ac495dSmrgif [ "x${LINE}" = "x" ]; then 73*36ac495dSmrg errmsg "no entry found for ${FROM_KIND} = ${ID}" 74*36ac495dSmrg echo "error" 75*36ac495dSmrg exit 1 76*36ac495dSmrgfi 77*36ac495dSmrg 78*36ac495dSmrgcase ${TO_KIND} in 79*36ac495dSmrgindex) TO_ID="`echo ${LINE} | awk -F '|' '{ print $1 }'`";; 80*36ac495dSmrgrev) TO_ID="`echo ${LINE} | awk -F '|' '{ print $2 }'`";; 81*36ac495dSmrgauthor) TO_ID="`echo ${LINE} | awk -F '|' '{ print $3 }'`";; 82*36ac495dSmrgdate) TO_ID="`echo ${LINE} | awk -F '|' '{ print $4 }'`";; 83*36ac495dSmrgbranch) TO_ID="`echo ${LINE} | awk -F '|' '{ print $5 }'`";; 84*36ac495dSmrg*) errmsg "unrecognized TO kind: ${TO_KIND}"; 85*36ac495dSmrg usage;; 86*36ac495dSmrgesac 87*36ac495dSmrg 88*36ac495dSmrgecho ${TO_ID} 89