Blame src/config/ren2long.awk

Packit fd8b60
#
Packit fd8b60
# Awk script to convert filenames shortened down to 8.3 
Packit fd8b60
# back to their larger size. 
Packit fd8b60
#
Packit fd8b60
# Works by looking at every filename and seeing if it's shortened
Packit fd8b60
# 8.3 version exists, and if so then mv the short name to the long
Packit fd8b60
# name.
Packit fd8b60
#
Packit fd8b60
# Usage: find . -type f -print | gawk -f ren2long.awk | sh -x [ 2> /dev/null ]
Packit fd8b60
#
Packit fd8b60
Packit fd8b60
Packit fd8b60
# Parse_path
Packit fd8b60
#
Packit fd8b60
# Takes the whole path and converts the basename part to 8.3. If it
Packit fd8b60
# changed in the process we emit a sh command to mv it if the shortened
Packit fd8b60
# name exists.
Packit fd8b60
# 
Packit fd8b60
function parse_path(p,P2,N,NEW) {
Packit fd8b60
Packit fd8b60
     P2 = tolower(p)
Packit fd8b60
Packit fd8b60
     NEW = ""
Packit fd8b60
     while(1) {
Packit fd8b60
	  N = index(P2,"/")			# Go until all / are parsed
Packit fd8b60
	  if (N == 0) break
Packit fd8b60
Packit fd8b60
	  NEW = NEW name83(substr(P2,1,N-1)) "/"; # More of the path
Packit fd8b60
	  P2 = substr(P2,N+1)
Packit fd8b60
     }
Packit fd8b60
Packit fd8b60
     if (bad[P2] == 1) {
Packit fd8b60
	  print "echo skipping " p
Packit fd8b60
	  return
Packit fd8b60
     }
Packit fd8b60
     NEW = NEW name83(P2)			# Append path and 8.3 name
Packit fd8b60
Packit fd8b60
     if (bad[P2] == 2) {
Packit fd8b60
	  print "if [ -f " NEW " ]; then echo ::rm " NEW " ; rm " NEW " ; fi"
Packit fd8b60
	  return
Packit fd8b60
     }
Packit fd8b60
     if (NEW != p) 
Packit fd8b60
	  print "if [ -f " NEW " ]; then echo ::mv " NEW " " p " ; mv " NEW " " p " ; fi"
Packit fd8b60
}
Packit fd8b60
#
Packit fd8b60
# Name83
Packit fd8b60
# 
Packit fd8b60
# Converts the a single component part of a file name into 8.3 format
Packit fd8b60
#
Packit fd8b60
function name83(fname,P,B,E) {
Packit fd8b60
     P = index(fname,".");			# Find the extension
Packit fd8b60
Packit fd8b60
     if (P == 0) {				# No extension
Packit fd8b60
	  B = substr(fname,1,8);		# Just truncate at 8 chars
Packit fd8b60
	  return B;
Packit fd8b60
    }
Packit fd8b60
Packit fd8b60
    B = substr(fname, 1, P <= 8 ? P-1 : 8);	# At most 8 chars in name
Packit fd8b60
    E = substr(fname, P+1, 3)			# And 3 in extension
Packit fd8b60
    P = index(E, ".")				# 2 dot problem
Packit fd8b60
    if (P)
Packit fd8b60
	 E = substr(E, 1, P-1)
Packit fd8b60
Packit fd8b60
     B = B "." E				# Put name together
Packit fd8b60
     return B
Packit fd8b60
}
Packit fd8b60
BEGIN {
Packit fd8b60
     bad["krb5-types-aux.h"] = 1
Packit fd8b60
     bad["autoconf.h.in"] = 1
Packit fd8b60
     bad["conv_tkt_skey.c"] = 1
Packit fd8b60
     ##bad["makefile"] = 2 -- windows have legitimate files with this name
Packit fd8b60
}
Packit fd8b60
{
Packit fd8b60
     parse_path($1)				# Do it
Packit fd8b60
}