[ale] compiler error re:Open Office
Courtney Thomas
ccthomas at joimail.com
Fri Jul 8 16:27:32 EDT 2005
-----Forwarded Message-----
From: Courtney Thomas <cc.thomas at earthlink.net>
To: ale at ale.org
Subject: compiler error re:Open Office
Date: Fri, 08 Jul 2005 15:48:59 -0500
I've been compiling [gcc323] Open Office 1.1.2 for a couple of days :-)
and have hit a wall.
When finally arriving at....Building Project jurt
~/openoffice1.1/work/oo_1.1.2.src/jurt/source/pipe
Making PipeConnections.obj
the compiler reports:
com_sun_star_lib_connections_pipe_PipeConnection.c:558
syntax error before "void"
Anyone been down this road ?
Appreciatively,
Courtney
PS - Please find following, below the asterisk line,
the source code to the file producing the syntax error.
________________________________________________________________________
/*************************************************************************
*
* $RCSfile: com_sun_star_lib_connections_pipe_PipeConnection.c,v $
*
* $Revision: 1.2.38.1 $
*
* last change: $Author: vg $ $Date: 2004/03/18 11:52:44 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
*
* - GNU Lesser General Public License Version 2.1
* - Sun Industry Standards Source License Version 1.1
*
* Sun Microsystems Inc., October, 2000
*
* GNU Lesser General Public License Version 2.1
* =============================================
* Copyright 2000 by Sun Microsystems, Inc.
* 901 San Antonio Road, Palo Alto, CA 94303, USA
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1, as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*
*
* Sun Industry Standards Source License Version 1.1
* =================================================
* The contents of this file are subject to the Sun Industry Standards
* Source License Version 1.1 (the "License"); You may not use this file
* except in compliance with the License. You may obtain a copy of the
* License at http://www.openoffice.org/license.html.
*
* Software provided under this License is provided on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
* WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
* MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
* See the License for the specific provisions governing your rights and
* obligations concerning the Software.
*
* The Initial Developer of the Original Code is: Sun Microsystems, Inc.
*
* Copyright: 2000 by Sun Microsystems, Inc.
*
* All Rights Reserved.
*
* Contributor(s): _______________________________________
*
*
************************************************************************/
#if HAVE_CONFIG_H
#include <config.h>
#endif
#include "osl/security.h"
#include <osl/pipe.h>
#include "com_sun_star_lib_connections_pipe_PipeConnection.h"
/*****************************************************************************/
/* exception macros */
#define ThrowException(env, type, msg) { \
(*env)->ThrowNew(env, (*env)->FindClass(env, type), msg); }
/*****************************************************************************/
/* helper functions prototypes */
static oslPipe getPipe(JNIEnv * env, jobject obj_this);
static rtl_uString * jstring2ustring(JNIEnv * env, jstring jstr);
/*****************************************************************************/
/* get pipe */
static oslPipe getPipe(JNIEnv * env, jobject obj_this)
{
jclass tclass;
jfieldID fid;
while (1)
{
tclass = (*env)->GetObjectClass(env, obj_this);
if (tclass == NULL)
{
ThrowException(env,
"java/lang/RuntimeException",
"native pipe cannot find class");
break;
}
fid = (*env)->GetFieldID(env, tclass, "_nPipeHandle", "J");
if (fid == NULL)
{
ThrowException(env,
"java/lang/RuntimeException",
"native pipe cannot find field");
break;
}
return ((oslPipe)((*env)->GetLongField(env, obj_this, fid)));
}
return NULL;
}
/*****************************************************************************/
/* convert jstring to rtl_uString */
static rtl_uString * jstring2ustring(JNIEnv * env, jstring jstr)
{
const char * cstr;
rtl_uString * ustr = NULL;
cstr = (*env)->GetStringUTFChars(env, jstr, NULL);
rtl_uString_newFromAscii(&ustr, cstr);
(*env)->ReleaseStringUTFChars(env, jstr, cstr);
return ustr;
}
/*****************************************************************************/
/*
* Class: com_sun_star_lib_connections_pipe_PipeConnection
* Method: connect
* Signature: (Lcom/sun/star/beans/NativeService;)V
*/
JNIEXPORT void JNICALL Java_com_sun_star_lib_connections_pipe_PipeConnection_createJNI
(JNIEnv * env, jobject obj_this, jstring name)
{
enum {
START = 0,
INMONITOR,
GOTNAME,
CREATED
};
short state = START;
jclass tclass;
jfieldID fid;
oslSecurity psec = osl_getCurrentSecurity();
oslPipe npipe = NULL;
rtl_uString * pname = NULL;
while (1)
{
if ((*env)->MonitorEnter(env, obj_this) != 0)
{
ThrowException(env,
"java/lang/RuntimeException",
"native pipe cannot synchronize on the object");
break;
}
state = INMONITOR;
/* check connection state */
npipe = getPipe(env, obj_this);
if ((*env)->ExceptionOccurred(env) != NULL)
break;
if (npipe != NULL)
{
ThrowException(env,
"com/sun/star/io/IOException",
"native pipe is already connected");
break;
}
/* save the pipe name */
tclass = (*env)->GetObjectClass(env, obj_this);
if (tclass == NULL)
{
ThrowException(env,
"java/lang/RuntimeException",
"native pipe cannot find class");
break;
}
fid = (*env)->GetFieldID(env, tclass,
"_aDescription", "Ljava/lang/String;");
if (fid == NULL)
{
ThrowException(env,
"java/lang/RuntimeException",
"native pipe cannot find field");
break;
}
(*env)->SetObjectField(env, obj_this, fid, (jobject)name);
/* convert pipe name to rtl_uString */
pname = jstring2ustring(env, name);
if (pname == NULL)
{
ThrowException(env,
"java/lang/RuntimeException",
"native pipe cannot convert name");
break;
}
state = GOTNAME;
/* try to connect */
npipe = osl_createPipe(pname, osl_Pipe_OPEN, psec);
if (npipe == NULL)
{
ThrowException(env,
"java/lang/RuntimeException",
"cannot create native pipe");
break;
}
state = CREATED;
/* save the pipe */
tclass = (*env)->GetObjectClass(env, obj_this);
if (tclass == NULL)
{
ThrowException(env,
"java/lang/RuntimeException",
"native pipe cannot find class");
break;
}
fid = (*env)->GetFieldID(env, tclass, "_nPipeHandle", "J");
if (fid == NULL)
{
ThrowException(env,
"java/lang/RuntimeException",
"native pipe cannot find field");
break;
}
(*env)->SetLongField(env, obj_this, fid, (jlong)npipe);
/* done */
rtl_uString_release(pname);
(*env)->MonitorExit(env, obj_this);
osl_freeSecurityHandle(psec);
return;
}
switch (state)
{
case CREATED:
osl_closePipe(npipe);
osl_releasePipe(npipe);
case GOTNAME:
rtl_uString_release(pname);
case INMONITOR:
(*env)->MonitorExit(env, obj_this);
case START:
osl_freeSecurityHandle(psec);
default:
break;
}
return;
}
/*****************************************************************************/
/*
* Class: com_sun_star_lib_connections_pipe_PipeConnection
* Method: closeJNI
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_com_sun_star_lib_connections_pipe_PipeConnection_closeJNI
(JNIEnv * env, jobject obj_this)
{
enum {
START = 0,
INMONITOR
};
short state = START;
oslPipe npipe; /* native pipe */
jclass tclass; /* this class */
jfieldID fid; /* a field identifier */
while (1)
{
if ((*env)->MonitorEnter(env, obj_this) != 0)
{
ThrowException(env,
"java/lang/RuntimeException",
"native pipe cannot synchronize on the object");
break;
}
state = INMONITOR;
/* check connection state */
npipe = getPipe(env, obj_this);
if ((*env)->ExceptionOccurred(env) != NULL)
break;
if (npipe == NULL)
{
ThrowException(env,
"com/sun/star/io/IOException",
"native pipe is not connected");
break;
}
/* remove the reference to the pipe */
tclass = (*env)->GetObjectClass(env, obj_this);
if (tclass == NULL)
{
ThrowException(env,
"java/lang/RuntimeException",
"native pipe cannot find class");
break;
}
fid = (*env)->GetFieldID(env, tclass, "_nPipeHandle", "J");
if (fid == NULL)
{
ThrowException(env,
"java/lang/RuntimeException",
"native pipe cannot find field");
break;
}
(*env)->SetLongField(env, obj_this, fid, (jlong)0);
/* release the pipe */
osl_closePipe(npipe);
osl_releasePipe(npipe);
/* done */
(*env)->MonitorExit(env, obj_this);
return;
}
switch (state)
{
case INMONITOR:
(*env)->MonitorExit(env, obj_this);
case START:
default:
break;
}
return;
}
/*****************************************************************************/
/*
* Class: com_sun_star_lib_connections_pipe_PipeConnection
* Method: readJNI
* Signature: ([[BI)I
*/
JNIEXPORT jint JNICALL Java_com_sun_star_lib_connections_pipe_PipeConnection_readJNI
(JNIEnv * env, jobject obj_this, jobjectArray buffer, jint len)
{
enum {
START = 0,
INMONITOR,
AQUIRED,
GOTBUFFER
};
short state = START;
oslPipe npipe; /* native pipe */
void * nbuff; /* native read buffer */
jbyteArray bytes; /* java read buffer */
jint nread; /* number of bytes has been read */
while (1)
{
/* enter monitor */
if ((*env)->MonitorEnter(env, obj_this) != 0)
{
ThrowException(env,
"java/lang/RuntimeException",
"native pipe cannot synchronize on the object");
break;
}
state = INMONITOR;
/* check connection state */
npipe = getPipe(env, obj_this);
if ((*env)->ExceptionOccurred(env) != NULL)
break;
if (npipe == NULL)
{
ThrowException(env,
"com/sun/star/io/IOException",
"native pipe is not connected");
break;
}
/* aquire pipe */
osl_acquirePipe( npipe );
state = AQUIRED;
/* allocate a buffer */
if ((nbuff = malloc(len)) == NULL)
{
ThrowException(env,
"java/lang/RuntimeException",
"native pipe out of memory");
break;
}
state = GOTBUFFER;
/* exit monitor */
(*env)->MonitorExit(env, obj_this);
/* reading */
nread = osl_readPipe(npipe, nbuff, len);
/* enter monitor again */
if ((*env)->MonitorEnter(env, obj_this) != 0)
{
ThrowException(env,
"java/lang/RuntimeException",
"native pipe cannot synchronize on the object");
break;
}
/* copy buffer */
if (nread >= 0)
{
bytes = (*env)->NewByteArray(env, len);
if (bytes == NULL)
{
ThrowException(env,
"java/lang/RuntimeException",
"native pipe out of memory");
break;
}
/* save the data */
(*env)->SetByteArrayRegion(env, bytes, 0, len, nbuff);
(*env)->SetObjectArrayElement(env, buffer, 0, bytes);
(*env)->DeleteLocalRef(env, bytes);
}
/* done */
free(nbuff);
if ( state >= AQUIRED )
osl_releasePipe( npipe );
/* exit monitor */
(*env)->MonitorExit(env, obj_this);
return nread;
}
switch (state)
{
case GOTBUFFER:
free(nbuff);
case INMONITOR:
(*env)->MonitorExit(env, obj_this);
case START:
default:
break;
}
return -1;
}
/*****************************************************************************/
/*
* Class: com_sun_star_lib_connections_pipe_PipeConnection
* Method: writeJNI
* Signature: ([B)V
*/
JNIEXPORT void JNICALL Java_com_sun_star_lib_connections_pipe_PipeConnection_writeJNI
(JNIEnv * env, jobject obj_this, jbyteArray buffer)
{
enum {
START = 0,
INMONITOR,
GOTBUFFER
};
short state = START;
oslPipe npipe; /* native pipe */
long count; /* number of bytes has been written */
jsize nwrite; /* number of bytes to write */
jbyte * nbuff; /* native buffer */
while (1)
{
if ((*env)->MonitorEnter(env, obj_this) != 0)
{
ThrowException(env,
"java/lang/RuntimeException",
"native pipe cannot synchronize on the object");
break;
}
state = INMONITOR;
/* check connection state */
npipe = getPipe(env, obj_this);
if ((*env)->ExceptionOccurred(env) != NULL)
break;
if (npipe == NULL)
{
ThrowException(env,
"com/sun/star/io/IOException",
"native pipe is not connected");
break;
}
nwrite = (*env)->GetArrayLength(env, buffer);
if (nwrite > 0)
{
nbuff = (*env)->GetByteArrayElements(env, buffer, NULL);
if (nbuff == NULL)
{
ThrowException(env,
"java/lang/RuntimeException",
"native pipe out of memory");
break;
}
state = GOTBUFFER;
(*env)->MonitorExit(env, obj_this);
/* writing */
count = osl_writePipe(npipe, nbuff, nwrite);
if ((*env)->MonitorEnter(env, obj_this) != 0)
{
ThrowException(env,
"java/lang/RuntimeException",
"native pipe cannot synchronize on the object");
break;
}
if (count != nwrite)
{
ThrowException(env,
"com/sun/star/io/IOException",
"native pipe is failed to write");
break;
}
}
/* done */
(*env)->ReleaseByteArrayElements(env, buffer, nbuff, JNI_ABORT);
(*env)->MonitorExit(env, obj_this);
return;
}
switch (state)
{
case GOTBUFFER:
(*env)->ReleaseByteArrayElements(env, buffer, nbuff, JNI_ABORT);
case INMONITOR:
(*env)->MonitorExit(env, obj_this);
case START:
default:
break;
}
return;
}
/*****************************************************************************/
/*
* Class: com_sun_star_lib_connections_pipe_PipeConnection
* Method: flushJNI
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_com_sun_star_lib_connections_pipe_PipeConnection_flushJNI
(JNIEnv * env, jobject obj_this)
{
return;
}
More information about the Ale
mailing list