¹Ø¿¡±Û °íÃļ­ ´Ù½Ã ¿Ã¸³´Ï´Ù. Á¤¸» ±ÞÇØ¿ä!


[ ´ÙÀ½ ±Ûµé ] [ À̾ ±Û¿Ã¸®±â(´äÇϱâ) ] [ ÀÚ¹Ù ¹¯°í ´äÇϱâ ]

±Û¾´ÀÌ :ÀÌÁ¾´ë 1998³â 12¿ù 17ÀÏ 18:22:33

¾Æ·¡ºÎ¹®¿¡ ±ÛÀ» À߸ø ¿Ã·Á¼­ ´Ù½Ã ¿Ã¸³´Ï´Ù.
¹Ø¿¡ ÀÖ´Â ¼Ò½º´Â 'ÀÚ¹Ù21ÀÏ ¿Ï¼º'À̶ó´Â Ã¥¿¡ ÀÖ´Â °ÍÀ¸·Î
native class ¸¦ Å×½ºÆ®Çϱâ À§ÇØ ¸¸µç °ÍÀÔ´Ï´Ù.



/************************************************************************/
OS : UNIX
Webserver : Netscape Enterprise Server3.0
JDK : Solaris JDK1.1.4
JDK home dir : /idisk1/oracle8/app/oracle/product/8.0.4/ows/4.0/jdk
Netscape home dir : /edisk11/netscape/doc
Work dir : /edisk11/netscape/doc



/************************ SimpleFile.java *******************************/
public class SimpleFile{
public static final char separatorChar = '>';
protected String path;
protected int fd;


public SimpleFile(String s){
path = s;
}


public String getFileName(){
int index = path.lastIndexOf(separatorChar);


return(index < 0) ? path : path.substring(index + 1);
}


public String getPath(){
return path;
}


public native boolean open();
public native void close();
public native int read(byte[] buffer, int length);
public native int write(byte[] buffer, int length);


static{
System.loadLibrary("simple");
}
}



/********************* SimpleFileNative.c *******************************/
#include "SimpleFile.h"
#include <sys/param.h>
#include <fcntl.h>


#define LOCAL_PATH_SEPARATOR '/'


static void fixSeparators(char *p){
for(; *p != '\0'; ++p)
if(*p == SimpleFile_separatorChar)
*p = LOCAL_PATH_SEPARATOR;
}


long SimpleFile_open(struct HSimpleFile *this){
int fd;
char buffer[MAXPATHLEN];


javaString2CString(unhand(this)->path, buffer, sizeof(buffer));
fixSeparators(buffer);
if((fd = open(buffer, O_REWR | O_CREAT, 0664)) < 0)
return(FALSE);
unhand(this)->fd = fd;
return(TRUE);
}


void SimpleFile_close(struct HSimpleFile * this){
close(unhand(this)->fd);
unhand(this)->fd = -1;
}


long SimpleFile_read(struct HSimpleFile *this, HArrayOfByte *buffer, long count){
char *data = unhand(buffer)->body;
int length = obj_length(buffer);
int numBytes = (length < count ? length : count);


if((numBytes = read(unhand(this)->fd, data, numBytes)) == 0)
return(-1);
return(numBytes);
}


long SimpleFile_write(struct HSimpleFile *this, HArrayOfByte *buffer, long count){
char *data = unhand(buffer)->body;
int length = obj_length(buffer);
return(write(unhand(this)->fd, data, (length < count ? length : count)));
}



/****************************** ½ÇÇà************************************/
diiis-sun% javac SimpleFile.java


diiis-sun% javah SimpleFile


diiis-sun% javah -stubs SimpleFile


diiis-sun% cc -G -I/idisk1/oracle8/app/oracle/product/8.0.4/ows/4.0/jdk/include \
-I/idisk1/oracle8/app/oracle/product/8.0.4/ows/4.0/jdk/include/solaris \
SimpleFileNative.c SimpleFile.c -o Libsimple.so


