extras-legacy/java/trunk/src/jni/libisofs/IsoVolume.c

293 lines
7.7 KiB
C

/*
* IsoVolume.c
*
* Copyright (c) 2007 Vreixo Formoso
*
* This library is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
* See COPYING file for details.
*/
#include "org_pykix_libburnia_libisofs_IsoVolume.h"
#include "libisofs.h"
/*
* Class: org_pykix_libburnia_libisofs_IsoVolume
* Method: iso_volume_new
* Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)J
*/
JNIEXPORT jlong JNICALL
Java_org_pykix_libburnia_libisofs_IsoVolume_iso_1volume_1new
(
JNIEnv *env,
jclass cls,
jstring volumeId,
jstring publisherId,
jstring dataPreparerId
)
{
const char *volume_id = NULL;
const char *publisher_id = NULL;
const char *data_preparer_id = NULL;
if ( volumeId != NULL ) {
volume_id = (*env)->GetStringUTFChars(env, volumeId, NULL);
if ( volume_id == NULL ) {
return (jlong) 0; /* OutOfMemoryError already thrown */
}
}
if ( publisherId != NULL ) {
publisher_id = (*env)->GetStringUTFChars(env, publisherId, NULL);
if (publisher_id == NULL) {
return (jlong) 0; /* OutOfMemoryError already thrown */
}
}
if ( dataPreparerId != NULL ) {
data_preparer_id = (*env)->GetStringUTFChars(env, dataPreparerId, NULL);
if ( data_preparer_id == NULL ) {
return (jlong) 0; /* OutOfMemoryError already thrown */
}
}
struct iso_volume *iso = iso_volume_new(volume_id, publisher_id, data_preparer_id);
(*env)->ReleaseStringUTFChars(env, volumeId, volume_id);
(*env)->ReleaseStringUTFChars(env, publisherId, publisher_id);
(*env)->ReleaseStringUTFChars(env, dataPreparerId, data_preparer_id);
return (jlong) iso;
}
/*
* Class: org_pykix_libburnia_libisofs_IsoVolume
* Method: iso_volume_new_with_root
* Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;J)J
*/
JNIEXPORT jlong JNICALL
Java_org_pykix_libburnia_libisofs_IsoVolume_iso_1volume_1new_1with_1root
(
JNIEnv *env,
jclass cls,
jstring volumeId,
jstring publisherId,
jstring dataPreparerId,
jlong root
)
{
const char *volume_id = NULL;
const char *publisher_id = NULL;
const char *data_preparer_id = NULL;
struct iso_volume *iso;
if ( volumeId != NULL ) {
volume_id = (*env)->GetStringUTFChars(env, volumeId, NULL);
if ( volume_id == NULL ) {
return (jlong) 0; /* OutOfMemoryError already thrown */
}
}
if ( publisherId != NULL ) {
publisher_id = (*env)->GetStringUTFChars(env, publisherId, NULL);
if (publisher_id == NULL) {
return (jlong) 0; /* OutOfMemoryError already thrown */
}
}
if ( dataPreparerId != NULL ) {
data_preparer_id = (*env)->GetStringUTFChars(env, dataPreparerId, NULL);
if ( data_preparer_id == NULL ) {
return (jlong) 0; /* OutOfMemoryError already thrown */
}
}
iso = iso_volume_new_with_root(volume_id, publisher_id, data_preparer_id,
(struct iso_tree_node *) root);
(*env)->ReleaseStringUTFChars(env, volumeId, volume_id);
(*env)->ReleaseStringUTFChars(env, publisherId, publisher_id);
(*env)->ReleaseStringUTFChars(env, dataPreparerId, data_preparer_id);
return (jlong) iso;
}
/*
* Class: org_pykix_libburnia_libisofs_IsoVolume
* Method: iso_volume_free
* Signature: (J)V
*/
JNIEXPORT void JNICALL
Java_org_pykix_libburnia_libisofs_IsoVolume_iso_1volume_1free
(
JNIEnv *env, jclass cls, jlong volume
)
{
iso_volume_free( (struct iso_volume *) volume );
}
/*
* Class: org_pykix_libburnia_libisofs_IsoVolume
* Method: iso_volume_get_root
* Signature: (J)J
*/
JNIEXPORT jlong JNICALL
Java_org_pykix_libburnia_libisofs_IsoVolume_iso_1volume_1get_1root
(
JNIEnv *env, jclass cls, jlong volume
)
{
//return (jlong) iso_volume_get_root( (struct iso_volume *) volume );
}
/*
* Class: org_pykix_libburnia_libisofs_IsoVolume
* Method: iso_volume_set_volume_id
* Signature: (JLjava/lang/String;)V
*/
JNIEXPORT void JNICALL
Java_org_pykix_libburnia_libisofs_IsoVolume_iso_1volume_1set_1volume_1id
(
JNIEnv *env, jclass cls, jlong volume, jstring volumeId
)
{
const char *volume_id;
volume_id = (*env)->GetStringUTFChars(env, volumeId, NULL);
if ( volume_id == NULL ) {
return; /* OutOfMemoryError already thrown */
}
//iso_volume_set_volume_id( (struct iso_volume *) volume, volume_id);
(*env)->ReleaseStringUTFChars(env, volumeId, volume_id);
}
/*
* Class: org_pykix_libburnia_libisofs_IsoVolume
* Method: iso_volume_set_publisher_id
* Signature: (JLjava/lang/String;)V
*/
JNIEXPORT void JNICALL
Java_org_pykix_libburnia_libisofs_IsoVolume_iso_1volume_1set_1publisher_1id
(
JNIEnv *env, jclass cls, jlong volume, jstring publisherId
)
{
const char *publisher_id;
publisher_id = (*env)->GetStringUTFChars(env, publisherId, NULL);
if (publisher_id == NULL) {
return; /* OutOfMemoryError already thrown */
}
//iso_volume_set_publisher_id( (struct iso_volume *) volume, publisher_id);
(*env)->ReleaseStringUTFChars(env, publisherId, publisher_id);
}
/*
* Class: org_pykix_libburnia_libisofs_IsoVolume
* Method: iso_volume_set_data_preparer_id
* Signature: (JLjava/lang/String;)V
*/
JNIEXPORT void JNICALL
Java_org_pykix_libburnia_libisofs_IsoVolume_iso_1volume_1set_1data_1preparer_1id
(
JNIEnv *env, jclass cls, jlong volume, jstring dataPreparerId
)
{
const char *data_preparer_id;
data_preparer_id = (*env)->GetStringUTFChars(env, dataPreparerId, NULL);
if ( data_preparer_id == NULL ) {
return; /* OutOfMemoryError already thrown */
}
//iso_volume_set_data_preparer_id( (struct iso_volume *) volume, data_preparer_id);
(*env)->ReleaseStringUTFChars(env, dataPreparerId, data_preparer_id);
}
/*
* Class: org_pykix_libburnia_libisofs_IsoVolume
* Method: iso_tree_volume_path_to_node
* Signature: (JLjava/lang/String;)J
*/
JNIEXPORT jlong JNICALL
Java_org_pykix_libburnia_libisofs_IsoVolume_iso_1tree_1volume_1path_1to_1node
(
JNIEnv *env, jclass cls, jlong volume, jstring path
)
{
const char *cpath;
struct iso_tree_node *node;
cpath = (*env)->GetStringUTFChars(env, path, NULL);
if ( cpath == NULL ) {
return 0; /* OutOfMemoryError already thrown */
}
node = iso_tree_volume_path_to_node((struct iso_volume *) volume, cpath);
(*env)->ReleaseStringUTFChars(env, path, cpath);
return (jlong) node;
}
/*
* Class: org_pykix_libburnia_libisofs_IsoVolume
* Method: iso_tree_volume_add_path
* Signature: (JLjava/lang/String;Ljava/lang/String;)J
*/
JNIEXPORT jlong JNICALL
Java_org_pykix_libburnia_libisofs_IsoVolume_iso_1tree_1volume_1add_1path
(
JNIEnv *env, jclass cls, jlong volume, jstring discPath, jstring path
)
{
const char *disc_path;
const char *cpath;
struct iso_tree_node *node;
disc_path = (*env)->GetStringUTFChars(env, discPath, NULL);
if ( disc_path == NULL ) {
return 0; /* OutOfMemoryError already thrown */
}
cpath = (*env)->GetStringUTFChars(env, path, NULL);
if ( cpath == NULL ) {
return 0; /* OutOfMemoryError already thrown */
}
node = iso_tree_volume_add_path( (struct iso_volume *) volume, disc_path, path);
(*env)->ReleaseStringUTFChars(env, path, cpath);
(*env)->ReleaseStringUTFChars(env, discPath, disc_path);
return (jlong) node;
}
/*
* Class: org_pykix_libburnia_libisofs_IsoVolume
* Method: iso_tree_volume_add_new_dir
* Signature: (JLjava/lang/String;)J
*/
JNIEXPORT jlong JNICALL
Java_org_pykix_libburnia_libisofs_IsoVolume_iso_1tree_1volume_1add_1new_1dir
(
JNIEnv *env, jclass cls, jlong volume, jstring discPath
)
{
const char *disc_path;
struct iso_tree_node *node;
disc_path = (*env)->GetStringUTFChars(env, discPath, NULL);
if ( disc_path == NULL ) {
return 0; /* OutOfMemoryError already thrown */
}
node = iso_tree_volume_add_new_dir( (struct iso_volume *) volume, disc_path);
(*env)->ReleaseStringUTFChars(env, discPath, disc_path);
return (jlong) node;
}