aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile5
-rw-r--r--colorize.c10
-rwxr-xr-xversion.pl24
3 files changed, 36 insertions, 3 deletions
diff --git a/Makefile b/Makefile
index ca0ee68..d061794 100644
--- a/Makefile
+++ b/Makefile
@@ -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
diff --git a/colorize.c b/colorize.c
index 54f6889..ea18425 100644
--- a/colorize.c
+++ b/colorize.c
@@ -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
+}