SimpleFileNative.c:
"/idisk1/oracle8/app/oracle/product/8.0.4/ows/4.0/jdk/include/oobj.h", line 56: invalid token: ##
"/idisk1/oracle8/app/oracle/product/8.0.4/ows/4.0/jdk/include/oobj.h", line 56: undefined or not a type: java_lang_Object
"/idisk1/oracle8/app/oracle/product/8.0.4/ows/4.0/jdk/include/oobj.h", line 56: warning: "typedef" valid only for function declaratn
"/idisk1/oracle8/app/oracle/product/8.0.4/ows/4.0/jdk/include/oobj.h", line 56: invalid token: ##
"/idisk1/oracle8/app/oracle/product/8.0.4/ows/4.0/jdk/include/oobj.h", line 56: undefined symbol: Class
"/idisk1/oracle8/app/oracle/product/8.0.4/ows/4.0/jdk/include/oobj.h", line 56: syntax error before or at: java_lang_Object
"/idisk1/oracle8/app/oracle/product/8.0.4/ows/4.0/jdk/include/oobj.h", line 56: cannot recover from previous errors
SimpleFile.c:
"/idisk1/oracle8/app/oracle/product/8.0.4/ows/4.0/jdk/include/oobj.h", line 56: invalid token: ##
"/idisk1/oracle8/app/oracle/product/8.0.4/ows/4.0/jdk/include/oobj.h", line 56: undefined or not a type: java_lang_Object
"/idisk1/oracle8/app/oracle/product/8.0.4/ows/4.0/jdk/include/oobj.h", line 56: warning: "typedef" valid only for function declaratn
"/idisk1/oracle8/app/oracle/product/8.0.4/ows/4.0/jdk/include/oobj.h", line 56: invalid token: ##
"/idisk1/oracle8/app/oracle/product/8.0.4/ows/4.0/jdk/include/oobj.h", line 56: undefined symbol: Class
"/idisk1/oracle8/app/oracle/product/8.0.4/ows/4.0/jdk/include/oobj.h", line 56: syntax error before or at: java_lang_Object
"/idisk1/oracle8/app/oracle/product/8.0.4/ows/4.0/jdk/include/oobj.h", line 56: cannot recover from previous errors



/************************************************************************/
À§¿Í °°ÀÌ ÄÄÆÄÀÏ °á°ú°¡ ³ª¿Ô½À´Ï´Ù.
Á¦°¡ ÄÄÆÄÀÏÀ» À߸øÇÑ°ÍÀÎÁö ¾Æ´Ï¸é JDK ¹öÀüÀÌ ³·¾Æ¼­ ±×·±°ÇÁö
ÇÏ¿©Æ° oobj.h ¸¦ °íÄ¥¼öµµ ¾ø°í Çؼ­
¿©·¯ºÐÀÇ Ãæ°í¸¦ µè°íÀÚ ÇÕ´Ï´Ù.
À̹øÁÖ±îÁö ¾î¶²½ÄÀ¸·Îµç °á°ú°¡ ³ª¿Í¾ß µÇ´Â ºÎºÐÀÔ´Ï´Ù.
ÀÚ¹Ù ¸Å´Ï¾Æ´ÔµéÀÇ ¸¹Àº Ãæ°í ºÎŹµå¸³´Ï´Ù.


(Ã߽Š: ²ÀÁ» µµ¿ÍÁÖ¼¼¿ä! ±×¸®°í ¹«»çÈ÷ ³¡³ª¸é ¼ÒÁÖ ÇÑÀÜ ÇսôÙ.)



´ÙÀ½ ±Ûµé:



À̾ ±Û¿Ã¸®±â(´äÇϱâ)

À̸§:
E-Mail:
Á¦¸ñ:
³»¿ë:
HTML ÅÂ±× Æ÷ÇÔ ¿©ºÎ: HTML ¹®¼­ÀÏ °æ¿ì üũ
°ü·Ã URL(¼±ÅÃ):
URL Á¦¸ñ(¼±ÅÃ):
°ü·Ã À̹ÌÁö URL:


[ ´ÙÀ½ ±Ûµé ] [ À̾ ±Û¿Ã¸®±â(´äÇϱâ) ] [ ÀÚ¹Ù ¹¯°í ´äÇϱâ ]