newt on SuSE9.2
| From: | Johannes Schlueter | Date: | Mon, 03 Jan 2005 19:37:49 +0000 |
| Subject: | newt on SuSE9.2 | ||
| Groups: | php.pecl.dev | ||
| Request: | Send a blank email to pecl-dev+get-1773@lists.php.net to get a copy of this message | ||
Hi,
on my SuSE 9.2 box I've got newt-0.50.8-730 and newt-devel-0.50.8-730. But
ext/newt didn't compile since some constant declarations didn't work and the
newtExitStruct is defined as
struct newtExitStruct {
enum { NEWT_EXIT_HOTKEY, NEWT_EXIT_COMPONENT, NEWT_EXIT_FDREADY,
NEWT_EXIT_TIMER } reason;
union {
int key;
newtComponent co;
} u;
} ;
so accessing es.u.watch didn't work. Additionally there was a wrong pointer
type warning since newtWinEntry is defined as
struct newtWinEntry {
char * text;
char ** value; /* may be initialized to set default */
int flags;
};
and value was a const char**.
I've attached a patch which compiles without an error and makes your examples
work on my box.
johannes
P.S. If the patch didn't come through: It's available via
http://johannes.schlueters.de/newt_compile_suse92.diff
, too.
? newt_compile_suse92.diff Index: config.m4 =================================================================== RCS file: /repository/pecl/newt/config.m4,v retrieving revision 1.7 diff -u -r1.7 config.m4 --- config.m4 14 Oct 2004 19:04:04 -0000 1.7 +++ config.m4 3 Jan 2005 20:30:56 -0000 @@ -73,5 +73,15 @@ PHP_CHECK_LIBRARY(newt, newtResizeScreen, [AC_DEFINE(HAVE_NEWT_RESIZE_SCREEN,1,[ ])],, [-L$NEWT_DIR/lib]) PHP_CHECK_LIBRARY(newt, newtListboxItemCount, [AC_DEFINE(HAVE_NEWT_LISTBOX_ITEM_COUNT,1,[ ])],, [-L$NEWT_DIR/lib]) + AC_MSG_CHECKING([if newtExistStruct has u.watch]) + AC_TRY_COMPILE([ +#include <newt.h> + ], [static struct newtExitStruct es; es.u.watch = 0; return 0], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no]) + AC_DEFINE(MISSING_NEWTEXITSTRUCT_U_WATCH, 1, [ ])] + ) + + PHP_NEW_EXTENSION(newt, newt.c newt_vcall.c, $ext_shared, cli) fi Index: newt.c =================================================================== RCS file: /repository/pecl/newt/newt.c,v retrieving revision 1.41 diff -u -r1.41 newt.c --- newt.c 28 Dec 2004 17:16:51 -0000 1.41 +++ newt.c 3 Jan 2005 20:30:58 -0000 @@ -376,20 +376,36 @@ REGISTER_NEWT_CONSTANT(NEWT_FLAG_MULTIPLE); REGISTER_NEWT_CONSTANT(NEWT_FLAG_SELECTED); REGISTER_NEWT_CONSTANT(NEWT_FLAG_CHECKBOX); +#ifdef NEWT_FLAG_PASSWORD REGISTER_NEWT_CONSTANT(NEWT_FLAG_PASSWORD); +#endif #ifdef NEWT_FLAG_SHOWCURSOR REGISTER_NEWT_CONSTANT(NEWT_FLAG_SHOWCURSOR); #endif REGISTER_NEWT_CONSTANT(NEWT_FD_READ); REGISTER_NEWT_CONSTANT(NEWT_FD_WRITE); +#ifdef NEWT_FD_EXCEPT REGISTER_NEWT_CONSTANT(NEWT_FD_EXCEPT); +#endif +#ifdef NEWT_CHECKBOXTREE_UNSELECTABLE REGISTER_NEWT_CONSTANT(NEWT_CHECKBOXTREE_UNSELECTABLE); +#endif +#ifdef NEWT_CHECKBOXTREE_HIDE_BOX REGISTER_NEWT_CONSTANT(NEWT_CHECKBOXTREE_HIDE_BOX); +#endif +#ifdef NEWT_CHECKBOXTREE_COLLAPSED REGISTER_NEWT_CONSTANT(NEWT_CHECKBOXTREE_COLLAPSED); +#endif +#ifdef NEWT_CHECKBOXTREE_EXPANDED REGISTER_NEWT_CONSTANT(NEWT_CHECKBOXTREE_EXPANDED); +#endif +#ifdef NEWT_CHECKBOXTREE_UNSELECTED REGISTER_NEWT_CONSTANT(NEWT_CHECKBOXTREE_UNSELECTED); +#endif +#ifdef NEWT_CHECKBOXTREE_SELECTED REGISTER_NEWT_CONSTANT(NEWT_CHECKBOXTREE_SELECTED); +#endif /* Backwards compatibility */ REGISTER_NEWT_CONSTANT(NEWT_LISTBOX_RETURNEXIT); @@ -2466,7 +2482,9 @@ MAKE_STD_ZVAL(z_component); ZVAL_LONG(z_reason, es.reason); +#ifndef MISSING_NEWTEXITSTRUCT_U_WATCH ZVAL_LONG(z_watch, es.u.watch); +#endif ZVAL_LONG(z_key, es.u.key); php_newt_fetch_resource (z_component, es.u.co, le_newt_comp); @@ -3497,7 +3515,7 @@ } items[i].text = Z_STRVAL_PP(z_item_text); - items[i].value = (const char **)&Z_STRVAL_PP(z_item_value); + items[i].value = (char **)&Z_STRVAL_PP(z_item_value); items[i].flags = (z_item_flags ? Z_LVAL_PP(z_item_flags) : 0); i++;
? newt_compile_suse92.diff Index: config.m4 =================================================================== RCS file: /repository/pecl/newt/config.m4,v retrieving revision 1.7 diff -u -r1.7 config.m4 --- config.m4 14 Oct 2004 19:04:04 -0000 1.7 +++ config.m4 3 Jan 2005 20:30:56 -0000 @@ -73,5 +73,15 @@ PHP_CHECK_LIBRARY(newt, newtResizeScreen, [AC_DEFINE(HAVE_NEWT_RESIZE_SCREEN,1,[ ])],, [-L$NEWT_DIR/lib]) PHP_CHECK_LIBRARY(newt, newtListboxItemCount, [AC_DEFINE(HAVE_NEWT_LISTBOX_ITEM_COUNT,1,[ ])],, [-L$NEWT_DIR/lib]) + AC_MSG_CHECKING([if newtExistStruct has u.watch]) + AC_TRY_COMPILE([ +#include <newt.h> + ], [static struct newtExitStruct es; es.u.watch = 0; return 0], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no]) + AC_DEFINE(MISSING_NEWTEXITSTRUCT_U_WATCH, 1, [ ])] + ) + + PHP_NEW_EXTENSION(newt, newt.c newt_vcall.c, $ext_shared, cli) fi Index: newt.c =================================================================== RCS file: /repository/pecl/newt/newt.c,v retrieving revision 1.41 diff -u -r1.41 newt.c --- newt.c 28 Dec 2004 17:16:51 -0000 1.41 +++ newt.c 3 Jan 2005 20:30:58 -0000 @@ -376,20 +376,36 @@ REGISTER_NEWT_CONSTANT(NEWT_FLAG_MULTIPLE); REGISTER_NEWT_CONSTANT(NEWT_FLAG_SELECTED); REGISTER_NEWT_CONSTANT(NEWT_FLAG_CHECKBOX); +#ifdef NEWT_FLAG_PASSWORD REGISTER_NEWT_CONSTANT(NEWT_FLAG_PASSWORD); +#endif #ifdef NEWT_FLAG_SHOWCURSOR REGISTER_NEWT_CONSTANT(NEWT_FLAG_SHOWCURSOR); #endif REGISTER_NEWT_CONSTANT(NEWT_FD_READ); REGISTER_NEWT_CONSTANT(NEWT_FD_WRITE); +#ifdef NEWT_FD_EXCEPT REGISTER_NEWT_CONSTANT(NEWT_FD_EXCEPT); +#endif +#ifdef NEWT_CHECKBOXTREE_UNSELECTABLE REGISTER_NEWT_CONSTANT(NEWT_CHECKBOXTREE_UNSELECTABLE); +#endif +#ifdef NEWT_CHECKBOXTREE_HIDE_BOX REGISTER_NEWT_CONSTANT(NEWT_CHECKBOXTREE_HIDE_BOX); +#endif +#ifdef NEWT_CHECKBOXTREE_COLLAPSED REGISTER_NEWT_CONSTANT(NEWT_CHECKBOXTREE_COLLAPSED); +#endif +#ifdef NEWT_CHECKBOXTREE_EXPANDED REGISTER_NEWT_CONSTANT(NEWT_CHECKBOXTREE_EXPANDED); +#endif +#ifdef NEWT_CHECKBOXTREE_UNSELECTED REGISTER_NEWT_CONSTANT(NEWT_CHECKBOXTREE_UNSELECTED); +#endif +#ifdef NEWT_CHECKBOXTREE_SELECTED REGISTER_NEWT_CONSTANT(NEWT_CHECKBOXTREE_SELECTED); +#endif /* Backwards compatibility */ REGISTER_NEWT_CONSTANT(NEWT_LISTBOX_RETURNEXIT); @@ -2466,7 +2482,9 @@ MAKE_STD_ZVAL(z_component); ZVAL_LONG(z_reason, es.reason); +#ifndef MISSING_NEWTEXITSTRUCT_U_WATCH ZVAL_LONG(z_watch, es.u.watch); +#endif ZVAL_LONG(z_key, es.u.key); php_newt_fetch_resource (z_component, es.u.co, le_newt_comp); @@ -3497,7 +3515,7 @@ } items[i].text = Z_STRVAL_PP(z_item_text); - items[i].value = (const char **)&Z_STRVAL_PP(z_item_value); + items[i].value = (char **)&Z_STRVAL_PP(z_item_value); items[i].flags = (z_item_flags ? Z_LVAL_PP(z_item_flags) : 0); i++;