Skip to content
Snippets Groups Projects
Commit 80316962 authored by brinn's avatar brinn
Browse files

add: methods for getting link information and build scripts for Solaris

SVN: 6964
parent 2adff97f
No related branches found
No related tags found
No related merge requests found
#! /bin/bash
gcc -shared -fPIC unixlink.c -o ../../../libraries/filelink/amd64-Linux/jlink.so
gcc -shared -fPIC unixlink.c -o amd64-Linux_jlink.so
#! /bin/bash
gcc -shared unixlink.c -I/usr/java/jdk1.5.0_13/include -I/usr/java/jdk1.5.0_13/include/linux -o ../../../libraries/filelink/i386-Linux/jlink.so
gcc -shared unixlink.c -I/usr/java/jdk1.5.0_13/include -I/usr/java/jdk1.5.0_13/include/linux -o i386-Linux_jlink.so
#! /bin/bash
gcc -bundle unixlink.c -I/System/Library/Frameworks/JavaVM.framework/Versions/Current/Headers -o "../../../libraries/filelink/i386-Mac OS X/jlink.so"
gcc -bundle unixlink.c -I/System/Library/Frameworks/JavaVM.framework/Versions/Current/Headers -o "i386-Mac OS X_jlink.so"
#! /bin/bash
gcc -m64 -shared -fPIC -static-libgcc -R/usr/sfw/lib/amd64 unixlink.c -I/usr/java/include/ -I/usr/java/include/solaris -o amd64-SunOS_jlink.so
#! /bin/bash
gcc -shared -fPIC -static-libgcc unixlink.c -I/usr/java/include/ -I/usr/java/include/solaris -o x86-SunOS_jlink.so
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <jni.h>
JNIEXPORT jint JNICALL Java_ch_systemsx_cisd_common_utilities_FileLinkUtilities_hardlink
......@@ -8,16 +10,15 @@ JNIEXPORT jint JNICALL Java_ch_systemsx_cisd_common_utilities_FileLinkUtilities_
{
const char* pfilename;
const char* plinktarget;
jboolean isCopy;
int retval;
pfilename = (char *)(*env)->GetStringUTFChars(env, filename, &isCopy);
plinktarget = (char *)(*env)->GetStringUTFChars(env, linktarget, &isCopy);
pfilename = (char *)(*env)->GetStringUTFChars(env, filename, NULL);
plinktarget = (char *)(*env)->GetStringUTFChars(env, linktarget, NULL);
retval = link(pfilename, plinktarget);
if (retval < 0)
{
retval = errno;
retval = -errno;
}
(*env)->ReleaseStringUTFChars(env, filename, pfilename);
......@@ -31,15 +32,14 @@ JNIEXPORT jint JNICALL Java_ch_systemsx_cisd_common_utilities_FileLinkUtilities_
{
const char* pfilename;
const char* plinktarget;
jboolean isCopy;
int retval;
pfilename = (char *)(*env)->GetStringUTFChars(env, filename, &isCopy);
plinktarget = (char *)(*env)->GetStringUTFChars(env, linktarget, &isCopy);
pfilename = (char *)(*env)->GetStringUTFChars(env, filename, NULL);
plinktarget = (char *)(*env)->GetStringUTFChars(env, linktarget, NULL);
retval = symlink(pfilename, plinktarget);
if (retval < 0) {
retval = errno;
retval = -errno;
}
(*env)->ReleaseStringUTFChars(env, filename, pfilename);
......@@ -48,7 +48,50 @@ JNIEXPORT jint JNICALL Java_ch_systemsx_cisd_common_utilities_FileLinkUtilities_
return retval;
}
JNIEXPORT jint JNICALL Java_ch_systemsx_cisd_common_utilities_FileLinkUtilities_linkinfo(JNIEnv *env, jclass clss, jstring filename, jintArray result)
{
const char* pfilename;
struct stat statbuf;
jint resultbuf[4];
int retval;
pfilename = (char *)(*env)->GetStringUTFChars(env, filename, NULL);
retval = lstat(pfilename, &statbuf);
(*env)->ReleaseStringUTFChars(env, filename, pfilename);
if (retval < 0)
{
return -errno;
} else
{
resultbuf[0] = statbuf.st_ino;
resultbuf[1] = statbuf.st_nlink;
resultbuf[2] = S_ISLNK(statbuf.st_mode);
resultbuf[3] = statbuf.st_size;
(*env)->SetIntArrayRegion(env, result, 0, 4, resultbuf);
return 0;
}
}
JNIEXPORT jstring JNICALL Java_ch_systemsx_cisd_common_utilities_FileLinkUtilities_readlink(JNIEnv *env, jclass clss, jstring linkname, jint linkvallen)
{
const char* plinkname;
char plinkvalue[linkvallen + 1];
int retval;
plinkname = (char *)(*env)->GetStringUTFChars(env, linkname, NULL);
retval = readlink(plinkname, plinkvalue, linkvallen);
(*env)->ReleaseStringUTFChars(env, linkname, plinkname);
if (retval < 0)
{
return NULL;
} else
{
plinkvalue[linkvallen] = '\0';
return (*env)->NewStringUTF(env, plinkvalue);
}
}
JNIEXPORT jstring JNICALL Java_ch_systemsx_cisd_common_utilities_FileLinkUtilities_strerror(JNIEnv *env, jclass clss, jint errnum)
{
return (*env)->NewStringUTF(env, strerror(errnum));
return (*env)->NewStringUTF(env, strerror(errnum < 0 ? -errnum : errnum));
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment