diff options
| author | 2014-06-26 16:08:37 +0200 | |
|---|---|---|
| committer | 2014-06-26 16:08:37 +0200 | |
| commit | 5f02f11890b79f3254fbafa67ee6600982953856 (patch) | |
| tree | a1948041408bdbbc4ab2067a6a15b6936061ea61 | |
| parent | 055b7ca1312376f2fdf214176a1ae782d05f5396 (diff) | |
| download | colorize-5f02f11890b79f3254fbafa67ee6600982953856.tar.gz colorize-5f02f11890b79f3254fbafa67ee6600982953856.tar.bz2 | |
Include commit hash in version output
Extracting the abbreviated commit hash will break when git will be
replaced by a different version control system.  But until it does,
get the hash from the git repository.
| -rw-r--r-- | Makefile | 5 | ||||
| -rw-r--r-- | colorize.c | 10 | ||||
| -rwxr-xr-x | version.pl | 24 | 
3 files changed, 36 insertions, 3 deletions
| @@ -8,10 +8,11 @@ CC=gcc  CFLAGS=-ansi -pedantic  colorize:	colorize.c -			$(CC) $(CFLAGS) -o colorize colorize.c -DCFLAGS="$(CFLAGS)" +			perl ./version.pl > version.h +			$(CC) $(CFLAGS) -o colorize colorize.c -DCFLAGS="$(CFLAGS)" -DHAVE_VERSION  check:  			perl ./test.pl  clean: -			[ -e colorize ] && rm colorize; exit 0 +			rm -f colorize version.h @@ -403,6 +403,11 @@ print_help (void)  static void  print_version (void)  { +#ifdef HAVE_VERSION +# include "version.h" +#else +    const char *version = NULL; +#endif      const char *c_flags;      struct bytes_size bytes_size;      bool debug; @@ -416,7 +421,10 @@ print_version (void)  #else      debug = false;  #endif -    printf ("%s v%s (compiled at %s, %s)\n", "colorize", VERSION, __DATE__, __TIME__); +    if (version) +      printf ("colorize %s (compiled at %s, %s)\n", version, __DATE__, __TIME__); +    else +      printf ("colorize v%s (compiled at %s, %s)\n", VERSION, __DATE__, __TIME__);      printf ("Compiler flags: %s\n", c_flags);      if (get_bytes_size (BUF_SIZE, &bytes_size))        { diff --git a/version.pl b/version.pl new file mode 100755 index 0000000..850902e --- /dev/null +++ b/version.pl @@ -0,0 +1,24 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +my $version = ''; + +# git repository +if (system('which git >/dev/null 2>&1') == 0 +and system('git ls-files colorize.c --error-unmatch >/dev/null 2>&1') == 0) { +    $version = `git describe --tags --dirty`; +    $version =~ s/\n$//g; +} + +if (length $version) { +    print <<"EOT"; +const char *version = "$version"; +EOT +} +else { +    print <<'EOT'; +const char *version = NULL; +EOT +} | 
