1#!/usr/local/bin/perl 2# 3#ident $Id: vers_string,v 1.2 2010/02/25 14:40:39 lukeh Exp $ 4# 5# Implementation of SGS vers_string which uses CVSVersionInfo.txt. 6 7require "cvslib.pl"; 8 9$OUTFILE = (-f "version.h") ? "version.h" : "vers.c"; 10$AUTHOR = `whoami`; 11$HEADER = '$Id: vers_string,v 1.2 2010/02/25 14:40:39 lukeh Exp $'; 12 13if ($ENV{'PROGRAM'}) { $PROGRAM = $ENV{'PROGRAM'}; } 14 15chop($AUTHOR); 16chop($DATE=`date -u`); 17chop($CWD=`pwd`); 18 19($PROJECT, $VERSION) = split(/\-/, &getCVSVersionInfo()); 20 21if (!defined($PROJECT)) { 22 $PROJECT = "Unknown"; 23 $PROGRAM = "Unknown"; 24} else { 25 $SEP = "-"; 26 if (!defined($PROGRAM)) { 27 chop($PROGRAM=`basename $CWD`); 28 } 29} 30 31if ($ARGV[0] eq "-f") { 32 print $PROJECT, $SEP, $VERSION, "\n"; 33} elsif ($ARGV[0] eq "-l") { 34 print "static const char SGS_VERS[160] = \""; 35 print '@(#)LIBRARY:', $PROGRAM, ' PROJECT:', $PROJECT, $SEP, $VERSION, ' DEVELOPER:', $AUTHOR, ' BUILT:', $DATE; 36 print "\";\n"; 37} elsif ($ARGV[0] eq "-c") { 38 print "const char SGS_VERS[160] = \""; 39 print '@(#)PROGRAM:', $PROGRAM, ' PROJECT:', $PROJECT, $SEP, $VERSION, ' DEVELOPER:', $AUTHOR, ' BUILT:', $DATE; 40 print "\";\n"; 41 print "const char VERS_NUM[10] = \"$VERSION\";\n"; 42} elsif ($ARGV[0] eq "-n") { 43 print "$VERSION\n"; 44} elsif ($ARGV[0] eq "-B") { 45 print 'PROGRAM:', $PROGRAM, ' PROJECT:', $PROJECT, $SEP, $VERSION, ' DEVELOPER:', $AUTHOR, ' BUILT:NO DATE SET (-B used)',"\n"; 46} elsif ($ARGV[0] eq "-v") { 47 unlink($OUTFILE); 48 open(OUTFILE,">$OUTFILE"); 49 print OUTFILE "/* $OUTFILE built by $HEADER */\n"; 50 print OUTFILE "\n"; 51 if ($OUTFILE eq "version.h") { 52 print OUTFILE "#define USE_SGS_VERS\n\n"; 53 } 54 print OUTFILE "const char SGS_VERS[160] = \""; 55 print OUTFILE '@(#)PROGRAM:', $PROGRAM, ' PROJECT:', $PROJECT, $SEP, $VERSION, ' DEVELOPER:', $AUTHOR, ' BUILT:', $DATE; 56 print OUTFILE "\";\n\n"; 57 print OUTFILE "const char VERS_NUM[10] = \"$VERSION\";\n\n"; 58 close(OUTFILE); 59} elsif ($ARGV[0] ne "") { 60 print STDERR "$HEADER\n"; 61 print STDERR "Copyright (C) 1997-2010 Luke Howard <lukeh\@padl.com>"; 62 print STDERR "\n\n"; 63 print STDERR "Unknown command line option $ARGV[0].\n"; 64 print STDERR "Usage: vers_string [-f|-l|-c|-n|-B|-v]\n"; 65 print STDERR "\t-f: echo project-n to stdout\n"; 66 print STDERR "\t-l: echo static const char SGS_VERS to stdout\n"; 67 print STDERR "\t-c: echo const char VERS_NUM and SGS_VERS to stdout\n"; 68 print STDERR "\t-n: echo version number to stdout\n"; 69 print STDERR "\t-B: emulate vers_string -B (why?)\n"; 70 print STDERR "\t-v: generate $OUTFILE\n"; 71 print STDERR "\tother options same as vers_string\n"; 72 print STDERR "\n"; 73 print STDERR "\tTo attach a project name and version number to a CVS\n"; 74 print STDERR "\tmodule, use checkpoint\n"; 75 print STDERR "\tTo find out the current project version, type cvsver\n"; 76 print STDERR "\tTo create a new project, type cvsnew [project]\n"; 77 print STDERR "\tTo sync with an existing project, type cvssync\n"; 78 print STDERR "\tTo create a project distribution, type tarup\n"; 79 print STDERR "\tTo commit a project, type commit [message]\n"; 80} else { 81 print 'PROGRAM:', $PROGRAM, ' PROJECT:', $PROJECT, $SEP, $VERSION, ' DEVELOPER:', $AUTHOR, ' BUILT:', $DATE; 82 print "\n"; 83} 84