git-svn-id: https://svn.code.sf.net/p/jode/code/tags/jode_1_1@1317 379699f6-c40d-0410-875b-85095c16579ejode_1_1
parent
edc69e287a
commit
042c35a412
@ -1,13 +0,0 @@ |
||||
# The "checkoutlist" file is used to support additional version controlled |
||||
# administrative files in $CVSROOT/CVSROOT, such as template files. |
||||
# |
||||
# The first entry on a line is a filename which will be checked out from |
||||
# the corresponding RCS file in the $CVSROOT/CVSROOT directory. |
||||
# The remainder of the line is an error message to use if the file cannot |
||||
# be checked out. |
||||
# |
||||
# File format: |
||||
# |
||||
# [<whitespace>]<filename><whitespace><error message><end-of-line> |
||||
# |
||||
# comment lines begin with '#' |
@ -1,15 +0,0 @@ |
||||
# The "commitinfo" file is used to control pre-commit checks. |
||||
# The filter on the right is invoked with the repository and a list |
||||
# of files to check. A non-zero exit of the filter program will |
||||
# cause the commit to be aborted. |
||||
# |
||||
# The first entry on a line is a regular expression which is tested |
||||
# against the directory that the change is being committed to, relative |
||||
# to the $CVSROOT. For the first match that is found, then the remainder |
||||
# of the line is the name of the filter to run. |
||||
# |
||||
# If the repository name does not match any of the regular expressions in this |
||||
# file, the "DEFAULT" line is used, if it is specified. |
||||
# |
||||
# If the name "ALL" appears as a regular expression it is always used |
||||
# in addition to the first matching regex or "DEFAULT". |
@ -1,11 +0,0 @@ |
||||
# Set this to "no" if pserver shouldn't check system users/passwords |
||||
#SystemAuth=no |
||||
|
||||
# Set `PreservePermissions' to `yes' to save file status information |
||||
# in the repository. |
||||
#PreservePermissions=no |
||||
|
||||
# Set `TopLevelAdmin' to `yes' to create a CVS directory at the top |
||||
# level of the new working directory when using the `cvs checkout' |
||||
# command. |
||||
#TopLevelAdmin=no |
@ -1 +0,0 @@ |
||||
*.class |
@ -1,23 +0,0 @@ |
||||
# This file affects handling of files based on their names. |
||||
# |
||||
# The -t/-f options allow one to treat directories of files |
||||
# as a single file, or to transform a file in other ways on |
||||
# its way in and out of CVS. |
||||
# |
||||
# The -m option specifies whether CVS attempts to merge files. |
||||
# |
||||
# The -k option specifies keyword expansion (e.g. -kb for binary). |
||||
# |
||||
# Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) |
||||
# |
||||
# wildcard [option value][option value]... |
||||
# |
||||
# where option is one of |
||||
# -f from cvs filter value: path to filter |
||||
# -t to cvs filter value: path to filter |
||||
# -m update methodology value: MERGE or COPY |
||||
# -k expansion mode value: b, o, kkv, &c |
||||
# |
||||
# and value is a single-quote delimited value. |
||||
# For example: |
||||
#*.gif -k 'b' |
@ -1,21 +0,0 @@ |
||||
# The "editinfo" file is used to allow verification of logging |
||||
# information. It works best when a template (as specified in the |
||||
# rcsinfo file) is provided for the logging procedure. Given a |
||||
# template with locations for, a bug-id number, a list of people who |
||||
# reviewed the code before it can be checked in, and an external |
||||
# process to catalog the differences that were code reviewed, the |
||||
# following test can be applied to the code: |
||||
# |
||||
# Making sure that the entered bug-id number is correct. |
||||
# Validating that the code that was reviewed is indeed the code being |
||||
# checked in (using the bug-id number or a seperate review |
||||
# number to identify this particular code set.). |
||||
# |
||||
# If any of the above test failed, then the commit would be aborted. |
||||
# |
||||
# Actions such as mailing a copy of the report to each reviewer are |
||||
# better handled by an entry in the loginfo file. |
||||
# |
||||
# One thing that should be noted is the the ALL keyword is not |
||||
# supported. There can be only one entry that matches a given |
||||
# repository. |
@ -1,26 +0,0 @@ |
||||
# The "loginfo" file controls where "cvs commit" log information |
||||
# is sent. The first entry on a line is a regular expression which must match |
||||
# the directory that the change is being made to, relative to the |
||||
# $CVSROOT. If a match is found, then the remainder of the line is a filter |
||||
# program that should expect log information on its standard input. |
||||
# |
||||
# If the repository name does not match any of the regular expressions in this |
||||
# file, the "DEFAULT" line is used, if it is specified. |
||||
# |
||||
# If the name ALL appears as a regular expression it is always used |
||||
# in addition to the first matching regex or DEFAULT. |
||||
# |
||||
# You may specify a format string as part of the |
||||
# filter. The string is composed of a `%' followed |
||||
# by a single format character, or followed by a set of format |
||||
# characters surrounded by `{' and `}' as separators. The format |
||||
# characters are: |
||||
# |
||||
# s = file name |
||||
# V = old version number (pre-checkin) |
||||
# v = new version number (post-checkin) |
||||
# |
||||
# For example: |
||||
#DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog |
||||
# or |
||||
#DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog |
@ -1 +0,0 @@ |
||||
jode jode |
@ -1,12 +0,0 @@ |
||||
# The "notify" file controls where notifications from watches set by |
||||
# "cvs watch add" or "cvs edit" are sent. The first entry on a line is |
||||
# a regular expression which is tested against the directory that the |
||||
# change is being made to, relative to the $CVSROOT. If it matches, |
||||
# then the remainder of the line is a filter program that should contain |
||||
# one occurrence of %s for the user to notify, and information on its |
||||
# standard input. |
||||
# |
||||
# "ALL" or "DEFAULT" can be used in place of the regular expression. |
||||
# |
||||
# For example: |
||||
#ALL mail %s -s "CVS notification" |
@ -1,13 +0,0 @@ |
||||
# The "rcsinfo" file is used to control templates with which the editor |
||||
# is invoked on commit and import. |
||||
# |
||||
# The first entry on a line is a regular expression which is tested |
||||
# against the directory that the change is being made to, relative to the |
||||
# $CVSROOT. For the first match that is found, then the remainder of the |
||||
# line is the name of the file that contains the template. |
||||
# |
||||
# If the repository name does not match any of the regular expressions in this |
||||
# file, the "DEFAULT" line is used, if it is specified. |
||||
# |
||||
# If the name "ALL" appears as a regular expression it is always used |
||||
# in addition to the first matching regex or "DEFAULT". |
@ -1,20 +0,0 @@ |
||||
# The "taginfo" file is used to control pre-tag checks. |
||||
# The filter on the right is invoked with the following arguments: |
||||
# |
||||
# $1 -- tagname |
||||
# $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d |
||||
# $3 -- repository |
||||
# $4-> file revision [file revision ...] |
||||
# |
||||
# A non-zero exit of the filter program will cause the tag to be aborted. |
||||
# |
||||
# The first entry on a line is a regular expression which is tested |
||||
# against the directory that the change is being committed to, relative |
||||
# to the $CVSROOT. For the first match that is found, then the remainder |
||||
# of the line is the name of the filter to run. |
||||
# |
||||
# If the repository name does not match any of the regular expressions in this |
||||
# file, the "DEFAULT" line is used, if it is specified. |
||||
# |
||||
# If the name "ALL" appears as a regular expression it is always used |
||||
# in addition to the first matching regex or "DEFAULT". |
@ -1,21 +0,0 @@ |
||||
# The "verifymsg" file is used to allow verification of logging |
||||
# information. It works best when a template (as specified in the |
||||
# rcsinfo file) is provided for the logging procedure. Given a |
||||
# template with locations for, a bug-id number, a list of people who |
||||
# reviewed the code before it can be checked in, and an external |
||||
# process to catalog the differences that were code reviewed, the |
||||
# following test can be applied to the code: |
||||
# |
||||
# Making sure that the entered bug-id number is correct. |
||||
# Validating that the code that was reviewed is indeed the code being |
||||
# checked in (using the bug-id number or a seperate review |
||||
# number to identify this particular code set.). |
||||
# |
||||
# If any of the above test failed, then the commit would be aborted. |
||||
# |
||||
# Actions such as mailing a copy of the report to each reviewer are |
||||
# better handled by an entry in the loginfo file. |
||||
# |
||||
# One thing that should be noted is the the ALL keyword is not |
||||
# supported. There can be only one entry that matches a given |
||||
# repository. |
@ -0,0 +1,303 @@ |
||||
2001-05-27 Jochen Hoenicke <jochen@gnu.org> |
||||
|
||||
* configure.in: Set version to 1.1. |
||||
|
||||
* jode/decompiler/Main.java (main): Also use bootclasspath if no |
||||
classpath given. |
||||
* jode/swingui/Main.java (main): Likewise. |
||||
|
||||
* jode/decompiler/MethodAnalyzer.java.in (skipWriting): Don't skip |
||||
empty constructor that have a throws clause. |
||||
|
||||
* configure.in: Determine whether jdk1.1 resp. jdk1.2. Call jcpp |
||||
in config.status. |
||||
|
||||
* jode/expr/Expression.java.in (makeInitializer): Now takes the |
||||
type of the initialization. Changed all callers. |
||||
* jode/expr/ConstantArrayOperator.java (makeInitializer): Check |
||||
that type is our array type, otherwise we can't omit new Array[]. |
||||
|
||||
* jode/decompiler/LocalInfo.java (markFinal): Don't check that |
||||
only one write is present. If two writes are in an then and an |
||||
else branch of an if, the local can still be final. |
||||
|
||||
* jode/type/ArrayType.java (getSubType): Handle array of integer |
||||
types correctly: byte[] is something completely different than |
||||
int[]. |
||||
(getSuperType): Likewise. |
||||
|
||||
* jode/expr/FieldOperator.java.in (getFieldInfo): New function. |
||||
(needsCast): A cast is also needed if the field is private or |
||||
package scope and the current type can't access the field. |
||||
|
||||
* jode/expr/InvokeOperator.java.in (getMethodInfo): New function. |
||||
(needsCast): A cast is also needed if the method is private or |
||||
package scope and the current type can't access the method. |
||||
|
||||
* jode/expr/ArrayStoreOperator.java (dumpExpression): Check if a |
||||
cast of the array expression is needed. |
||||
|
||||
* jode/expr/TransformConstructors.java |
||||
(transformFieldInitializers): Don't allow moving method invocations |
||||
that throw a checked exception. |
||||
|
||||
* jode/bytecode/MethodInfo.java (readAttribute): Read Exceptions |
||||
attribute even when not all attributes should be read. They are |
||||
needed by TransformConstructors, see above. |
||||
|
||||
2001-05-26 Jochen Hoenicke <jochen@gnu.org> |
||||
|
||||
* jode/decompiler/TabbedPrintWriter.java (saveOps): Don't allow |
||||
line breaks in not completed expressions since implicit parentheses |
||||
would destroy the syntax. No need to put line break option on stack. |
||||
(restoreOps): Adapted Stack format. |
||||
|
||||
* jode/decompiler/ClassAnalyzer.java.in (dumpDeclaration): Moved |
||||
Code from dumpSource here. Don't put a line break after closing |
||||
brace. |
||||
(dumpSource): call dumpDeclaration and add a line break. |
||||
(dumpBlock): Moved dropInfo(ATTRIBS) here. |
||||
|
||||
* jode/decompiler/ClassAnalyzer.java.in (STRICTFP): New Constant. |
||||
(isStrictFP): New function. |
||||
(initialize): Set strictfp modifier if a constructor has it set. |
||||
(dumpSource): Handle strictfp modifier. |
||||
|
||||
* jode/decompiler/MethodAnalyzer.java.in (STRICTFP): New Constant. |
||||
(isStrictFP): New function. |
||||
(dumpSource): Handle strictfp modifier. |
||||
|
||||
* jode/jvm/SyntheticAnalyzer.java.in (checkAccess): Check for a |
||||
special putfield access, where the set value is returned. Allow |
||||
the modifier of field/method to be protected and the class to be |
||||
a superclass. |
||||
(checkStaticAccess): Likewise. |
||||
(ACCESSDUPPUTFIELD): New Constant. |
||||
(ACCESSDUPPUTSTATIC): New Constant. |
||||
|
||||
* jode/expr/InvokeOperator.java.in (simplifyAccess): Handle new |
||||
synthetics. |
||||
|
||||
* jode/flow/SpecialBlock.java (removePop): Remove pop also for |
||||
non void store instructions. |
||||
|
||||
* jode/decompiler/MethodAnalyzer.java.in (skipWriting): Also skip |
||||
the new synthetics. |
||||
|
||||
* jode/decompiler/Main.java (main): Call System.exit() after |
||||
everything was compiled. |
||||
|
||||
* jode/flow/TransformExceptionHandlers.java.in (removeJSR): |
||||
Renamed back from removeBadJSR (see patch from 2001-02-04). The |
||||
checkAndRemove* functions mustn't change the successors while they |
||||
iterate over them. Instead of removing good jsr they mark them as |
||||
good and removeJSR will finally remove them. |
||||
(checkAndRemoveJSR): See above. |
||||
(checkAndRemoveMonitorExit): See above. |
||||
|
||||
* jode/flow/JsrBlock.java (good): New variable, see above. |
||||
(setGood): New method. |
||||
(isGood): New method. |
||||
|
||||
2001-05-08 Jochen Hoenicke <jochen@gnu.org> |
||||
|
||||
* jode/jvm/CodeVerifier.java.in (doVerify): Don't check for |
||||
uninitialized objects in local or stack slots on backwards jump or |
||||
exception blocks. Sun's jdk also doesn't check it, and I never |
||||
understood why it is necessary. But see JVM Spec 4.9.4. |
||||
|
||||
2001-05-02 Jochen Hoenicke <jochen@gnu.org> |
||||
|
||||
* jode/obfuscator/modules/ConstantAnalyzer.java.in (handleOpcode): |
||||
Added divide by zero checks for opc_irem and opc_lrem. |
||||
|
||||
2001-04-11 Jochen Hoenicke <jochen@gnu.org> |
||||
|
||||
* jode/type/ClassInterfacesType.java (keywords): Reworked keyword |
||||
list. |
||||
|
||||
* jode/decompiler/OuterValues.java (implicitOuterClass): New field. |
||||
(isImplicitOuterClass): new Method. |
||||
(setImplicitOuterClass): new Method. |
||||
|
||||
* jode/flow/TransformConstructors.java (checkAnonymousConstructor): |
||||
Check for implicitOuterClass, a new javac 1.3 construct. |
||||
|
||||
* jode/expr/FieldOperator.java.in (dumpSource): Removed this |
||||
simplification nonesense. Now Outer.this is never printed as |
||||
this. |
||||
|
||||
* jode/expr/InvokeOperator.java.in (dumpSource): Removed this |
||||
simplification nonesense. Now Outer.this is never printed as |
||||
this. |
||||
Handle implicitOuterClass. |
||||
|
||||
2001-04-10 Jochen Hoenicke <jochen@gnu.org> |
||||
|
||||
* jode/decompiler/Main.java (usage): Reworked usage message. |
||||
|
||||
2001-04-09 Jochen Hoenicke <jochen@gnu.org> |
||||
|
||||
* jode/bytecode/SearchPath.java: Bug fixes from Joe Bronkema: |
||||
(exists): Don't replace '/' with fileSeparator in original |
||||
filename; make a copy instead. |
||||
(getFile): likewise. |
||||
(isDirectory): likewise. |
||||
(listFiles): Reset fileNr when a new directory is read. |
||||
|
||||
2001-02-28 Jochen Hoenicke <jochen@gnu.org> |
||||
|
||||
* acinclude.m4 (JODE_CHECK_CLASS): Changed "test -e" to "-f" since |
||||
-e is not supported on all architectures (Solaris) and -f is more |
||||
correct anyway. |
||||
Reported by Erik Modén. |
||||
|
||||
2001-02-27 Jochen Hoenicke <jochen@gnu.org> |
||||
|
||||
* jode/swingui/Main.java.in (AreaWriter): Convert all kinds of |
||||
line breaks (CR+LF, CR, LF) to a LF character, which a JTextArea |
||||
understands. |
||||
|
||||
2001-02-08 Jochen Hoenicke <jochen@gnu.org> |
||||
|
||||
* jode/expr/StoreInstruction.java (dumpExpression): Java doesn't |
||||
allow parenthesis around left hand side, so use NO_PAREN and don't |
||||
call lhs.dumpExpression() with priority. |
||||
* jode/expr/PrePostFixOperator.java (dumpExpression): likewise. |
||||
* jode/expr/IIncOperator.java (dumpExpression): likewise. |
||||
* jode/flow/TransformConstructors.java (jikesAnonInner): Removed, |
||||
since it wasn't used: This information is stored in OuterValues |
||||
now. |
||||
* jode/decompiler/LocalInfo.java (isConstant): Always return true |
||||
so that inner classes that access final locals work, even if we |
||||
can't decide that the local can be final. |
||||
|
||||
2001-02-05 Jochen Hoenicke <jochen@gnu.org> |
||||
|
||||
* jode/expr/InvokeOperator.java.in (Environment.invokeMethod): |
||||
Fixed the call to ClassInfo.forName: it expects a class name, while |
||||
ref.getClazz() gives a type signature. |
||||
* jode/flow/TransformExceptionHandlers.java.in: |
||||
(checkAndRemoveJSR): Only invoke removeBadJSR, if there are |
||||
successors left. |
||||
(checkAndRemoveMonitorExit): likewise. |
||||
|
||||
2001-02-04 Jochen Hoenicke <jochen@gnu.org> |
||||
|
||||
* jode/expr/IfThenElseOperator.java (simplify): Allow in the class$ |
||||
simplification the then and else part to be swapped. |
||||
* jode/bytecode/ClassInfo.java.in (read): Accept class version |
||||
1.3. |
||||
* jode/type/ClassInterfacesType.java (keywords): Added the package |
||||
and import keywords. |
||||
* jode/flow/TransformExceptionHandlers.java.in: |
||||
(getPredecessor): New function. |
||||
(getMonitorExitSlot): New function. |
||||
(skipFinExitChain): New function. |
||||
(removeJSR): Replaced by ... |
||||
(removeBadJSR): ... this. |
||||
(checkAndRemoveJSR): Use the new functions. Much simpler and |
||||
handles nested synchronized blocks. It now traces the whole JSR |
||||
and monitorexit chain before a jump to the first entry via |
||||
skipFinExitChain, then checks and remove the first JSR |
||||
resp. monitorexit. JSR jumps are simply ignored now. |
||||
(checkAndRemoveMonitorExit): likewise. |
||||
* jode/flow/StructuredBlock.java.in (prependBlock): New function. |
||||
* jode/flow/CatchBlock.java.in (makeDeclaration): Generate name |
||||
of dummyLocal, since nobody else will generate it. |
||||
|
||||
2001-02-03 Jochen Hoenicke <jochen@gnu.org> |
||||
|
||||
* jode/bytecode/BytecodeInfo.java.in (read): Remove bogus |
||||
exceptionHandlers, whose catchers just throw the exception again. |
||||
This kind of entries are inserted by an obfuscator and would break |
||||
JODE. |
||||
* jode/util/UnifyHash.java.in (iterateHashCode): Call cleanUp, |
||||
to clean unneeded references. |
||||
* jode/flow/TransformConstructors.java (transformOneField): |
||||
Changed to private. Take field number as parameter. Check that |
||||
expression doesn't contain a FieldOperator for a later field of |
||||
the same class or a PutFieldOperator. Changed all callers. |
||||
|
||||
2001-02-01 Jochen Hoenicke <jochen@gnu.org> |
||||
|
||||
* jode/jvm/CodeVerifier.java.in (Type.mergeType): If array elem |
||||
types can't be merged, return tObject as common super type. |
||||
* jode/type/ArrayType.java (getGeneralizedType): If array elem |
||||
type can't be intersected, return tObject as common super type. |
||||
* jode/flow/TransformExceptionHandlers.java.in: Merged patch from |
||||
the 1.2 tree to support javac 1.3 synchronized blocks. Doesn't |
||||
handle nested synchronized blocks yet. |
||||
* jode/expr/Expression.java.in (dumpExpression): Show runtime |
||||
exception when it occurs. |
||||
|
||||
2001-01-31 Jochen Hoenicke <jochen@gnu.org> |
||||
|
||||
* jode/expr/Expression.java.in (updateParentTypes): Call setType, |
||||
instead of merging the types. Other childs want to know about the |
||||
type change as well. |
||||
* jode/decompiler/LocalInfo.java (combineWith): Reorganized a bit, |
||||
but no changes. |
||||
* jode/expr/InvokeOperator.java.in (dumpExpression): Always print |
||||
the ThisOperator if a field is from a parent class of an outer |
||||
class is used. And always qualify the this operator if not |
||||
innermost. |
||||
|
||||
2001-01-30 Jochen Hoenicke <jochen@gnu.org> |
||||
|
||||
* jode/jvm/SyntheticAnalyzer.java.in (checkConstructorAccess): |
||||
Allow the special unifyParam to be the last parameter. |
||||
|
||||
2001-01-30 Jochen Hoenicke <jochen@gnu.org> |
||||
|
||||
* jode/decompiler/TabbedPrintWriter.java: Better gnu style handling: |
||||
(openBraceClass) (closeBraceClass) |
||||
(openBraceNoIndent) (closeBraceNoIndent): new functions. |
||||
(closeBraceNoSpace): Removed. |
||||
* jode/decompiler/Options.java (GNU_SPACING): new constant. |
||||
(GNU_STYLE): changed to include GNU_SPACING. |
||||
* jode/decompiler/ClassAnalyzer.java.in (dumpSource): Use |
||||
open/closeBraceClass. |
||||
* jode/decompiler/MethodAnalyzer.java.in (dumpSource): Use |
||||
open/closeBraceNoIndent. Insert a space for GNU_SPACING. |
||||
* jode/decompiler/InvokeOperator.java.in (dumpExpression): Insert |
||||
a space for GNU_SPACING, use open/closeBraceClass for inner |
||||
classes. |
||||
* jode/decompiler/UnaryOperator.java (dumpExpression): Insert |
||||
a space for GNU_SPACING. |
||||
|
||||
2001-01-30 Jochen Hoenicke <jochen@gnu.org> |
||||
|
||||
Added pascal style from Rolf Howarth <rolf@squarebox.co.uk> |
||||
* jode/decompiler/Options.java (PASCAL_STYLE): new constant. |
||||
(BRACE_FLUSH_LEFT): dito. |
||||
* jode/decompiler/Decompiler.java (setOption): detect pascal option. |
||||
* jode/decompiler/Main.java (main): dito. |
||||
* jode/decompiler/TabbedPrintWriter.java (openBrace, |
||||
openBraceContinue, closeBrace, closeBraceNoSpace, |
||||
closeBraceContinue): handle flush left. |
||||
|
||||
2001-01-30 Jochen Hoenicke <jochen@gnu.org> |
||||
|
||||
* jode/type/NullType.java (intersection): Removed, since the |
||||
version in ReferenceType is more correct. Before |
||||
tNull.isOfType(tRange(X,tNull)) returned false, which lead to |
||||
incorrect behaviour in InvokeOperator.needsCast. |
||||
* jode/decompiler/FieldAnalyzer.java.in (dumpSource): Removed the |
||||
"= null" hack for final fields; it was not correct, since the |
||||
field could be initialized in a constructor. |
||||
* jode/decompiler/TabbedPrintWriter.java (BreakPoint.endOp): |
||||
Simplified the code, copy options always from child. |
||||
* jode/jvm/SyntheticAnalyzer.java.in (unifyParam): new field. |
||||
(checkConstructorAccess): Allow the special Parameter, whose |
||||
purpose is to distinguish the wrapper from the real constructor |
||||
and give him a "$" in the type signature, to appear at every |
||||
position. It doesn't appear at position 1 for inner classes. |
||||
Store the position in unifyParam. |
||||
* jode/expr/InvokeOperator.java (isGetClass): Allow the method to |
||||
be declared inside an outer class: We simply check if we can get |
||||
the method analyzer. |
||||
(simplify): handle unifyParam. |
||||
* jode/expr/PopOperator.java (getBreakPenalty): return penalty of |
||||
inner expression. (dumpExpression): Call dumpExpression of |
||||
subexpression immediately without priority. |
@ -1,5 +1,5 @@ |
||||
## Input file for automake to generate the Makefile.in used by configure
|
||||
|
||||
SUBDIRS = jode bin doc test
|
||||
SUBDIRS = bin doc jode test
|
||||
|
||||
EXTRA_DIST = TODO
|
||||
EXTRA_DIST = jcpp
|
||||
|
@ -0,0 +1,5 @@ |
||||
Joe Bronkema <joseph.d.bronkema at lmco.com> |
||||
Rolf Howarth <rolf at squarebox.co.uk> for pascal indentaton style. |
||||
Erik Modén <Erik.Moden at emw.ericsson.se> |
||||
Martin Schmitz <m.schmitz at e-sign.com> for finding many bugs in the obfuscator. |
||||
zzzeek <classic at io.com> |
@ -1,2 +1,3 @@ |
||||
Makefile |
||||
Makefile.in |
||||
*.html |
||||
|
@ -1,14 +1,43 @@ |
||||
## Input file for automake to generate the Makefile.in used by configure
|
||||
|
||||
EXTRA_DIST = \
|
||||
applet.html \ |
||||
download.html.in \ |
||||
history.html \ |
||||
jode.html \ |
||||
license.html \ |
||||
links.html \ |
||||
usage.html \ |
||||
PHP_FILES = \
|
||||
applet.php \ |
||||
bluesky.php \ |
||||
download.php \ |
||||
faq.php \ |
||||
feedback.php \ |
||||
history.php \ |
||||
index.php \ |
||||
license.php \ |
||||
links.php \ |
||||
usage.php |
||||
|
||||
HTML_FILES = $(PHP_FILES:%.php=$(srcdir)/%.html)
|
||||
noinst_DATA = $(HTML_FILES)
|
||||
|
||||
EXTRA_DIST = $(PHP_FILES) $(notdir $(HTML_FILES)) \
|
||||
a-logo.gif \ |
||||
myproject.jos \ |
||||
dasm_to_java.perl \ |
||||
gimp/jode-logo.xcf \ |
||||
jode-logo.gif |
||||
|
||||
.PHONY: public_html_symlink |
||||
|
||||
# The following rules require that you have an apache with php on
|
||||
# localhost with standard user public_html directories and
|
||||
# FollowSymLink enabled.
|
||||
|
||||
PUBLIC_HTML=$(HOME)/public_html
|
||||
JODE_PHP_DIR=jode_php
|
||||
|
||||
public_html_symlink: |
||||
rm -f $(PUBLIC_HTML)/$(JODE_PHP_DIR)
|
||||
@RELDIR=`pwd | sed s!^$(HOME)!..!`; \
|
||||
ln -sf $$RELDIR/$(srcdir) $(PUBLIC_HTML)/$(JODE_PHP_DIR); \
|
||||
echo Created symlink to $$RELDIR/$(srcdir).
|
||||
|
||||
footer.inc: public_html_symlink |
||||
|
||||
$(srcdir)/%.html: %.php footer.inc header.inc menu.inc |
||||
lynx -source http://localhost/~$(LOGNAME)/$(JODE_PHP_DIR)/$(notdir $<)?extension=.html > $@
|
||||
|
After Width: | Height: | Size: 894 B |
@ -0,0 +1,66 @@ |
||||
<?php require("header.inc"); ?>
|
||||
|
||||
<h1>FAQ - Frequently Asked Questions</h1> |
||||
|
||||
This is a list of some questions that pop up from time to time. |
||||
|
||||
<h2>Decompiler issues</h2> |
||||
|
||||
<h3>The decompiler crashes with a VerifyException, what can I do?</h3> |
||||
|
||||
<p>The class isn't verifiable, probably because there is not enough |
||||
information about used classes. See the question about the |
||||
classpath.</p> |
||||
|
||||
<p>This could also be caused by malicious bytecode, or because there |
||||
is a bug in Jode's verifier.</p> |
||||
|
||||
<h3>What should be included in the classpath?</h3> |
||||
|
||||
<p>Jode needs to know the full class hierarchie to guess the types. |
||||
This includes not only the classes in the program, but also the |
||||
libraries used by the java program, even the Java runtime library. |
||||
You should set the classpath to include all these classes.</p> |
||||
|
||||
<p>If you don't specify the classpath on the command line, Jode uses |
||||
the same as your Java Virtual Machine.</p> |
||||
|
||||
<p>As last resort, if Jode can't find a class in the classpath it uses |
||||
reflection to ask the Virtual Machine. This works quite well, but |
||||
loading classes can have side effects, e.g. when AWT classes are |
||||
loaded, an AWT thread is created, even though Jode doesn't need |
||||
it.</p> |
||||
|
||||
<h2>Obfuscator issues</h2> |
||||
|
||||
<h3>What should be included in the classpath?</h3> |
||||
|
||||
<p>The program, all libraries, the Java runtime library. Don't omit a |
||||
library even when you don't want to obfuscate it.</p> |
||||
|
||||
<h3>What should I preserve</h3> |
||||
|
||||
<p>The most common mistake is to preserve a class. In most cases this |
||||
is not what you want. This only makes sure the class won't be |
||||
renamed, it doesn't prevent it from being stripped. Instead you |
||||
should preserve methods and constructors. The constructor is just a |
||||
method with the special name <tt><init&rt;</tt>. </p> |
||||
|
||||
<p> Another common mistake is to omit the type |
||||
signature, e.g. to preserve <tt>Class.main</tt> instead of |
||||
<tt>Class.main.([Ljava/lang/String;)V</tt>. That doesn't work. If |
||||
you don't want to care about the format of the type signature use a |
||||
wildcard as in <tt>Class.main.*</tt>. </p> |
||||
|
||||
<h3>What is a type signature</h3> |
||||
|
||||
<p>The type signature is a machine readable representation of a java |
||||
type that is used all over in java bytecode. The JDK ships a command |
||||
named <tt>javap</tt>. With <tt>java -s</tt> you can lists the fields |
||||
and methods of a class with their type signatures.</p> |
||||
|
||||
<p> If you are interested in the format of type signatures read the |
||||
Java Virtual Machine Specification, Chapter 4.3 Descriptors</p> |
||||
|
||||
<?php require("footer.inc"); ?> |
||||
|
@ -0,0 +1,14 @@ |
||||
<?php require("header.inc"); ?>
|
||||
|
||||
<h1>Feedback</h1> |
||||
|
||||
<p>You can report bugs to the <?php sflink("bugs/")?>bug forum</a>. </p>
|
||||
|
||||
<p>You can contact me by email via <a |
||||
href="http://sourceforge.net/sendmessage.php?touser=18252">hoenicke at |
||||
users.sourceforge.net</a>. Please mention <i>jode</i> in the |
||||
subject.</p> |
||||
|
||||
<p>There is a mailing list. Check <a href="http://lists.sourceforge.net/mailman/listinfo/jode-users">this page</a> for subscription informations.</p> |
||||
|
||||
<?php require("footer.inc"); ?>
|
@ -1,15 +1,16 @@ |
||||
<?php require("header.inc"); ?> |
||||
<h1>License</h1> |
||||
<p><i>JODE</i> is Copyright © 1998-2000 by Jochen Hoenicke. <br><br> |
||||
|
||||
This program is free software; you can redistribute it and/or modify |
||||
<p>This program is free software; you can redistribute it and/or modify |
||||
it under the terms of the <a |
||||
href="http://www.gnu.org/copyleft/gpl.html">GNU General Public |
||||
License</a> as published by the Free Software Foundation; either |
||||
version 2 of the License, or (at your option) any later version.<br><br> |
||||
version 2 of the License, or (at your option) any later version.</p> |
||||
|
||||
This program is distributed in the hope that it will be useful, |
||||
<p>This program is distributed in the hope that it will be useful, |
||||
but <b>without any warranty</b>; without even the implied warranty of |
||||
<b>merchantability</b> or <b>fitness for a particular purpose</b>. See the |
||||
GNU General Public License for more details. |
||||
GNU General Public License for more details.</p> |
||||
|
||||
<?php require("footer.inc"); ?> |
||||
|
@ -1,115 +1,47 @@ |
||||
<?php |
||||
$menu = array( |
||||
"Jode", |
||||
array("<B>Home</B>" , "selflink", "jode", |
||||
$menu = |
||||
array("<B>Home</B>" , "selflink", "index", |
||||
"Project page" , "sflink", "project/", |
||||
"-", "-", "-", |
||||
"Applet" , "selflink", "applet", |
||||
"Download" , "selflink", "download", |
||||
"FAQ" , "selflink", "faq", |
||||
"Feedback" , "selflink", "feedback", |
||||
"Documentation", "selflink", "usage", |
||||
"License" , "selflink", "license", |
||||
"History" , "selflink", "history", |
||||
"Links" , "selflink", "links", |
||||
"Blue Sky" , "selflink", "bluesky"), |
||||
"Feedback", |
||||
array("Bug Tracking" , "sflink", "bugs/", |
||||
"Public Forums" , "sflink", "forum/", |
||||
"Mailing List" , "link", |
||||
"http://lists.sourceforge.net/mailman/listinfo/jode-users", |
||||
"Private Mail" , "link", |
||||
"http://sourceforge.net/sendmessage.php?touser=18252"), |
||||
"Download", |
||||
array("FTP server", "link", "ftp://jode.sourceforge.net/pub/jode/", |
||||
"Source releases", "sflink", "project/filelist.php")); |
||||
|
||||
$images = array( |
||||
"Powered by ", "http://sourceforge.net/sflogo.php?group_id=3790&type=1", |
||||
"SourceForge", "http://sourceforge.net", |
||||
"Best viewed with ", "a-logo.gif", |
||||
"Any Browser", "http://www.anybrowser.org/campaign/"); |
||||
|
||||
if (eregi("^Lynx", $HTTP_USER_AGENT)) { |
||||
|
||||
reset($menu); |
||||
while (list($dummy, $header) = each($menu)) { |
||||
list($dummy, $subitems) = each($menu); |
||||
"Blue Sky" , "selflink", "bluesky"); |
||||
?> |
||||
|
||||
echo "<b>$header:</b>\n"; |
||||
reset($subitems); |
||||
while (list($dummy, $name) = each($subitems)) { |
||||
list($dummy, $type) = each($subitems); |
||||
list($dummy, $link) = each($subitems); |
||||
<table cellspacing=0 cellpadding=3 border=0 bgcolor=#EEEEF8 class="nav"> |
||||
<tr><td class="nav"> |
||||
<?php |
||||
reset($menu); |
||||
$self = ereg_replace("^.*/", "", $PHP_SELF); |
||||
while (list($dummy, $name) = each($menu)) { |
||||
list($dummy, $type) = each($menu); |
||||
list($dummy, $link) = each($menu); |
||||
$name = ereg_replace(" ", " ", $name); |
||||
if ($type == "selflink") { |
||||
if ($self == "$link.$extension") { |
||||
echo "$name"; |
||||
} else { |
||||
selflink($link); |
||||
} else if ($type == "sflink") { |
||||
sflink($link); |
||||
} else if ($type == "-") { |
||||
echo "<br>\n"; |
||||
continue; |
||||
} else if ($type == "link") { |
||||
echo "<a href=\"$link\">"; |
||||
} |
||||
$name = ereg_replace(" ", " ", $name); |
||||
echo "$name</a>"; |
||||
if (current($subitems)) { |
||||
echo " |\n"; |
||||
} |
||||
} |
||||
echo "<br>\n\n"; |
||||
} |
||||
echo "<right>\n"; |
||||
reset($images); |
||||
while (list($dummy, $label) = each($images)) { |
||||
list($dummy, $src) = each($images); |
||||
list($dummy, $alt) = each($images); |
||||
list($dummy, $link) = each($images); |
||||
echo "$label<a href=\"$link\"><img src=\"$src\" border=0"; |
||||
echo " width=88 height=31 alt=\"$alt\"></a>\n"; |
||||
} |
||||
echo "</right>\n"; |
||||
} else { |
||||
echo "<table cellspacing=0 cellpadding=3 width=100%"; |
||||
echo " border=0 bgcolor=eeeef8>\n"; |
||||
|
||||
reset($menu); |
||||
while (list($dummy, $header) = each($menu)) { |
||||
list($dummy, $subitems) = each($menu); |
||||
echo "<tr bgcolor=\"7272cc\">\n<td align=\"center\">"; |
||||
echo "<font color=\"ffffff\"><b>$header</b></font></td></tr>\n"; |
||||
echo "<tr><td align=\"right\">\n"; |
||||
reset($subitems); |
||||
while (list($dummy, $name) = each($subitems)) { |
||||
list($dummy, $type) = each($subitems); |
||||
list($dummy, $link) = each($subitems); |
||||
if ($type == "selflink") { |
||||
selflink($link); |
||||
} else if ($type == "sflink") { |
||||
sflink($link); |
||||
echo "$name</a>"; |
||||
} else if ($type == "-") { |
||||
echo "<br>\n"; |
||||
continue; |
||||
} else if ($type == "link") { |
||||
echo "<a href=\"$link\">"; |
||||
echo "<a href=\"$link\">$name</a>"; |
||||
} |
||||
$name = ereg_replace(" ", " ", $name); |
||||
echo "$name</a>"; |
||||
if (current($subitems)) { |
||||
echo "<br>\n"; |
||||
} |
||||
} |
||||
} |
||||
echo "</td></tr>\n"; |
||||
echo "<tr bgcolor=\"ffffff\"><td align=\"center\">"; |
||||
|
||||
reset($images); |
||||
while (list($dummy, $label) = each($images)) { |
||||
list($dummy, $src) = each($images); |
||||
list($dummy, $alt) = each($images); |
||||
list($dummy, $link) = each($images); |
||||
echo "<br>$label<br>\n"; |
||||
echo "<a href=\"$link\"><img src=\"$src\" border=0"; |
||||
echo " width=88 height=31 alt=\"$alt\"></a><br>\n"; |
||||
if (current($menu)) { |
||||
echo " |\n"; |
||||
} |
||||
echo "</td></tr></table>\n"; |
||||
} |
||||
?> |
||||
</td></tr> |
||||
</table><br> |
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in new issue