Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
riscv-gcc-1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
riscv-gcc-1
Commits
d28f3078
Commit
d28f3078
authored
Nov 06, 2004
by
Tom Tromey
Committed by
Tom Tromey
Nov 06, 2004
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* java/io/FilePermission.java: Reindented.
From-SVN: r90201
parent
7771b8da
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
150 additions
and
162 deletions
+150
-162
libjava/ChangeLog
+4
-0
libjava/java/io/FilePermission.java
+146
-162
No files found.
libjava/ChangeLog
View file @
d28f3078
2004
-
11
-
06
Tom
Tromey
<
tromey
@
redhat
.
com
>
*
java
/
io
/
FilePermission
.
java
:
Reindented
.
2004
-
11
-
06
Tom
Tromey
<
tromey
@
redhat
.
com
>
*
java
/
io
/
ObjectOutputStream
.
java
(
currentObjectStreamClass
):
Now
package
-
private
.
(
setBlockDataMode
):
Likewise
.
...
...
libjava/java/io/FilePermission.java
View file @
d28f3078
...
...
@@ -46,50 +46,51 @@ public final class FilePermission extends Permission implements Serializable
private
static
final
String
CURRENT_DIRECTORY
=
System
.
getProperty
(
"user.dir"
);
private
boolean
readPerm
=
false
;
private
boolean
writePerm
=
false
;
private
boolean
executePerm
=
false
;
private
boolean
deletePerm
=
false
;
private
final
String
actionsString
;
// Checks and caches the actions
private
void
checkPerms
()
throws
IllegalArgumentException
{
String
action
;
int
i
=
actionsString
.
indexOf
(
','
);
int
startI
=
0
;
while
(
i
!=
-
1
)
while
(
i
!=
-
1
)
{
action
=
actionsString
.
substring
(
startI
,
i
).
trim
().
toLowerCase
();
if
(
action
.
equals
(
"read"
))
action
=
actionsString
.
substring
(
startI
,
i
).
trim
().
toLowerCase
();
if
(
action
.
equals
(
"read"
))
readPerm
=
true
;
else
if
(
action
.
equals
(
"write"
))
else
if
(
action
.
equals
(
"write"
))
writePerm
=
true
;
else
if
(
action
.
equals
(
"execute"
))
else
if
(
action
.
equals
(
"execute"
))
executePerm
=
true
;
else
if
(
action
.
equals
(
"delete"
))
else
if
(
action
.
equals
(
"delete"
))
deletePerm
=
true
;
else
throw
new
IllegalArgumentException
(
"Unknown action: "
+
action
);
startI
=
i
+
1
;
i
=
actionsString
.
indexOf
(
','
,
startI
);
startI
=
i
+
1
;
i
=
actionsString
.
indexOf
(
','
,
startI
);
}
action
=
actionsString
.
substring
(
startI
).
trim
().
toLowerCase
();
if
(
action
.
equals
(
"read"
))
if
(
action
.
equals
(
"read"
))
readPerm
=
true
;
else
if
(
action
.
equals
(
"write"
))
else
if
(
action
.
equals
(
"write"
))
writePerm
=
true
;
else
if
(
action
.
equals
(
"execute"
))
else
if
(
action
.
equals
(
"execute"
))
executePerm
=
true
;
else
if
(
action
.
equals
(
"delete"
))
else
if
(
action
.
equals
(
"delete"
))
deletePerm
=
true
;
else
throw
new
IllegalArgumentException
(
"Unknown action: "
+
action
);
}
/*
/*
*
* Create a new FilePermission.
*
* @param pathExpression an expression specifying the paths this
...
...
@@ -97,11 +98,10 @@ public final class FilePermission extends Permission implements Serializable
* @param actionsString a comma-separated list of the actions this
* permission represents. The actions must be "read", "write",
* "execute" and/or "delete".
*
* FIXME: what to do when the file string is malformed?
*/
public
FilePermission
(
String
pathExpression
,
String
actionsString
)
{
// FIXME: what to do when the file string is malformed?
super
(
pathExpression
);
if
(
pathExpression
==
null
)
throw
new
NullPointerException
(
"pathExpression"
);
...
...
@@ -111,195 +111,179 @@ public final class FilePermission extends Permission implements Serializable
checkPerms
();
}
/** Get the actions this FilePermission supports.
** @return the String representing the actions this FilePermission supports.
**/
/**
* Get the actions this FilePermission supports.
* @return the String representing the actions this FilePermission supports.
*/
public
String
getActions
()
{
return
actionsString
;
}
/** Get the hash code for this Object.<P>
** FilePermission's hash code is calculated as the exclusive or of the
** target
** String's hash code and the action String's hash code.
** @specnote Sun did not specify how to calculate the hash code;
** I made this up.
** @return the hash code for this Object.
**/
/**
* Get the hash code for this Object.<P>
* FilePermission's hash code is calculated as the exclusive or of the
* target
* String's hash code and the action String's hash code.
* @specnote Sun did not specify how to calculate the hash code;
* I made this up.
* @return the hash code for this Object.
*/
public
int
hashCode
()
{
return
getName
().
hashCode
()
^
actionsString
.
hashCode
();
}
/** Check two FilePermissions for semantic equality.
** Two FilePermissions are exactly equivalent if they have identical path
** expressions and have exactly the same access permissions.
** @param o the Object to compare to.
** @return whether the Objects are semantically equivalent.
**/
/**
* Check two FilePermissions for semantic equality.
* Two FilePermissions are exactly equivalent if they have identical path
* expressions and have exactly the same access permissions.
* @param o the Object to compare to.
* @return whether the Objects are semantically equivalent.
*/
public
boolean
equals
(
Object
o
)
{
if
(!
(
o
instanceof
FilePermission
))
if
(!
(
o
instanceof
FilePermission
))
return
false
;
FilePermission
p
=
(
FilePermission
)
o
;
FilePermission
p
=
(
FilePermission
)
o
;
String
f1
=
getName
();
String
f2
=
p
.
getName
();
/* Compare names, taking into account if they refer to a
* directory and one has a separator and the other does not.
*/
if
(
f1
.
length
()
>
0
&&
f1
.
charAt
(
f1
.
length
()
-
1
)
==
File
.
separatorChar
)
// Compare names, taking into account if they refer to a directory
// and one has a separator and the other does not.
if
(
f1
.
length
()
>
0
&&
f1
.
charAt
(
f1
.
length
()
-
1
)
==
File
.
separatorChar
)
{
if
(
f2
.
length
()
>
0
&&
f2
.
charAt
(
f2
.
length
()
-
1
)
==
File
.
separatorChar
)
if
(
f2
.
length
()
>
0
&&
f2
.
charAt
(
f2
.
length
()
-
1
)
==
File
.
separatorChar
)
{
if
(!
f2
.
equals
(
f1
))
if
(!
f2
.
equals
(
f1
))
return
false
;
}
else
}
else
{
if
(!
f2
.
equals
(
f1
.
substring
(
0
,
f1
.
length
()-
1
)))
if
(!
f2
.
equals
(
f1
.
substring
(
0
,
f1
.
length
()
-
1
)))
return
false
;
}
}
else
}
else
{
if
(
f2
.
length
()
>
0
&&
f2
.
charAt
(
f2
.
length
()
-
1
)
==
File
.
separatorChar
)
if
(
f2
.
length
()
>
0
&&
f2
.
charAt
(
f2
.
length
()
-
1
)
==
File
.
separatorChar
)
{
if
(!
f1
.
equals
(
f2
.
substring
(
0
,
f2
.
length
()-
1
)))
if
(!
f1
.
equals
(
f2
.
substring
(
0
,
f2
.
length
()
-
1
)))
return
false
;
}
else
}
else
{
if
(!
f1
.
equals
(
f2
))
if
(!
f1
.
equals
(
f2
))
return
false
;
}
}
return
readPerm
==
p
.
readPerm
&&
writePerm
==
p
.
writePerm
&&
executePerm
==
p
.
executePerm
&&
deletePerm
==
p
.
deletePerm
;
}
return
(
readPerm
==
p
.
readPerm
&&
writePerm
==
p
.
writePerm
&&
executePerm
==
p
.
executePerm
&&
deletePerm
==
p
.
deletePerm
);
}
/** Check to see if this permission implies another.
** Permission A implies permission B if these things are all true:
** <OL>
** <LI>A and B are both FilePermissions.</LI>
** <LI>All possible files in B are included in A
** (possibly more are in A).</LI>
** <LI>All actions B supports, A also supports.</LI>
** </OL>
** @param p the Permission to compare against.
** @return whether this Permission implies p
**/
/**
* Check to see if this permission implies another.
* Permission A implies permission B if these things are all true:
* <OL>
* <LI>A and B are both FilePermissions.</LI>
* <LI>All possible files in B are included in A
* (possibly more are in A).</LI>
* <LI>All actions B supports, A also supports.</LI>
* </OL>
* @param p the Permission to compare against.
* @return whether this Permission implies p
*/
public
boolean
implies
(
Permission
p
)
{
FilePermission
fp
;
if
(!
(
p
instanceof
FilePermission
))
if
(!
(
p
instanceof
FilePermission
))
return
false
;
fp
=
(
FilePermission
)
p
;
fp
=
(
FilePermission
)
p
;
String
f1
=
getName
();
String
f2
=
fp
.
getName
();
if
(
f1
.
charAt
(
0
)
!=
File
.
separatorChar
)
{
f1
=
CURRENT_DIRECTORY
+
f1
;
}
if
(
f2
.
charAt
(
0
)
!=
File
.
separatorChar
)
{
f2
=
CURRENT_DIRECTORY
+
f2
;
}
if
(
f1
.
charAt
(
0
)
!=
File
.
separatorChar
)
f1
=
CURRENT_DIRECTORY
+
f1
;
if
(
f2
.
charAt
(
0
)
!=
File
.
separatorChar
)
f2
=
CURRENT_DIRECTORY
+
f2
;
String
sub1
;
switch
(
f1
.
charAt
(
f1
.
length
()
-
1
))
switch
(
f1
.
charAt
(
f1
.
length
()
-
1
))
{
case
'*'
:
sub1
=
f1
.
substring
(
0
,
f1
.
length
()
-
1
);
// chop off "*"
if
(
f2
.
length
()
<=
sub1
.
length
())
{
/* If it's smaller, there is no way it could be part of this
* directory.
* If it's the same (or length - 1), it could be the same
* directory but
* specifies access to the directory rather than the files in it.
*/
return
false
;
}
else
if
(
f2
.
charAt
(
sub1
.
length
()
-
1
)
==
File
.
separatorChar
)
{
/* Make sure the part before the "/" is the same */
if
(!
f2
.
substring
(
0
,
sub1
.
length
()).
equals
(
sub1
))
return
false
;
/* Make sure there are no subdirectories specified
underneath this one */
if
(
f2
.
substring
(
sub1
.
length
()+
1
).
indexOf
(
File
.
separatorChar
)
!=
-
1
)
return
false
;
}
else
{
/* Obviously not equal: f2 is either not a directory or is not
* the same directory (its name continues further than we want)
*/
return
false
;
}
break
;
case
'-'
:
sub1
=
f1
.
substring
(
0
,
f1
.
length
()
-
2
);
// chop off "/-"
if
(
f2
.
length
()
<
sub1
.
length
())
{
/* If it's smaller, there is no way it could be part of
* this directory. */
case
'*'
:
sub1
=
f1
.
substring
(
0
,
f1
.
length
()
-
1
);
// chop off "*"
if
(
f2
.
length
()
<=
sub1
.
length
())
{
// If it's smaller, there is no way it could be part of
// this directory. If it's the same (or length - 1), it
// could be the same directory but specifies access to
// the directory rather than the files in it.
return
false
;
}
else
if
(
f2
.
charAt
(
sub1
.
length
()
-
1
)
==
File
.
separatorChar
)
{
// Make sure the part before the "/" is the same.
if
(!
f2
.
substring
(
0
,
sub1
.
length
()).
equals
(
sub1
))
return
false
;
}
else
if
(
f2
.
length
()
>
sub1
.
length
()
&&
f2
.
charAt
(
sub1
.
length
())
!=
File
.
separatorChar
)
{
// Make sure there are no subdirectories specified
// underneath this one.
if
(
f2
.
substring
(
sub1
.
length
()
+
1
).
indexOf
(
File
.
separatorChar
)
!=
-
1
)
return
false
;
}
else
if
(!
f2
.
substring
(
0
,
sub1
.
length
()).
equals
(
sub1
))
}
else
{
// Obviously not equal: f2 is either not a directory or
// is not the same directory (its name continues further
// than we want).
return
false
;
}
break
;
case
'-'
:
// Chop off "/-".
sub1
=
f1
.
substring
(
0
,
f1
.
length
()
-
2
);
if
(
f2
.
length
()
<
sub1
.
length
())
{
// If it's smaller, there is no way it could be part of
// this directory.
return
false
;
break
;
/* Looks redundant with default case and won't compile anyway - arenn
case File.separatorChar:
if(f2.charAt(f2.length()) == File.separatorChar) {
if(!f2.equals(f1))
}
else
if
(
f2
.
length
()
>
sub1
.
length
()
&&
f2
.
charAt
(
sub1
.
length
())
!=
File
.
separatorChar
)
return
false
;
} else {
if(!f2.equals(f1.substring(0,f1.length()-1)))
else
if
(!
f2
.
substring
(
0
,
sub1
.
length
()).
equals
(
sub1
))
return
false
;
break
;
default
:
if
(
f2
.
charAt
(
f2
.
length
()
-
1
)
==
File
.
separatorChar
)
{
if
(!
f1
.
equals
(
f2
.
substring
(
0
,
f2
.
length
()
-
1
)))
return
false
;
}
else
if
(!
f1
.
equals
(
f2
))
return
false
;
break
;
}
break;
*/
default
:
if
(
f2
.
charAt
(
f2
.
length
()
-
1
)
==
File
.
separatorChar
)
{
if
(!
f1
.
equals
(
f2
.
substring
(
0
,
f2
.
length
()
-
1
)))
return
false
;
}
else
{
if
(!
f1
.
equals
(
f2
))
return
false
;
}
break
;
}
if
(
readPerm
&&
!
fp
.
readPerm
)
if
(
readPerm
&&
!
fp
.
readPerm
)
return
false
;
if
(
writePerm
&&
!
fp
.
writePerm
)
if
(
writePerm
&&
!
fp
.
writePerm
)
return
false
;
if
(
executePerm
&&
!
fp
.
executePerm
)
if
(
executePerm
&&
!
fp
.
executePerm
)
return
false
;
if
(
deletePerm
&&
!
fp
.
deletePerm
)
if
(
deletePerm
&&
!
fp
.
deletePerm
)
return
false
;
return
true
;
}
}
// class FilePermission
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment