Skip to content

Commit

Permalink
Fix ttyname method which is unusable (SEGV crash), fixes #8
Browse files Browse the repository at this point in the history
  • Loading branch information
gnodet committed Mar 16, 2017
1 parent f825e18 commit 5f76e86
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/main/java/org/fusesource/jansi/internal/CLibrary.java
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ public class CLibrary {
public static native int isatty(
@JniArg int fd);

@JniMethod(conditional="defined(HAVE_TTYNAME)")
@JniMethod(conditional="FALSE")
public static native String ttyname(
@JniArg int filedes);

Expand Down
36 changes: 36 additions & 0 deletions src/main/native-package/src/jansi_ttyname.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
/*******************************************************************************
* Copyright (C) 2017, the original author(s).
*
* Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*******************************************************************************/
#include "jansi.h"
#include "hawtjni.h"
#include "jansi_structs.h"
#include "jansi_stats.h"

#define CLibrary_NATIVE(func) Java_org_fusesource_jansi_internal_CLibrary_##func

#if defined(HAVE_TTYNAME)
JNIEXPORT jstring JNICALL CLibrary_NATIVE(ttyname)
(JNIEnv *env, jclass that, jint arg0)
{
jstring rc = 0;
char s[256] = { 0 };
int r = 0;
CLibrary_NATIVE_ENTER(env, that, CLibrary_ttyname_FUNC);
r = ttyname_r(arg0, s, 256);
if (!r) rc = (*env)->NewStringUTF(env,s);
CLibrary_NATIVE_EXIT(env, that, CLibrary_ttyname_FUNC);
return rc;
}
#endif

0 comments on commit 5f76e86

Please sign in to comment.