]> oss.titaniummirror.com Git - tinyos-2.x.git/blobdiff - tools/tinyos/misc/tos-ident-flags.in
Merge devel code into the trunk.
[tinyos-2.x.git] / tools / tinyos / misc / tos-ident-flags.in
diff --git a/tools/tinyos/misc/tos-ident-flags.in b/tools/tinyos/misc/tos-ident-flags.in
new file mode 100644 (file)
index 0000000..730610f
--- /dev/null
@@ -0,0 +1,48 @@
+#!@pathperl@ -w
+#$Id$
+#@author Cory Sharp <cssharp@eecs.berkeley.edu>
+
+use strict;
+
+my $MaxNameLength = 16;
+
+if( @ARGV != 1 ) {
+  print "usage: tos-ident-flags program_name\n";
+  exit 0;
+}
+
+my $name = $ARGV[0];
+my $time = sprintf( "0x%08x", `date +%s` );
+
+(my $whoami = `whoami`) =~ s/\s//g;
+(my $hostname = `hostname`) =~ s/\s//g;
+my $uidhash = `echo "$name$time$whoami$hostname" | sha1sum`;
+my $idhash = `echo "$whoami$hostname" | sha1sum`;
+my $uid = ($uidhash =~/^(.{8})/) ? "0x$1" : 0;
+my $id = ($idhash =~/^(.{8})/) ? "0x$1" : 0;
+
+my @defs = ();
+my $qname = "";
+if( defined $name && $name !~ /^\s*$/ ) {
+  ($qname = $name) =~ s/['"]//g;
+  substr( $qname, $MaxNameLength-1 ) = "" if length $qname >= $MaxNameLength;
+  my @bytes = unpack( "C*", $qname );
+  push( @defs, "-DIDENT_PROGRAM_NAME=\\\"$qname\\\"" );
+}
+if( defined $whoami && $whoami !~ /^\s*$/ ) {
+  ($qname = $whoami) =~ s/['"]//g;
+  substr( $qname, $MaxNameLength-1 ) = "" if length $qname >= $MaxNameLength;
+  my @bytes = unpack( "C*", $qname );
+  push( @defs, "-DIDENT_USER_ID=\\\"$qname\\\"" );
+}
+if( defined $hostname && $hostname !~ /^\s*$/ ) {
+  ($qname = $hostname) =~ s/['"]//g;
+  substr( $qname, $MaxNameLength-1 ) = "" if length $qname >= $MaxNameLength;
+  my @bytes = unpack( "C*", $qname );
+  push( @defs, "-DIDENT_HOSTNAME=\\\"$qname\\\"" );
+}
+push( @defs, "-DIDENT_USER_HASH=${id}L" );
+push( @defs, "-DIDENT_UNIX_TIME=${time}L" );
+push( @defs, "-DIDENT_UID_HASH=${uid}L" );
+
+print join(" ",@defs) . "\n";