public class io.fabric.kubernetes.clnt.v.lib.FilenameUtils extends java.lang.Object
{
private static final java.lang.String[] EMPTY_STRING_ARRAY;
private static final java.lang.String EMPTY_STRING;
private static final int NOT_FOUND;
private static final char UNIX_SEPARATOR;
private static final char WINDOWS_SEPARATOR;
private static final char SYSTEM_SEPARATOR;
private static final char OTHER_SEPARATOR;
private static final java.util.regex.Pattern IPV4_PATTERN;
private static final int IPV4_MAX_OCTET_VALUE;
private static final int IPV6_MAX_HEX_GROUPS;
private static final int IPV6_MAX_HEX_DIGITS_PER_GROUP;
private static final int MAX_UNSIGNED_SHORT;
private static final int BASE_16;
private static final java.util.regex.Pattern REG_NAME_PART_PATTERN;
private void <init>()
{
io.fabric.kubernetes.clnt.v.lib.FilenameUtils v;
v := @this: io.fabric.kubernetes.clnt.v.lib.FilenameUtils;
specialinvoke v.<java.lang.Object: void <init>()>();
return;
}
static boolean isSystemWindows()
{
char v;
boolean v;
v = <io.fabric.kubernetes.clnt.v.lib.FilenameUtils: char SYSTEM_SEPARATOR>;
if v != 92 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
private static boolean isSeparator(char)
{
char v;
boolean v;
v := @parameter: char;
if v == 47 goto label;
if v != 92 goto label;
label:
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public static java.lang.String normalize(java.lang.String)
{
char v;
java.lang.String v, v;
v := @parameter: java.lang.String;
v = <io.fabric.kubernetes.clnt.v.lib.FilenameUtils: char SYSTEM_SEPARATOR>;
v = staticinvoke <io.fabric.kubernetes.clnt.v.lib.FilenameUtils: java.lang.String doNormalize(java.lang.String,char,boolean)>(v, v, 1);
return v;
}
public static java.lang.String normalizeNoEndSeparator(java.lang.String, boolean)
{
char v;
java.lang.String v, v;
boolean v;
v := @parameter: java.lang.String;
v := @parameter: boolean;
if v == 0 goto label;
v = 47;
goto label;
label:
v = 92;
label:
v = staticinvoke <io.fabric.kubernetes.clnt.v.lib.FilenameUtils: java.lang.String doNormalize(java.lang.String,char,boolean)>(v, v, 0);
return v;
}
private static java.lang.String doNormalize(java.lang.String, char, boolean)
{
boolean v, v;
int v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
java.lang.String v, v, v, v;
char v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
char[] v;
v := @parameter: java.lang.String;
v := @parameter: char;
v := @parameter: boolean;
if v != null goto label;
return null;
label:
staticinvoke <io.fabric.kubernetes.clnt.v.lib.FilenameUtils: void requireNonNullChars(java.lang.String)>(v);
v = virtualinvoke v.<java.lang.String: int length()>();
if v != 0 goto label;
return v;
label:
v = staticinvoke <io.fabric.kubernetes.clnt.v.lib.FilenameUtils: int getPrefixLength(java.lang.String)>(v);
if v >= 0 goto label;
return null;
label:
v = v + 2;
v = newarray (char)[v];
v = virtualinvoke v.<java.lang.String: int length()>();
virtualinvoke v.<java.lang.String: void getChars(int,int,char[],int)>(0, v, v, 0);
v = <io.fabric.kubernetes.clnt.v.lib.FilenameUtils: char SYSTEM_SEPARATOR>;
if v != v goto label;
v = <io.fabric.kubernetes.clnt.v.lib.FilenameUtils: char OTHER_SEPARATOR>;
goto label;
label:
v = <io.fabric.kubernetes.clnt.v.lib.FilenameUtils: char SYSTEM_SEPARATOR>;
label:
v = v;
v = 0;
label:
v = lengthof v;
if v >= v goto label;
v = v[v];
if v != v goto label;
v[v] = v;
label:
v = v + 1;
goto label;
label:
v = 1;
v = v - 1;
v = v[v];
if v == v goto label;
v = v;
v = v + 1;
v[v] = v;
v = 0;
label:
v = v + 1;
label:
if v >= v goto label;
v = v[v];
if v != v goto label;
v = v - 1;
v = v[v];
if v != v goto label;
v = v - 1;
v = v - v;
staticinvoke <java.lang.System: void arraycopy(java.lang.Object,int,java.lang.Object,int,int)>(v, v, v, v, v);
v = v - 1;
v = v - 1;
label:
v = v + 1;
goto label;
label:
v = v + 1;
label:
if v >= v goto label;
v = v[v];
if v != v goto label;
v = v - 1;
v = v[v];
if v != 46 goto label;
v = v + 1;
if v == v goto label;
v = v - 2;
v = v[v];
if v != v goto label;
label:
v = v - 1;
if v != v goto label;
v = 1;
label:
v = v + 1;
v = v - 1;
v = v - v;
staticinvoke <java.lang.System: void arraycopy(java.lang.Object,int,java.lang.Object,int,int)>(v, v, v, v, v);
v = v - 2;
v = v - 1;
label:
v = v + 1;
goto label;
label:
v = v + 2;
label:
if v >= v goto label;
v = v[v];
if v != v goto label;
v = v - 1;
v = v[v];
if v != 46 goto label;
v = v - 2;
v = v[v];
if v != 46 goto label;
v = v + 2;
if v == v goto label;
v = v - 3;
v = v[v];
if v != v goto label;
label:
v = v + 2;
if v != v goto label;
return null;
label:
v = v - 1;
if v != v goto label;
v = 1;
label:
v = v - 4;
label:
if v < v goto label;
v = v[v];
if v != v goto label;
v = v + 1;
v = v + 1;
v = v - v;
staticinvoke <java.lang.System: void arraycopy(java.lang.Object,int,java.lang.Object,int,int)>(v, v, v, v, v);
v = v - v;
v = v - v;
v = v + 1;
goto label;
label:
v = v - 1;
goto label;
label:
v = v + 1;
v = v - v;
staticinvoke <java.lang.System: void arraycopy(java.lang.Object,int,java.lang.Object,int,int)>(v, v, v, v, v);
v = v + 1;
v = v - v;
v = v - v;
v = v + 1;
label:
v = v + 1;
goto label;
label:
if v > 0 goto label;
return "";
label:
if v > v goto label;
v = new java.lang.String;
specialinvoke v.<java.lang.String: void <init>(char[],int,int)>(v, 0, v);
return v;
label:
if v == 0 goto label;
if v == 0 goto label;
v = new java.lang.String;
specialinvoke v.<java.lang.String: void <init>(char[],int,int)>(v, 0, v);
return v;
label:
v = new java.lang.String;
v = v - 1;
specialinvoke v.<java.lang.String: void <init>(char[],int,int)>(v, 0, v);
return v;
}
public static java.lang.String separatorsToUnix(java.lang.String)
{
int v, v;
java.lang.String v, v;
v := @parameter: java.lang.String;
if v == null goto label;
v = virtualinvoke v.<java.lang.String: int indexOf(int)>(92);
v = (int) -1;
if v != v goto label;
label:
return v;
label:
v = virtualinvoke v.<java.lang.String: java.lang.String replace(char,char)>(92, 47);
return v;
}
public static java.lang.String separatorsToWindows(java.lang.String)
{
int v, v;
java.lang.String v, v;
v := @parameter: java.lang.String;
if v == null goto label;
v = virtualinvoke v.<java.lang.String: int indexOf(int)>(47);
v = (int) -1;
if v != v goto label;
label:
return v;
label:
v = virtualinvoke v.<java.lang.String: java.lang.String replace(char,char)>(47, 92);
return v;
}
public static java.lang.String separatorsToSystem(java.lang.String)
{
java.lang.String v, v;
boolean v;
v := @parameter: java.lang.String;
if v != null goto label;
return null;
label:
v = staticinvoke <io.fabric.kubernetes.clnt.v.lib.FilenameUtils: boolean isSystemWindows()>();
if v == 0 goto label;
v = staticinvoke <io.fabric.kubernetes.clnt.v.lib.FilenameUtils: java.lang.String separatorsToWindows(java.lang.String)>(v);
goto label;
label:
v = staticinvoke <io.fabric.kubernetes.clnt.v.lib.FilenameUtils: java.lang.String separatorsToUnix(java.lang.String)>(v);
label:
return v;
}
public static int getPrefixLength(java.lang.String)
{
byte v, v;
boolean v, v, v, v, v, v, v;
io.fabric.kubernetes.clnt.v.lib.FileSystem v;
int v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
java.lang.String v, v;
char v, v, v, v;
v := @parameter: java.lang.String;
if v != null goto label;
v = (int) -1;
return v;
label:
v = virtualinvoke v.<java.lang.String: int length()>();
if v != 0 goto label;
return 0;
label:
v = virtualinvoke v.<java.lang.String: char charAt(int)>(0);
if v != 58 goto label;
v = (int) -1;
return v;
label:
if v != 1 goto label;
if v != 126 goto label;
return 2;
label:
v = staticinvoke <io.fabric.kubernetes.clnt.v.lib.FilenameUtils: boolean isSeparator(char)>(v);
if v == 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
label:
if v != 126 goto label;
v = virtualinvoke v.<java.lang.String: int indexOf(int,int)>(47, 1);
v = virtualinvoke v.<java.lang.String: int indexOf(int,int)>(92, 1);
v = (int) -1;
if v != v goto label;
v = (int) -1;
if v != v goto label;
v = v + 1;
return v;
label:
v = (int) -1;
if v != v goto label;
v = v;
goto label;
label:
v = v;
label:
v = v;
v = (int) -1;
if v != v goto label;
v = v;
goto label;
label:
v = v;
label:
v = staticinvoke <java.lang.Math: int min(int,int)>(v, v);
v = v + 1;
return v;
label:
v = virtualinvoke v.<java.lang.String: char charAt(int)>(1);
if v != 58 goto label;
v = staticinvoke <java.lang.Character: char toUpperCase(char)>(v);
if v < 65 goto label;
if v > 90 goto label;
if v != 2 goto label;
v = staticinvoke <io.fabric.kubernetes.clnt.v.lib.FileSystem: io.fabric.kubernetes.clnt.v.lib.FileSystem getCurrent()>();
v = virtualinvoke v.<io.fabric.kubernetes.clnt.v.lib.FileSystem: boolean supportsDriveLetter()>();
if v != 0 goto label;
return 0;
label:
if v == 2 goto label;
v = virtualinvoke v.<java.lang.String: char charAt(int)>(2);
v = staticinvoke <io.fabric.kubernetes.clnt.v.lib.FilenameUtils: boolean isSeparator(char)>(v);
if v != 0 goto label;
label:
return 2;
label:
return 3;
label:
if v != 47 goto label;
return 1;
label:
v = (int) -1;
return v;
label:
v = staticinvoke <io.fabric.kubernetes.clnt.v.lib.FilenameUtils: boolean isSeparator(char)>(v);
if v == 0 goto label;
v = staticinvoke <io.fabric.kubernetes.clnt.v.lib.FilenameUtils: boolean isSeparator(char)>(v);
if v == 0 goto label;
v = virtualinvoke v.<java.lang.String: int indexOf(int,int)>(47, 2);
v = virtualinvoke v.<java.lang.String: int indexOf(int,int)>(92, 2);
v = (int) -1;
if v != v goto label;
v = (int) -1;
if v == v goto label;
label:
if v == 2 goto label;
if v != 2 goto label;
label:
v = (int) -1;
return v;
label:
v = (int) -1;
if v != v goto label;
v = v;
goto label;
label:
v = v;
label:
v = v;
v = (int) -1;
if v != v goto label;
v = v;
goto label;
label:
v = v;
label:
v = staticinvoke <java.lang.Math: int min(int,int)>(v, v);
v = v + 1;
v = v - 1;
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int,int)>(2, v);
v = staticinvoke <io.fabric.kubernetes.clnt.v.lib.FilenameUtils: boolean isValidHostName(java.lang.String)>(v);
if v == 0 goto label;
v = v;
goto label;
label:
v = (int) -1;
v = v;
label:
return v;
label:
v = staticinvoke <io.fabric.kubernetes.clnt.v.lib.FilenameUtils: boolean isSeparator(char)>(v);
if v == 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
private static void requireNonNullChars(java.lang.String)
{
int v;
java.lang.String v;
java.lang.IllegalArgumentException v;
v := @parameter: java.lang.String;
v = virtualinvoke v.<java.lang.String: int indexOf(int)>(0);
if v < 0 goto label;
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>("Null byte present in file/path name. There are no known legitimate use cases for such data, but several injection attacks may use it");
throw v;
label:
return;
}
private static boolean isValidHostName(java.lang.String)
{
java.lang.String v;
boolean v, v, v;
v := @parameter: java.lang.String;
v = staticinvoke <io.fabric.kubernetes.clnt.v.lib.FilenameUtils: boolean isIPv6Address(java.lang.String)>(v);
if v != 0 goto label;
v = staticinvoke <io.fabric.kubernetes.clnt.v.lib.FilenameUtils: boolean isRFC3986HostName(java.lang.String)>(v);
if v == 0 goto label;
label:
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
private static boolean isIPv4Address(java.lang.String)
{
java.util.regex.Matcher v;
int v, v, v, v;
java.lang.String v, v;
java.util.regex.Pattern v;
boolean v, v;
v := @parameter: java.lang.String;
v = <io.fabric.kubernetes.clnt.v.lib.FilenameUtils: java.util.regex.Pattern IPV4_PATTERN>;
v = virtualinvoke v.<java.util.regex.Pattern: java.util.regex.Matcher matcher(java.lang.CharSequence)>(v);
v = virtualinvoke v.<java.util.regex.Matcher: boolean matches()>();
if v == 0 goto label;
v = virtualinvoke v.<java.util.regex.Matcher: int groupCount()>();
if v == 4 goto label;
label:
return 0;
label:
v = 1;
label:
if v > 4 goto label;
v = virtualinvoke v.<java.util.regex.Matcher: java.lang.String group(int)>(v);
v = staticinvoke <java.lang.Integer: int parseInt(java.lang.String)>(v);
if v <= 255 goto label;
return 0;
label:
v = virtualinvoke v.<java.lang.String: int length()>();
if v <= 1 goto label;
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>("0");
if v == 0 goto label;
return 0;
label:
v = v + 1;
goto label;
label:
return 1;
}
private static boolean isIPv6Address(java.lang.String)
{
boolean v, v, v, v, v, v, v, v, v, v, v, v;
java.util.List v;
java.lang.Object[] v;
java.lang.String[] v, v;
java.util.ArrayList v;
int v, v, v, v, v, v, v, v, v, v, v, v;
java.lang.String v, v;
java.lang.NumberFormatException v;
v := @parameter: java.lang.String;
v = virtualinvoke v.<java.lang.String: boolean contains(java.lang.CharSequence)>("::");
if v == 0 goto label;
v = virtualinvoke v.<java.lang.String: int indexOf(java.lang.String)>("::");
v = virtualinvoke v.<java.lang.String: int lastIndexOf(java.lang.String)>("::");
if v == v goto label;
return 0;
label:
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>(":");
if v == 0 goto label;
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>("::");
if v == 0 goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean endsWith(java.lang.String)>(":");
if v == 0 goto label;
v = virtualinvoke v.<java.lang.String: boolean endsWith(java.lang.String)>("::");
if v != 0 goto label;
label:
return 0;
label:
v = virtualinvoke v.<java.lang.String: java.lang.String[] split(java.lang.String)>(":");
if v == 0 goto label;
v = new java.util.ArrayList;
v = staticinvoke <java.util.Arrays: java.util.List asList(java.lang.Object[])>(v);
specialinvoke v.<java.util.ArrayList: void <init>(java.util.Collection)>(v);
v = virtualinvoke v.<java.lang.String: boolean endsWith(java.lang.String)>("::");
if v == 0 goto label;
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>("");
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>("::");
if v == 0 goto label;
v = interfaceinvoke v.<java.util.List: boolean isEmpty()>();
if v != 0 goto label;
interfaceinvoke v.<java.util.List: java.lang.Object remove(int)>(0);
label:
v = <io.fabric.kubernetes.clnt.v.lib.FilenameUtils: java.lang.String[] EMPTY_STRING_ARRAY>;
v = interfaceinvoke v.<java.util.List: java.lang.Object[] toArray(java.lang.Object[])>(v);
label:
v = lengthof v;
if v <= 8 goto label;
return 0;
label:
v = 0;
v = 0;
v = 0;
label:
v = lengthof v;
if v >= v goto label;
v = v[v];
v = virtualinvoke v.<java.lang.String: boolean isEmpty()>();
if v == 0 goto label;
v = v + 1;
if v <= 1 goto label;
return 0;
label:
v = 0;
v = lengthof v;
v = v - 1;
if v != v goto label;
v = virtualinvoke v.<java.lang.String: boolean contains(java.lang.CharSequence)>(".");
if v == 0 goto label;
v = staticinvoke <io.fabric.kubernetes.clnt.v.lib.FilenameUtils: boolean isIPv4Address(java.lang.String)>(v);
if v != 0 goto label;
return 0;
label:
v = v + 2;
goto label;
label:
v = virtualinvoke v.<java.lang.String: int length()>();
if v <= 4 goto label;
return 0;
label:
v = staticinvoke <java.lang.Integer: int parseInt(java.lang.String,int)>(v, 16);
label:
goto label;
label:
v := @caughtexception;
return 0;
label:
if v < 0 goto label;
v = (int) 65535;
if v <= v goto label;
label:
return 0;
label:
v = v + 1;
label:
v = v + 1;
goto label;
label:
if v > 8 goto label;
if v >= 8 goto label;
if v == 0 goto label;
label:
v = 1;
goto label;
label:
v = 0;
label:
return v;
catch java.lang.NumberFormatException from label to label with label;
}
private static boolean isRFC3986HostName(java.lang.String)
{
java.lang.String[] v;
java.util.regex.Matcher v;
int v, v, v, v, v;
java.lang.String v, v, v;
java.util.regex.Pattern v;
boolean v, v, v;
v := @parameter: java.lang.String;
v = (int) -1;
v = virtualinvoke v.<java.lang.String: java.lang.String[] split(java.lang.String,int)>("\\.", v);
v = 0;
label:
v = lengthof v;
if v >= v goto label;
v = v[v];
v = virtualinvoke v.<java.lang.String: boolean isEmpty()>();
if v == 0 goto label;
v = lengthof v;
v = v - 1;
if v != v goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
label:
v = <io.fabric.kubernetes.clnt.v.lib.FilenameUtils: java.util.regex.Pattern REG_NAME_PART_PATTERN>;
v = v[v];
v = virtualinvoke v.<java.util.regex.Pattern: java.util.regex.Matcher matcher(java.lang.CharSequence)>(v);
v = virtualinvoke v.<java.util.regex.Matcher: boolean matches()>();
if v != 0 goto label;
return 0;
label:
v = v + 1;
goto label;
label:
return 1;
}
static void <clinit>()
{
char v;
java.lang.String[] v;
java.util.regex.Pattern v, v;
boolean v;
v = newarray (java.lang.String)[0];
<io.fabric.kubernetes.clnt.v.lib.FilenameUtils: java.lang.String[] EMPTY_STRING_ARRAY> = v;
v = <java.io.File: char separatorChar>;
<io.fabric.kubernetes.clnt.v.lib.FilenameUtils: char SYSTEM_SEPARATOR> = v;
v = staticinvoke <io.fabric.kubernetes.clnt.v.lib.FilenameUtils: boolean isSystemWindows()>();
if v == 0 goto label;
<io.fabric.kubernetes.clnt.v.lib.FilenameUtils: char OTHER_SEPARATOR> = 47;
goto label;
label:
<io.fabric.kubernetes.clnt.v.lib.FilenameUtils: char OTHER_SEPARATOR> = 92;
label:
v = staticinvoke <java.util.regex.Pattern: java.util.regex.Pattern compile(java.lang.String)>("^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$");
<io.fabric.kubernetes.clnt.v.lib.FilenameUtils: java.util.regex.Pattern IPV4_PATTERN> = v;
v = staticinvoke <java.util.regex.Pattern: java.util.regex.Pattern compile(java.lang.String)>("^[a-zA-Z0-9][a-zA-Z0-9-]*$");
<io.fabric.kubernetes.clnt.v.lib.FilenameUtils: java.util.regex.Pattern REG_NAME_PART_PATTERN> = v;
return;
}
}