#include <unistd.h> #include <errno.h> #include <string.h> #include <jni.h> JNIEXPORT jint JNICALL Java_ch_systemsx_cisd_common_utilities_FileLinkUtilities_hardlink (JNIEnv *env, jclass clss, jstring filename, jstring linktarget) { const char* pfilename; const char* plinktarget; jboolean isCopy; int retval; pfilename = (char *)(*env)->GetStringUTFChars(env, filename, &isCopy); plinktarget = (char *)(*env)->GetStringUTFChars(env, linktarget, &isCopy); retval = link(pfilename, plinktarget); if (retval < 0) { retval = errno; } (*env)->ReleaseStringUTFChars(env, filename, pfilename); (*env)->ReleaseStringUTFChars(env, linktarget, plinktarget); return retval; } JNIEXPORT jint JNICALL Java_ch_systemsx_cisd_common_utilities_FileLinkUtilities_symlink (JNIEnv *env, jclass clss, jstring filename, jstring linktarget) { const char* pfilename; const char* plinktarget; jboolean isCopy; int retval; pfilename = (char *)(*env)->GetStringUTFChars(env, filename, &isCopy); plinktarget = (char *)(*env)->GetStringUTFChars(env, linktarget, &isCopy); retval = symlink(pfilename, plinktarget); if (retval < 0) { retval = errno; } (*env)->ReleaseStringUTFChars(env, filename, pfilename); (*env)->ReleaseStringUTFChars(env, linktarget, plinktarget); return retval; } JNIEXPORT jstring JNICALL Java_ch_systemsx_cisd_common_utilities_FileLinkUtilities_strerror(JNIEnv *env, jclass clss, jint errnum) { return (*env)->NewStringUTF(env, strerror(errnum)); }