PHP 5.2.4 + OCI8 Compile Issues on RHEL4

Hiya,
i've been looking around and can't really find anything to help with this issue, i have installed the oracle RPMS:
[root@proxy2 php-5.2.4]# rpm -qa | grep -i oracle
oracle-instantclient-basic-11.1.0.1-1
oracle-instantclient-devel-11.1.0.1-1
oracle-instantclient-odbc-11.1.0.1-1
oracle-instantclient-sqlplus-11.1.0.1-1
the configure line works fine:
./configure \
     --with-oci8=$ORACLE_HOME \
     --with-mysql \
     --with-apxs2=/usr/local/apache2/bin/apxs \
     --enable-ftp \
     --with-curl \
     --enable-sockets \
     --with-tidy \
     --enable-sigchild
yet when attempting to run make a whole load of errors in the line of:
/source/php-5.2.4/ext/oci8/oci8.c: In function `php_oci_fetch_row':
/source/php-5.2.4/ext/oci8/oci8.c:1680: error: `z_statement' undeclared (first use in this function)
/source/php-5.2.4/ext/oci8/oci8.c:1680: error: invalid type argument of `unary *'
/source/php-5.2.4/ext/oci8/oci8.c:1681: error: invalid operands to binary *
/source/php-5.2.4/ext/oci8/oci8.c:1682: error: `column' undeclared (first use in this function)
/source/php-5.2.4/ext/oci8/oci8.c:1683: error: `ub4' undeclared (first use in this function)
/source/php-5.2.4/ext/oci8/oci8.c:1683: error: syntax error before "nrows"
/source/php-5.2.4/ext/oci8/oci8.c:1687: error: `expected_args' undeclared (first use in this function)
/source/php-5.2.4/ext/oci8/oci8.c:1690: error: `ht' undeclared (first use in this function)
/source/php-5.2.4/ext/oci8/oci8.c:1695: error: `mode' undeclared (first use in this function)
/source/php-5.2.4/ext/oci8/oci8.c:1727: error: syntax error before ')' token
/source/php-5.2.4/ext/oci8/oci8.c:1727: error: `return_value' undeclared (first use in this function)
/source/php-5.2.4/ext/oci8/oci8.c:1729: error: `nrows' undeclared (first use in this function)
/source/php-5.2.4/ext/oci8/oci8.c:1735: error: request for member `ncolumns' in something not a structure or union
/source/php-5.2.4/ext/oci8/oci8.c:1747: error: `element' undeclared (first use in this function)
/source/php-5.2.4/ext/oci8/oci8.c:1749: error: syntax error before ')' token
/source/php-5.2.4/ext/oci8/oci8.c:1776: error: invalid type argument of `->'
/source/php-5.2.4/ext/oci8/oci8.c:1776: error: `orig_ptr' undeclared (first use in this function)
/source/php-5.2.4/ext/oci8/oci8.c:1776: error: syntax error before ')' token
/source/php-5.2.4/ext/oci8/oci8.c:1776: error: invalid type argument of `unary *'
/source/php-5.2.4/ext/oci8/oci8.c:1776: warning: passing arg 1 of `_zval_copy_ctor' makes pointer from integer without a cast
/source/php-5.2.4/ext/oci8/oci8.c:1776: error: invalid type argument of `->'
/source/php-5.2.4/ext/oci8/oci8.c:1776: error: invalid type argument of `->'
/source/php-5.2.4/ext/oci8/oci8.c:1776: error: invalid type argument of `->'
/source/php-5.2.4/ext/oci8/oci8.c:1776: error: invalid type argument of `->'
/source/php-5.2.4/ext/oci8/oci8.c:1776: warning: passing arg 1 of `_zval_dtor' makes pointer from integer without a cast
/source/php-5.2.4/ext/oci8/oci8.c:1776: error: invalid type argument of `unary *'
/source/php-5.2.4/ext/oci8/oci8.c:1776: warning: passing arg 1 of `_zval_copy_ctor' makes pointer from integer without a cast
/source/php-5.2.4/ext/oci8/oci8.c:1776: error: invalid type argument of `->'
/source/php-5.2.4/ext/oci8/oci8.c:1776: error: invalid type argument of `->'
/source/php-5.2.4/ext/oci8/oci8.c:1778: error: request for member `ncolumns' in something not a structure or union
/source/php-5.2.4/ext/oci8/oci8.c: In function `php_oci_persistent_helper':
/source/php-5.2.4/ext/oci8/oci8.c:1788: error: `connection' undeclared (first use in this function)
/source/php-5.2.4/ext/oci8/oci8.c:1793: error: syntax error before ')' token
/source/php-5.2.4/ext/oci8/oci8.c:1796: error: request for member `in_call' in something not a structure or union
/source/php-5.2.4/ext/oci8/oci8.c:1822: error: request for member `persistent_timeout' in something not a structure or union
/source/php-5.2.4/ext/oci8/oci8.c:1823: error: request for member `persistent_timeout' in something not a structure or union
/source/php-5.2.4/ext/oci8/oci8.c:1826: error: request for member `ping_interval' in something not a structure or union
/source/php-5.2.4/ext/oci8/oci8.c:1827: error: request for member `ping_interval' in something not a structure or union
/source/php-5.2.4/ext/oci8/oci8.c:1835: error: request for member `persistent_timeout' in something not a structure or union
make: *** [ext/oci8/oci8.lo] Error 1
(there is more before that!)
Any clues on what might be the cause of this? i have also attempted getting the latest PHP oci8 package from http://pecl.php.net/package/oci8 but alas no luck.
Can anyone enlighten me on how to correct this? Thanks in advance!
Regards,
Shadi Almosri

More Debugging information incase it helps, this is the process i am taking to run the compile.
[root@proxy2 php-5.2.4]# make distclean
find . -name \*.gcno -o -name \*.gcda | xargs rm -f
find . -name \*.lo -o -name \*.o | xargs rm -f
find . -name \*.la -o -name \*.a | xargs rm -f
find . -name \*.so | xargs rm -f
find . -name .libs -a -type d|xargs rm -rf
rm -f libphp5.la sapi/cli/php libphp5.la modules/* libs/*
rm -f config.cache config.log config.status Makefile.objects Makefile.fragments libtool main/php_config.h stamp-h php5.spec sapi/apache/libphp5.module buildmk.stamp
grep -E define'.*include/php' /source/php-5.2.4/configure | /bin/sed 's/.*>//'|xargs rm -f
find . -name Makefile | xargs rm -f
[root@proxy2 php-5.2.4]# ./buildconf --force
Forcing buildconf
using default Zend directory
buildconf: checking installation...
buildconf: autoconf version 2.59 (ok)
buildconf: Your version of autoconf likely contains buggy cache code.
Running cvsclean for you.
To avoid this, install autoconf-2.13.
rebuilding configure
aclocal.m4:2141: PHP_PROG_LEX is expanded from...
[root@proxy2 php-5.2.4]# export ORACLE_HOME=/usr/lib/oracle/11.1.0.1/client
[root@proxy2 php-5.2.4]# export LD_LIBRARY_PATH=/usr/lib/oracle/11.1.0.1/client/lib
[root@proxy2 php-5.2.4]# ./configure \
--with-oci8=$ORACLE_HOME \
--with-mysql \
--with-apxs2=/usr/local/apache2/bin/apxs \
--enable-ftp \
--with-curl \
--enable-sockets \
--with-tidy \
--enable-sigchildconfigure completes with no errors with these outputs related to OCI:
checking for Oracle (OCI8) support... yes
checking PHP version... 5.2.4, ok
checking Oracle Install Directory... /usr/lib/oracle/11.1.0.1/client
checking if we're on a 64-bit platform... no
checking OCI8 libraries dir... lib
checking Oracle version... 11.1
checking for OCILobIsTemporary in -lclntsh... yes
checking for OCICollAssign in -lclntsh... yes
[root@proxy2 php-5.2.4]# make
Then the errors start from here:
/bin/sh /source/php-5.2.4/libtool silent preserve-dup-deps --mode=compile gcc  -Iext/oci8/ -I/source/php-5.2.4/ext/oci8/ -DPHP_ATOM_INC -I/source/php-5.2.4/include -I/source/php-5.2.4/main -I/source/php-5.2.4 -I/usr/include/libxml2 -I/source/php-5.2.4/ext/date/lib -I/usr/include/mysql -I/source/php-5.2.4/TSRM -I/source/php-5.2.4/Zend    -I/usr/include -g -O2  -prefer-non-pic -c /source/php-5.2.4/ext/oci8/oci8.c -o ext/oci8/oci8.lo
In file included from /source/php-5.2.4/ext/oci8/oci8.c:50:
/source/php-5.2.4/ext/oci8/php_oci8_int.h:56:17: oci.h: No such file or directory
In file included from /source/php-5.2.4/ext/oci8/oci8.c:50:
/source/php-5.2.4/ext/oci8/php_oci8_int.h:101: error: syntax error before "OCIEnv"
/source/php-5.2.4/ext/oci8/php_oci8_int.h:101: warning: no semicolon at end of struct or union
/source/php-5.2.4/ext/oci8/oci8.c:1826: error: request for member `ping_interval' in something not a structure or union
/source/php-5.2.4/ext/oci8/oci8.c:1827: error: request for member `ping_interval' in something not a structure or union
/source/php-5.2.4/ext/oci8/oci8.c:1835: error: request for member `persistent_timeout' in something not a structure or union
make: *** [ext/oci8/oci8.lo] Error 1
[root@proxy2 php-5.2.4]#

Similar Messages

  • PHP5.2.4 with oci8 Compiling issues

    Hi I had installed apache .2.0.54 rpm and installed oracle-instantclient-basic and oracle-instantclient-devel and compliled php-5.2.4 with the follwoing options
    sudo ./configure with-oci8=instantclient,/usr/lib/oracle/10.2.0.3/client/lib/  prefix=/opt/php with-apxs2=/usr/local/apache2/bin/apxs     enable-sigchild --with-config-file-path=/etc/httpd/conf
    Make gives a error
    /usr/bin/ld: skipping incompatible /usr/lib/oracle/10.2.0.3/client/lib//libclntsh.so when searching for -lclntsh
    /usr/bin/ld: cannot find -lclntsh
    collect2: ld returned 1 exit status
    make: *** [libphp5.la] Error 1

    Hi Cj
    Thx As you told i followed the steps and Compiling issues is resolved and i had some other issue like oci8 extns was not visible in phpinfo.php and after Trial and error its started working.
    The reason for oci8 not visible is i httpd-devel was not installed , after installing httpd-devel and recompiling with the following options oci8 was enabled.
    ./configure \
    --with-oci8=instantclient,/opt/instantclient_10_2 \
    prefix=/opt/php   with-apxs2=/usr/sbin/apxs \
    enable-sigchild with-config-file-path=/etc/httpd/conf
    Thx for the Help :) :) :)
    Christian Jones
    Karthik

  • BPEL Composite compilation issues in SOA Suite 11.1.2

    I imported a SOA Composite BPEL project developed on SOA Suite 11.1.1 in SOA Suite 11.1.2. When compiling the project through ant using the "ant-sca-compile.xml" generated through JDev in 11.1.1 I am getting the following exception
    java.lang.NoClassDefFoundError: oracle/fabric/common/FabricException
    Caused by: java.lang.ClassNotFoundException: oracle.fabric.common.FabricException
         at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
         at java.security.AccessController.doPrivileged(Native Method)
         at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
         at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
         at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    Could not find the main class: oracle.soa.scac.ValidateComposite. Program will exit.
    Exception in thread "main"
    Have checked all my classpaths and jar's which are found to be in order. What can be the problem?

    I changed some of the paths in the build file but now I am having compilation issues. It says the classpath is not set correctly. But I have included all the jar's properly in the build.xml.
    Any pointers to where I might be going wrong?
    D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\build\ant-sca-compile.xml
    detokeniser:
    scac:
    [scac] Validating composite : 'D:/CommonTechServices/INT_ARCH/Construction/src/soa/CommonServices/NotificationServiceBpel/composite.xml'
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:14: package com.collaxa.cube does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:15: package com.collaxa.cube.engine does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:16: package com.collaxa.cube.engine.core.map does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:21: package com.collaxa.cube.engine.core does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:100: package com.collaxa.cube.engine.core.ICubeProcess does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:107: package com.collaxa.cube.engine.core.ICubeProcess does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:148: package com.collaxa.cube.engine.core does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:148: package com.collaxa.cube.engine does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:148: package com.collaxa.cube does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:390: package com.collaxa.cube.engine does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:390: package com.collaxa.cube does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:401: package com.collaxa.cube.engine.core.map does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:401: package com.collaxa.cube.engine does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:401: package com.collaxa.cube does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:841: package com.collaxa.cube.engine.core does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:841: package com.collaxa.cube.util does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:841: package com.collaxa.cube.engine does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:841: package com.collaxa.cube.util does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:857: package com.collaxa.cube.engine.ext.bpel.v1.blocks does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:872: package com.collaxa.cube.engine.core does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:872: package com.collaxa.cube.engine.core does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:872: package com.collaxa.cube.engine does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:872: package com.collaxa.cube.engine.core does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:900: package com.collaxa.cube.engine.core does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:900: package com.collaxa.cube.engine does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:930: package com.collaxa.cube.engine.ext.bpel.v1.blocks does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:941: package com.collaxa.cube.engine.core does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:941: package com.collaxa.cube.engine does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:990: package com.collaxa.cube.engine.ext.bpel.v1.blocks does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:1044: package com.collaxa.cube.engine.core does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:1044: package com.collaxa.cube.engine does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:1089: package com.collaxa.cube.engine.core does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:1089: package com.collaxa.cube.engine does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:1105: package com.collaxa.cube.engine.ext.bpel.v1.nodes does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:1122: package com.collaxa.cube.engine.core does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:1122: package com.collaxa.cube.engine does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:1122: package com.collaxa.cube does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:1300: package com.collaxa.cube.engine.ext.bpel.v1.blocks does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:1348: package com.collaxa.cube.engine.core does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:1348: package com.collaxa.cube.engine.core does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:1348: package com.collaxa.cube.engine does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:1348: package com.collaxa.cube.engine.core does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:1404: package com.collaxa.cube.engine.core does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:1404: package com.collaxa.cube.engine does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:1449: package com.collaxa.cube.engine.core does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:1449: package com.collaxa.cube.engine does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:1465: package com.collaxa.cube.engine.ext.bpel.v1.nodes does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:1509: package com.collaxa.cube.engine.types.bpel does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:1526: package com.collaxa.cube.engine.types.bpel does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:1553: package com.collaxa.cube.engine.ext.bpel.v1.blocks does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:1607: package com.collaxa.cube.engine.core does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:1607: package com.collaxa.cube.engine does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:1652: package com.collaxa.cube.engine.core does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:1652: package com.collaxa.cube.engine does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:1668: package com.collaxa.cube.engine.ext.bpel.v1.nodes does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:1685: package com.collaxa.cube.engine.core does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:1685: package com.collaxa.cube.engine does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:1685: package com.collaxa.cube does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:1780: package com.collaxa.cube.engine.ext.bpel.v1.nodes does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:1797: package com.collaxa.cube.engine.core does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:1797: package com.collaxa.cube.engine does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:1797: package com.collaxa.cube does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:1964: package com.collaxa.cube.engine.ext.bpel.v1.nodes does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:1981: package com.collaxa.cube.engine.core does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:1981: package com.collaxa.cube.engine does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:1981: package com.collaxa.cube does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:2154: package com.collaxa.cube.engine.ext.bpel.v1.blocks does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:2208: package com.collaxa.cube.engine.core does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:2208: package com.collaxa.cube.engine does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:2253: package com.collaxa.cube.engine.core does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:2253: package com.collaxa.cube.engine does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:2269: package com.collaxa.cube.engine.ext.bpel.v1.nodes does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:2286: package com.collaxa.cube.engine.core does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:2286: package com.collaxa.cube.engine does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:2286: package com.collaxa.cube does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:2381: package com.collaxa.cube.engine.ext.bpel.v1.nodes does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:2398: package com.collaxa.cube.engine.core does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:2398: package com.collaxa.cube.engine does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:2398: package com.collaxa.cube does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:2565: package com.collaxa.cube.engine.ext.bpel.v1.nodes does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:2582: package com.collaxa.cube.engine.core does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:2582: package com.collaxa.cube.engine does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:2582: package com.collaxa.cube does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:2755: package com.collaxa.cube.engine.ext.bpel.v1.blocks does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:2803: package com.collaxa.cube.engine.core does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:2803: package com.collaxa.cube.engine.core does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:2803: package com.collaxa.cube.engine does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:2803: package com.collaxa.cube.engine.core does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:2859: package com.collaxa.cube.engine.core does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:2859: package com.collaxa.cube.engine does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:2904: package com.collaxa.cube.engine.core does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:2904: package com.collaxa.cube.engine does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:2920: package com.collaxa.cube.engine.ext.bpel.v1.nodes does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:2964: package com.collaxa.cube.engine.types.bpel does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:2981: package com.collaxa.cube.engine.types.bpel does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:3008: package com.collaxa.cube.engine.ext.bpel.v1.blocks does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:3062: package com.collaxa.cube.engine.core does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:3062: package com.collaxa.cube.engine.core does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:3062: package com.collaxa.cube.engine does not exist
    [scac] D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\orabpe
    l\notificationservicebpel\BPEL_BIN.java:3062: package com.collaxa.cube.engine.core does not exist
    [scac] Note: D:\CommonTechServices\INT_ARCH\Construction\src\soa\CommonServices\NotificationServiceBpel\SCA-INF\bpel\NotificationServiceBpel\src\
    orabpel\notificationservicebpel\BPEL_BIN.java uses unchecked or unsafe operations.
    [scac] Note: Recompile with -Xlint:unchecked for details.
    [scac] FATAL_ERROR: location {ns:composite/ns:component[@name='NotificationServiceBpel']}(30,45): Failed to compile bpel generated classes.
    [scac] failure to compile the generated BPEL classes for BPEL process "NotificationServiceBpel" of composite "default/NotificationServiceBpel!1.0
    [scac] The class path setting is incorrect.
    [scac] Ensure that the class path is set correctly. If this happens on the server side, verify that the custom classes or jars which this BPEL pr
    ocess is depending on are deployed correctly. Also verify that the run time is using the same release/version.
    [scac]
    BUILD FAILED

  • Flash Builder 4.7 frequent compiler issues/restarts

    Basically Flash Builder 4.7 on Mac OSX 10.7.5 is unusable. Very frustrating.  Constant compiler issues that require frequent cleaning, closing of projects, restarts of FB, and even re-installs.  I've seen none of these issues on FB 4.6 with the same projects/code.
    The most common visible compiler errors are these two that randomly appear:
    1) An internal build error has occurred
    2) classes must not be nested
    I tried increasing memory as some have suggested, but this has no effect.
    It takes me 100 times longer to code now becuase every tiny code change cuases these errors.  Crazy!
    Before I revert back to FB 4.6, any suggestions? 
    Thanks,
    Don

    Hi!
    Close any unneeded projects in workspace.
    You can also split your large project to few libraries compiled into SWC. After compiling libraries, if not need to change often, close their projects. When such projects are closed main project compiling with just use of SWC libraries usually takes much less resources.

  • Com.sun.security.auth.module.NTSystem compilation issues in Unix

    Hi ,
    I m using com.sun.security.auth.module.NTSystem in one my java application to get the current domain. The application and app server are running on windows OS.
    Now i want to switch my OS to Unix, where i m getting compilation issues with com.sun.security.auth.module.NTSystem ,
    1)Do i need to change the module from NTSystem to UnixSystem?
    2) I m developing the java application in Eclipse 3.2 with java 1.4 , when i m trying to import the below statment com.sun.security.auth.module.UnixSystem i couldn't? Could you please let me how i can import the UnixSystem or NTSystem will work?
    Appreciate your help!!!!
    Regards,
    Ravi.

    Unix, where i m getting compilation issues with com.sun.security.auth.module.NTSystemOf course.
    Do i need to change the module from NTSystem to UnixSystem?Of course.

  • SAP RFC SDK 7.10 Compilation Issues

    Hello ,
    We have a Pro*C program that is using the RFC SDK 7.10
    When we are compiling our program with Pro*C Compiler in HP UX 11iv2 os we are getting the following errors:
    SAP_U16_PROTOTYPE_STDC(mkstemp)..1 PCC-S-02201, Encountered the symbol "mkstemp" when expecting one of the following: Error at line 1895, column 1 in file /home/psoni/rfcsdk-710/orgseclib/sapuc.h  SAP_U16_PROTOTYPE_UO(dirname) 1 
    PCC-S-02201, Encountered the symbol "SAP_U16_PROTOTYPE_UO_HLP" when expecting on
    e of the following: ; , = ( [ * ? | & < > + - / % . ^ *= /= %= += -= <<= >>= &&=
       ||= ^= | & == != <= >= << >> ++ -- ->
    The symbol ";" was substituted for "SAP_U16_PROTOTYPE_UO_HLP" to continue.
    Syntax error at line 1901, column 1, file /home/psoni/rfcsdk-710/orgseclib/sapuc.h:
    Error at line 1901, column 1 in file /home/psoni/rfcsdk-710/orgseclib/sapuc.h
    SAP_U16_PROTOTYPE(ecvt) 1
    PCC-S-02201, Encountered the symbol "extern" when expecting one of the following
    :   ; , = ( [ * ? | & < > + - / % . ^ *= /= %= += -= <<= >>= &&=
       ||= ^= | & == != <= >= << >> ++ -- ->
    I had checked the files sapuc.h and sapucx.h are correctly included in my program.
    Also I checked for the errors : that the reference of some constants like 
    SAP_U16_PROTOTYPE is present is sapuc.h - However I am not able to
    identify the cause of compilation issues.
    Please can anyone guide me - or give any hints as to how this compilation issues can be resolved.
    On sap rfc sdk version 6.20 with HPUnix 11iV1  we did not face such problems. Post that release  we have tried all libraries including 6.40  and all of them are giving the above errors.
    Thanks for the help.
    Regards,
    Shivani

    This compiler error looks really strange.
    Without your sources (of the affected file) and the full command line it's impossible to suggest something.
    Markus

  • Native extension - compiler issue

    Hi,
    First, I compile an iOS app with a native extension developped by ADOBE : http://www.adobe.com/devnet/air/native-extensions-for-air/extensions/vibration.html#articl econtentAdobe_numberedheader_3
    It's work well
    Then, I made myself the iOS library on xcode. It's OK as well
    Then, I made the ANE file following the tutorial http://custardbelly.com/blog/2011/09/21/air-native-extension-example-ibattery-for-ios/. It's seem OK
    I create my air app with Flash Builder. I load ANE, SWC...everything seem ok
    When I compile my Iphone Application with Flex, there is this error :
    An erreor appears during the application packaging (my translation):
    ld warning: in C:\\Users\\Tony\\AppData\\Local\\Temp\\c6468656-be35-4f05-8d51-0dd54063cefd/libcom.adobe. LEDTorch.a, file is not of required architecture
    Undefined symbols:
      "_ExtFinalizer", referenced from:
          _g_com_adobe_air_fre_fmap in extensionglue.o
      "_ExtInitializer", referenced from:
          _g_com_adobe_air_fre_fmap in extensionglue.o
    ld: symbol(s) not found
    Compilation failed while executing : ld64
    Someone could help me?
    I'm working on this bug for 2 days
    Thanks in advance !
    Emmanuel

    Hi,
    Apparently, the issue  is the following:  (find in the forum of
    http://www.liquid-photo.com/2011/10/28/native-extension-for-adobe-air-and-ios-101/#comment -322
    Apparently X-Code was trying to build NativeAlert.m as Objective-C++ source
    instead of Objective-C source. Silly mistake really. It took starting the
    project over again and trauling through the project settings to figure out
    what was wrong. Oh well, all sorted now.
    But i didn't succeed in setting the project with the corrects parameter.
    Could you help me?
    Thanks in advance
    Regards
    E.Fuchs
    2012/2/10 Saumitra Bhave <[email protected]>
       Re: Native extension - compiler issue  created by Saumitra Bhave<http://forums.adobe.com/people/SaumiB>in
    Mobile Development - View the full discussion<http://forums.adobe.com/message/4198519#4198519>

  • Pro*C - PERCENT_RANK() compilation issue

    Hello,
    I have a pro*C compilation issue, while using PERCENT_RANK() in-built function. I am using Oracle 10.2.0.4.
    Here are the details :
    The Pro*C code :
    ================================================== ========
    int srccct2_insert()
    EXEC SQL
    select * from (
    select
    trad_code,
    comp_code,
    file_code,
    insp_yymm,
    poly_numb,
    entr_numb,
    data_code,
    caus_date,
    insd_code,
    rule_ordr,
    sex_code,
    entr_age,
    resd_numb,
    entr_name,
    hire_date,
    entr_date,
    work_year,
    hire_grad,
    datt_entr,
    ijry_entr,
    wkdt_entr,
    base_saly,
    expt_amnt,
    rsrv_rato,
    rsrv_amnt,
    PERCENT_RANK() OVER (ORDER BY base_saly) pr FROM SRCCCT2 where trad_code = 'N' AND
    comp_code = '01' AND
    insp_yymm = '200403' AND
    data_code = 'B' AND
    hire_grad = '2' AND
    base_saly > 0)
    where pr > 0.05 and pr < 0.95 and base_saly > 641840;
    return SUCCESS;
    ================================================== ======
    I am compiling it like this :
    /oracle/product/10.2.0/bin/proc iname=srascs01.pc ireclen=320 oreclen=320 sqlcheck=full userid=retr/rteru maxopencursors=32 dbms=v8 char_map=varchar2 release_cursor=yes include=/oracle/product/10.2.0/precomp/public include=/ihome/hp/../common/include include=/ihome/retr/include include=/usr/include include=/ihome/hp/portlib DEFINE=HPUX
    I have put the same sql statements in the sql promt and it works fine. But in Pro*C when i compile it using above options, here is the error :
    ================================================== ======
    Pro*C/C++: Release 10.2.0.4.0 - Production on Thu Feb 25 00:57:42 2010
    Copyright (c) 1982, 2007, Oracle. All rights reserved.
    System default option values taken from: /oracle/product/10.2.0/precomp/admin/pcscfg.cfg
    Syntax error at line 192, column 28, file srascs01.pc:
    Error at line 192, column 28 in file srascs01.pc
    PERCENT_RANK() OVER (ORDER BY base_saly) pr
    ...........................1
    PCC-S-02201, Encountered the symbol "(" when expecting one of the following:
    , into, from,
    Error at line 0, column 0 in file srascs01.pc PCC-F-02102, Fatal error while doing C preprocessing
    *** Error exit code 1
    Stop.
    *** Error exit code 1
    Stop.
    ================================================== =======
    After searching in this website, i saw a related thread. But that solution did not work for me. I have posted a reply on that aswell, for Mark_Williams. Here is the related link:
    Re: help for analysis function in PRO*C
    Please help me on this.
    Thanks,
    Kumar

    Hi Sumit,
    Thanks much for a reply.
    I am very novice for Pro*C. Please bear with me, if i sound odd anywhere.
    I did check the program again. When i leave EXEC SQL and put the whole SELECT statement in double quotes and then postfix back slashes at each line in the SELECT statement, compilation succeeds. But I am just wondering, if this works fine, even if we don't use, "EXEC SQL" ?
    When we use "EXEC SQL" and double quotes also, there seems to be two double quotes before SELECT and so compilation fails, with the below error msg. I think "EXEC SQL" is also appending a double quote.(??)
    I did not really understand when you said "declaring the sql statement and calling EXEC SQL PREPARE". Are you talking about declaring the sql statement in sqlplus ?
    If the above method of removing "EXEC SQL" and using double quotes and slashes is correct, then i think we anyway need not do anything else as the compilation went through.
    Thanks again,
    -Kumar

  • Batik-related compiler issue

    <div class=Section1><br /><br /><p class=MsoNormal>I received this error calling the flex2.tools.Compiler&#8217;s<br />main[] method.  The MXML input compiles successfully in the Flex 2<br />builder.  I wanted to check to see if anyone had experienced this before<br />digging deeper into source code.<o:p></o:p></p><br /><br /><p class=MsoNormal><o:p> </o:p></p><br /><br /><p class=MsoNormal>--Scott<o:p></o:p></p><br /><br /><p class=MsoNormal><o:p> </o:p></p><br /><br /><p class=MsoNormal><o:p> </o:p></p><br /><br /><p class=MsoNormal><o:p> </o:p></p><br /><br /><p class=MsoNormal>------------------------------------------------------------------------- ----------------------<o:p></o:p></p><br /><br /><p class=MsoNormal><o:p> </o:p></p><br /><br /><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;<br />font-family:"Courier New";color:red'>Error:<br />org.apache.batik.css.parser.Parser.getLineNumber()I</span><span<br />style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p><br /><br /><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;<br />font-family:"Courier New"'><o:p> </o:p></span></p><br /><br /><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;<br />font-family:"Courier New";color:red'>java.lang.NoSuchMethodError:<br />org.apache.batik.css.parser.Parser.getLineNumber()I</span><span<br />style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p><br /><br /><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;<br />font-family:"Courier New";color:red'>      at<br />flash.css.StyleParser.getLineNumber(</span><u><span style='font-size:10.0pt;<br />font-family:"Courier New";color:navy'>StyleParser.java:208</span></u><span<br />style='font-size:10.0pt;font-family:"Courier New";color:red'>)</span><span<br />style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p><br /><br /><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;<br />font-family:"Courier New";color:red'>      at<br />flash.css.StyleDocumentHandler.startFontFace(</span><u><span style='font-size:<br />10.0pt;font-family:"Courier New";color:navy'>StyleDocumentHandler.java:100</span></u><span<br />style='font-size:10.0pt;font-family:"Courier New";color:red'>)</span><span<br />style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p><br /><br /><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;<br />font-family:"Courier New";color:red'>      at<br />org.apache.batik.css.parser.Parser.parseFontFaceRule(</span><u><span<br />style='font-size:10.0pt;font-family:"Courier New";color:navy'>Parser.java:484</span></u><span<br />style='font-size:10.0pt;font-family:"Courier New";color:red'>)</span><span<br />style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p><br /><br /><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;<br />font-family:"Courier New";color:red'>      at<br />org.apache.batik.css.parser.Parser.parseStyleSheet(</span><u><span<br />style='font-size:10.0pt;font-family:"Courier New";color:navy'>Parser.java:224</span></u><span<br />style='font-size:10.0pt;font-family:"Courier New";color:red'>)</span><span<br />style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p><br /><br /><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;<br />font-family:"Courier New";color:red'>      at flash.css.StyleParser.init(</span><u><span<br />style='font-size:10.0pt;font-family:"Courier New";color:navy'>StyleParser.java:172</span></u><span<br />style='font-size:10.0pt;font-family:"Courier New";color:red'>)</span><span<br />style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p><br /><br /><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;<br />font-family:"Courier New";color:red'>      at<br />flash.css.StyleParser.&lt;init&gt;(</span><u><span style='font-size:10.0pt;<br />font-family:"Courier New";color:navy'>StyleParser.java:106</span></u><span<br />style='font-size:10.0pt;font-family:"Courier New";color:red'>)</span><span<br />style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p><br /><br /><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;<br />font-family:"Courier New";color:red'>      at<br />flash.css.StyleSheet.parse(</span><u><span style='font-size:10.0pt;font-family:<br />"Courier New";color:navy'>StyleSheet.java:54</span></u><span style='font-size:<br />10.0pt;font-family:"Courier New";color:red'>)</span><span style='font-size:<br />10.0pt;font-family:"Courier New"'><o:p></o:p></span></p><br /><br /><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;<br />font-family:"Courier New";color:red'>      at<br />flex2.compiler.mxml.analyzer.SyntaxAnalyzer.parseStyle(</span><u><span<br />style='font-size:10.0pt;font-family:"Courier New";color:navy'>SyntaxAnalyzer.java:551</span></u><span<br />style='font-size:10.0pt;font-family:"Courier New";color:red'>)</span><span<br />style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p><br /><br /><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;<br />font-family:"Courier New";color:red'>      at<br />flex2.compiler.mxml.analyzer.SyntaxAnalyzer.analyze(</span><u><span<br />style='font-size:10.0pt;font-family:"Courier New";color:navy'>SyntaxAnalyzer.java:122</span></u><span<br />style='font-size:10.0pt;font-family:"Courier New";color:red'>)</span><span<br />style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p><br /><br /><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;<br />font-family:"Courier New";color:red'>      at<br />flex2.compiler.mxml.dom.StyleNode.analyze(</span><u><span style='font-size:<br />10.0pt;font-family:"Courier New";color:navy'>StyleNode.java:50</span></u><span<br />style='font-size:10.0pt;font-family:"Courier New";color:red'>)</span><span<br />style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p><br /><br /><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;<br />font-family:"Courier New";color:red'>      at<br />flex2.compiler.mxml.dom.AnalyzerAdapter.traverse(</span><u><span<br />style='font-size:10.0pt;font-family:"Courier New";color:navy'>AnalyzerAdapter.java:172</span></u><span<br />style='font-size:10.0pt;font-family:"Courier New";color:red'>)</span><span<br />style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p><br /><br /><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;<br />font-family:"Courier New";color:red'>      at<br />flex2.compiler.mxml.dom.AnalyzerAdapter.analyze(</span><u><span<br />style='font-size:10.0pt;font-family:"Courier New";color:navy'>AnalyzerAdapter.java:164</span></u><span<br />style='font-size:10.0pt;font-family:"Courier New";color:red'>)</span><span<br />style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p><br /><br /><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;<br />font-family:"Courier New";color:red'>      at<br />flex2.compiler.mxml.analyzer.SyntaxAnalyzer.analyze(</span><u><span<br />style='font-size:10.0pt;font-family:"Courier New";color:navy'>SyntaxAnalyzer.java:55</span></u><span<br />style='font-size:10.0pt;font-family:"Courier New";color:red'>)</span><span<br />style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p><br /><br /><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;<br />font-family:"Courier New";color:red'>      at<br />flex2.compiler.mxml.dom.Node.analyze(</span><u><span style='font-size:10.0pt;<br />font-family:"Courier New";color:navy'>Node.java:47</span></u><span<br />style='font-size:10.0pt;font-family:"Courier New";color:red'>)</span><span<br />style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p><br /><br /><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;<br />font-family:"Courier New";color:red'>      at<br />flex2.compiler.mxml.InterfaceCompiler.parse1(</span><u><span style='font-size:<br />10.0pt;font-family:"Courier New";color:navy'>InterfaceCompiler.java:222</span></u><span<br />style='font-size:10.0pt;font-family:"Courier New";color:red'>)</span><span<br />style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p><br /><br /><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;<br />font-family:"Courier New";color:red'>      at<br />flex2.compiler.mxml.Compiler.parse1(</span><u><span style='font-size:10.0pt;<br />font-family:"Courier New";color:navy'>Compiler.java:95</span></u><span<br />style='font-size:10.0pt;font-family:"Courier New";color:red'>)</span><span<br />style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p><br /><br /><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;<br />font-family:"Courier New";color:red'>      at<br />flex2.compiler.API.parse1(</span><u><span style='font-size:10.0pt;font-family:<br />"Courier New";color:navy'>API.java:2306</span></u><span style='font-size:10.0pt;<br />font-family:"Courier New";color:red'>)</span><span style='font-size:10.0pt;<br />font-family:"Courier New"'><o:p></o:p></span></p><br /><br /><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;<br />font-family:"Courier New";color:red'>      at<br />flex2.compiler.API.parse1(</span><u><span style='font-size:10.0pt;font-family:<br />"Courier New";color:navy'>API.java:2259</span></u><span style='font-size:10.0pt;<br />font-family:"Courier New";color:red'>)</span><span style='font-size:10.0pt;<br />font-family:"Courier New"'><o:p></o:p></span></p><br /><br /><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;<br />font-family:"Courier New";color:red'>      at<br />flex2.compiler.API.batch2(</span><u><span style='font-size:10.0pt;font-family:<br />"Courier New";color:navy'>API.java:367</span></u><span style='font-size:10.0pt;<br />font-family:"Courier New";color:red'>)</span><span style='font-size:10.0pt;<br />font-family:"Courier New"'><o:p></o:p></span></p><br /><br /><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;<br />font-family:"Courier New";color:red'>      at<br />flex2.compiler.API.batch(</span><u><span style='font-size:10.0pt;font-family:<br />"Courier New";color:navy'>API.java:1108</span></u><span style='font-size:10.0pt;<br />font-family:"Courier New";color:red'>)</span><span style='font-size:10.0pt;<br />font-family:"Courier New"'><o:p></o:p></span></p><br /><br /><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;<br />font-family:"Courier New";color:red'>      at<br />flex2.compiler.API.compile(</span><u><span style='font-size:10.0pt;font-family:<br />"Courier New";color:navy'>API.java:1281</span></u><span style='font-size:10.0pt;<br />font-family:"Courier New";color:red'>)</span><span style='font-size:10.0pt;<br />font-family:"Courier New"'><o:p></o:p></span></p><br /><br /><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;<br />font-family:"Courier New";color:red'>      at<br />flex2.compiler.API.compile(</span><u><span style='font-size:10.0pt;font-family:<br />"Courier New";color:navy'>API.java:1201</span></u><span style='font-size:10.0pt;<br />font-family:"Courier New";color:red'>)</span><span style='font-size:10.0pt;<br />font-family:"Courier New"'><o:p></o:p></span></p><br /><br /><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;<br />font-family:"Courier New";color:red'>      at<br />flex2.tools.Compiler.mxmlc(</span><u><span style='font-size:10.0pt;font-family:<br />"Courier New";color:navy'>Compiler.java:240</span></u><span style='font-size:<br />10.0pt;font-family:"Courier New";color:red'>)</span><span style='font-size:<br />10.0pt;font-family:"Courier New"'><o:p></o:p></span></p><br /><br /><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;<br />font-family:"Courier New";color:red'>      at<br />flex2.tools.Compiler.main(</span><u><span style='font-size:10.0pt;font-family:<br />"Courier New";color:navy'>Compiler.java:53</span></u><span style='font-size:<br />10.0pt;font-family:"Courier New";color:red'>)</span><span style='font-size:<br />10.0pt;font-family:"Courier New"'><o:p></o:p></span></p><br /><br /><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;<br />font-family:"Courier New";color:red'>      at<br />net.sf.jasperreports.export.flex.JRSwfExporter.exportReportToStream(</span><u><span<br />style='font-size:10.0pt;font-family:"Courier New";color:navy'>JRSwfExporter.java:268</span></u><span<br />style='font-size:10.0pt;font-family:"Courier New";color:red'>)</span><span<br />style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p><br /><br /><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New";<br />color:red'>      at net.sf.jasperreports.export.flex.JRSwfExporter.exportReport(</span><u><span<br />style='font-size:10.0pt;font-family:"Courier New";color:navy'>JRSwfExporter.java:177</span></u><span<br />style='font-size:10.0pt;font-family:"Courier New";color:red'>)</span><o:p></o:p></p><br /><br /></div>

    Would you provide some details on how you’re calling this, which branch (e.g. Compiler is now known as Mxmlc on the trunk)? You need to have all libs from trunk/lib on the classpath.
    - Jono
    From: chauncy <[email protected]>
    Reply-To: <[email protected]>
    Date: Thu, 17 Apr 2008 10:31:31 -0700
    To: <[email protected]>
    Subject: Batik-related compiler issue
    A new discussion was started by chauncy in
    Developers --
      Batik-related compiler issue
    I received this error calling the flex2.tools.Compiler’s main[] method.  The MXML input compiles successfully in the Flex 2 builder.  I wanted to check to see if anyone had experienced this before digging deeper into source code.
    --Scott
    Error: org.apache.batik.css.parser.Parser.getLineNumber()I
    java.lang.NoSuchMethodError: org.apache.batik.css.parser.Parser.getLineNumber()I
          at flash.css.StyleParser.getLineNumber(
    StyleParser.java:208
          at flash.css.StyleDocumentHandler.startFontFace(
    StyleDocumentHandler.java:100
          at org.apache.batik.css.parser.Parser.parseFontFaceRule(
    Parser.java:484
          at org.apache.batik.css.parser.Parser.parseStyleSheet(
    Parser.java:224
          at flash.css.StyleParser.init(
    StyleParser.java:172
          at flash.css.StyleParser.<init>(
    StyleParser.java:106
          at flash.css.StyleSheet.parse(
    StyleSheet.java:54
          at flex2.compiler.mxml.analyzer.SyntaxAnalyzer.parseStyle(
    SyntaxAnalyzer.java:551
          at flex2.compiler.mxml.analyzer.SyntaxAnalyzer.analyze(
    SyntaxAnalyzer.java:122
          at flex2.compiler.mxml.dom.StyleNode.analyze(
    StyleNode.java:50
          at flex2.compiler.mxml.dom.AnalyzerAdapter.traverse(
    AnalyzerAdapter.java:172
          at flex2.compiler.mxml.dom.AnalyzerAdapter.analyze(
    AnalyzerAdapter.java:164
          at flex2.compiler.mxml.analyzer.SyntaxAnalyzer.analyze(
    SyntaxAnalyzer.java:55
          at flex2.compiler.mxml.dom.Node.analyze(
    Node.java:47
          at flex2.compiler.mxml.InterfaceCompiler.parse1(
    InterfaceCompiler.java:222
          at flex2.compiler.mxml.Compiler.parse1(
    Compiler.java:95
          at flex2.compiler.API.parse1(
    API.java:2306
          at flex2.compiler.API.parse1(
    API.java:2259
          at flex2.compiler.API.batch2(
    API.java:367
          at flex2.compiler.API.batch(
    API.java:1108
          at flex2.compiler.API.compile(
    API.java:1281
          at flex2.compiler.API.compile(
    API.java:1201
          at flex2.tools.Compiler.mxmlc(
    Compiler.java:240
          at flex2.tools.Compiler.main(
    Compiler.java:53
          at net.sf.jasperreports.export.flex.JRSwfExporter.exportReportToStream(
    JRSwfExporter.java:268
          at net.sf.jasperreports.export.flex.JRSwfExporter.exportReport(
    JRSwfExporter.java:177
    View/reply at Batik-related compiler issue
    <http://www.adobeforums.com/webx?13@@.59b50561>
    Replies by email are OK.
    Use the unsubscribe
    <http://www.adobeforums.com/webx?280@@.59b50561!folder=.3c060fa3>  form to cancel your email subscription.

  • "Occasionally" successful compilation issue on sun4v machine.

    Hi,
    I have created a thread on JSP section of the forum for this.
    Intermittently successful JSP compilation issue
    But I am putting the link here too because the only difference between the success and failed case is the platform we are using. We are using Solaris SPARC machines.
    The compilation is a success on sun4u machine.
    But on sun4v is mostly a failure (sometimes it succeeds though strangely).
    I will be very grateful if you can go through the thread I have shared above and share some pointers on this.
    Regards

    Post Author: usaitconsultant
    CA Forum: JAVA
    Hi Ted,
    Thanks for the reply.The file is not available in the server. Though, I checked CMS and I found an instance in history tab and the status is failed with error below. 
                Error Message:
                A variable prevented the data provider Query 1 with BANRRD30 from being refreshed. (DMA0008).When I checked my codes, I found out that the object Im using is for web intelligence data provider. However, I cannot find any documentation and example for passing parameter values in desktop intelligence data provider. Any idea on this? You think this is not suported by Report Engine SDK?Thanks.    

  • [svn:fx-4.x] 14245: * Fixed inactive incremental compilation issue where library changes

    Revision: 14245
    Revision: 14245
    Author:   [email protected]
    Date:     2010-02-18 08:53:00 -0800 (Thu, 18 Feb 2010)
    Log Message:
    Fixed inactive incremental compilation issue where library changes
      were not causing application recompilation.
    QE notes: We should add a JUnit OEM API test for this scenario.
    Doc notes:
    Bugs: SDK-25513
    Reviewer: Pete F.
    Tests run: checkintests
    Is noteworthy for integration: yes, affects active incremental
                                   compilation from FB.
    Code-level description of changes:
      Modified the loadCompilationUnits() used by
      flex2.tools.oem.Application to pass the "sources" and "units" args
      down, so that the PersistenceStore can populate them.  This is
      necessary to get OEMUtil.isRecompilationNeeded() called in
      Application.recompile().
    Ticket Links:
        http://bugs.adobe.com/jira/browse/SDK-25513
    Modified Paths:
        flex/sdk/branches/4.x/modules/compiler/src/java/flex2/compiler/CompilerAPI.java

    Dear Pallavi,
    Very useful post!
    I am looking for similar accelerators for
    Software Inventory Accelerator
    Hardware Inventory Accelerator
    Interfaces Inventory
    Customization Assessment Accelerator
    Sizing Tool
    Which helps us to come up with the relevant Bill of Matetials for every area mentioned above, and the ones which I dont know...
    Request help on such accelerators... Any clues?
    Any reply, help is highly appreciated.
    Regards
    Manish Madhav

  • JDev compilation issue

    When I compile my project I get this error message
    Error: Exception thrown in Javac: Unknown cause
    Do you have any idea on what to look for since the error message does not help?
    JDev 11.1.1.6.0

    There was no stacktrace. So finally I recreated the project under eclipse and find out the compilation issue. The issue was merging SVN code delimiter like <<< .mine that causes the issue.

  • Strange PHP compile issue -- old MySQL client version

    I've successfully compiled PHP 5.2.8 from source on two Xserve G5s running 10.4.11. It seems to run all the web apps fine. But when I look at phpinfo(), it reports that the MySQL Client API version is 4.1.22. Previously, when using Marc Liyanage's package version (5.2.4), the MySQL Client API was something like 5.0.45 (at least reasonably current with the MySQL version I had installed).
    So I have two main questions:
    1. What determines the PHP's MySQL Client API version? Is it some code in the PHP source that gets compiled? (In which case, why is the latest PHP source using an old MySQL Client.)
    2. How can I make the PHP I compiled use the latest MySQL Client API version? (Since I've seen warnings that this could cause problems. Incidentally, I'm using MySQL 5.0.67.)
    If it helps, here are the compile options I've used, per instructions online ( http://downloads.topicdesk.com/docs/UpdatingPHP_on_OS_XServer.pdf ):
    ./configure --prefix=/usr/local/php5 --mandir=/usr/share/man --infodir=/usr/share/info --with-apxs --with-ldap=/usr --with-kerberos=/usr --enable-cli --with-zlib-dir=/usr --with-libxml-dir=/usr --enable-exif --enable-ftp --enable-mbstring --enable-sockets --enable-fastcgi --with-iodbc=/usr --with-curl=/usr --with-config-file-path=/private/etc --with-mysql=/usr --with-mysql-sock=/var/mysql/mysql.sock
    I can post the config.log as well if that's helpful.
    ...Rene

    I'm posting this information here as its the top hit when searching apple.com for mac php recompile
    There is a MUCH easier/safer way to install a missing php module then doing a full recompile. Please see and read the comments:
    http://www.pagebakers.nl/2008/12/17/installing-php-soap-extension-on-leopard-10- 5-5/#comment-4931

  • OCI8 compile errors on SLES 10

    I'm stuck. New to Linux, so the error messages are greek. I've googled for days. Can anyone decipher the issue here? Thanks in advance for any help!!
    Used RPM to install instant client 10.2.0.4 (user didn't want v11).
    PHP 5.2.5 installed.
    Used yast to install php5-dev pacakge
    Receive the following output when trying to install oci8 using pecl (sorry it's so long, but I didn't know which part was important - and I did delete a chunk out of the middle that seemed repetitive, since there is a character limit in this forum...):
    +<server>:~ # pecl install oci8+
    downloading oci8-1.3.5.tar ...
    Starting to download oci8-1.3.5.tar (Unknown size)
    +.............................................done: 1,071,616 bytes+
    +10 source files, building+
    running: phpize
    Configuring for:
    PHP Api Version:         20041225
    Zend Module Api No:      20060613
    Zend Extension Api No:   220060519
    +1. Please provide the path to the ORACLE_HOME directory. Use+
    +'instantclient,/path/to/instant/client/lib' if you're compiling with Oracle Instant+
    Client : autodetect
    +1-1, 'all', 'abort', or Enter to continue:+
    building in /var/tmp/pear-build-<username>/oci8-1.3.5
    +running: /tmp/pear/cache/oci8-1.3.5/configure --with-oci8+
    checking for egrep... grep -E
    checking for a sed that does not truncate output... /usr/bin/sed
    checking for gcc... gcc
    checking for C compiler default output file name... a.out
    checking whether the C compiler works... yes
    checking whether we are cross compiling... no
    checking for suffix of executables...
    checking for suffix of object files... o
    checking whether we are using the GNU C compiler... yes
    checking whether gcc accepts -g... yes
    checking for gcc option to accept ANSI C... none needed
    checking whether gcc and cc understand -c and -o together... yes
    checking for system library directory... lib
    checking if compiler supports -R... no
    checking if compiler supports -Wl,-rpath,... yes
    checking build system type... i686-suse-linux
    checking host system type... i686-suse-linux
    checking target system type... i686-suse-linux
    checking for PHP prefix... /usr
    checking for PHP includes... -I/usr/include/php5 -I/usr/include/php5/main
    -I/usr/include/php5/TSRM -I/usr/include/php5/Zend -I/usr/include/php5/ext
    -I/usr/include/php5/ext/date/lib
    checking for PHP extension directory... /usr/lib/php5/extensions
    checking for PHP installed headers prefix... /usr/include/php5
    checking for re2c... no
    configure: WARNING: You will need re2c 0.12.0 or later if you want to regenerate
    PHP parsers.
    checking for gawk... gawk
    checking for Oracle (OCI8) support... yes, shared
    checking PHP version... 5.2.5, ok
    checking how to run the C preprocessor... gcc -E
    checking for ANSI C header files... yes
    checking for sys/types.h... yes
    checking for sys/stat.h... yes
    checking for stdlib.h... yes
    checking for string.h... yes
    checking for memory.h... yes
    checking for strings.h... yes
    checking for inttypes.h... yes
    checking for stdint.h... yes
    checking for unistd.h... yes
    checking for long int... yes
    checking size of long int... 4
    checking checking if we're on a 64-bit platform... no
    checking Oracle ORACLE_HOME install directory... /usr/lib/oracle/10.2.0.4/client
    checking ORACLE_HOME library validity... lib
    checking Oracle version... 10.1
    checking for ld used by gcc... /usr/i586-suse-linux/bin/ld
    checking if the linker (/usr/i586-suse-linux/bin/ld) is GNU ld... yes
    checking for /usr/i586-suse-linux/bin/ld option to reload object files... -r
    checking for BSD-compatible nm... /usr/bin/nm -B
    checking whether ln -s works... yes
    checking how to recognise dependent libraries... pass_all
    checking dlfcn.h usability... yes
    checking dlfcn.h presence... yes
    checking for dlfcn.h... yes
    checking for g77... no
    checking for f77... no
    checking for xlf... no
    checking for frt... no
    checking for pgf77... no
    checking for fort77... no
    checking for fl32... no
    checking for af77... no
    checking for f90... no
    checking for xlf90... no
    checking for pgf90... no
    checking for epcf90... no
    checking for f95... no
    checking for fort... no
    checking for xlf95... no
    checking for ifc... no
    checking for efc... no
    checking for pgf95... no
    checking for lf95... no
    checking for gfortran... gfortran
    checking whether we are using the GNU Fortran 77 compiler... yes
    checking whether gfortran accepts -g... yes
    checking the maximum length of command line arguments... 32768
    checking command to parse /usr/bin/nm -B output from gcc object... ok
    checking for objdir... .libs
    checking for ar... ar
    checking for ranlib... ranlib
    checking for strip... strip
    checking if gcc supports -fno-rtti -fno-exceptions... no
    checking for gcc option to produce PIC... -fPIC
    checking if gcc PIC flag -fPIC works... yes
    checking if gcc static flag -static works... yes
    checking if gcc supports -c -o file.o... yes
    checking whether the gcc linker (/usr/i586-suse-linux/bin/ld) supports shared
    libraries... yes
    checking whether -lc should be explicitly linked in... no
    checking dynamic linker characteristics... cat: /etc/ld.so.conf.d/*.conf: No such
    file or directory
    GNU/Linux ld.so
    checking how to hardcode library paths into programs... immediate
    checking whether stripping libraries is possible... yes
    checking if libtool supports shared libraries... yes
    checking whether to build shared libraries... yes
    checking whether to build static libraries... no
    configure: creating libtool
    appending configuration tag "CXX" to libtool
    appending configuration tag "F77" to libtool
    checking if libtool supports shared libraries... yes
    checking whether to build shared libraries... yes
    checking whether to build static libraries... no
    checking for gfortran option to produce PIC... -fPIC
    checking if gfortran PIC flag -fPIC works... yes
    checking if gfortran static flag -static works... yes
    checking if gfortran supports -c -o file.o... yes
    checking whether the gfortran linker (/usr/i586-suse-linux/bin/ld) supports shared
    libraries... yes
    checking dynamic linker characteristics... cat: /etc/ld.so.conf.d/*.conf: No such
    file or directory
    GNU/Linux ld.so
    checking how to hardcode library paths into programs... immediate
    configure: creating ./config.status
    config.status: creating config.h
    running: make
    +/bin/sh /var/tmp/pear-build-<username>/oci8-1.3.5/libtool --mode=compile gcc  -I.+
    -I/tmp/pear/cache/oci8-1.3.5 -DPHP_ATOM_INC
    -I/var/tmp/pear-build-<username>/oci8-1.3.5/include
    -I/var/tmp/pear-build-<username>/oci8-1.3.5/main -I/tmp/pear/cache/oci8-1.3.5
    -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM
    -I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib
    -DHAVE_CONFIG_H  -g -O2   -c /tmp/pear/cache/oci8-1.3.5/oci8.c -o oci8.lo
    mkdir .libs
    gcc -I. -I/tmp/pear/cache/oci8-1.3.5 -DPHP_ATOM_INC
    -I/var/tmp/pear-build-<username>/oci8-1.3.5/include
    -I/var/tmp/pear-build-<username>/oci8-1.3.5/main -I/tmp/pear/cache/oci8-1.3.5
    -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM
    -I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib
    -DHAVE_CONFIG_H -g -O2 -c /tmp/pear/cache/oci8-1.3.5/oci8.c  -fPIC -DPIC -o
    +.libs/oci8.o+
    In file included from /tmp/pear/cache/oci8-1.3.5/oci8.c:51:
    +/tmp/pear/cache/oci8-1.3.5/php_oci8_int.h:56:17: error: oci.h: No such file or+
    directory
    In file included from /tmp/pear/cache/oci8-1.3.5/oci8.c:51:
    specifier-qualifier-list before 'text'
    +/tmp/pear/cache/oci8-1.3.5/php_oci8_int.h:183: error: expected+
    function)
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:992: error: (Each undeclared identifier is+
    reported only once
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:992: error: for each function it appears in.)+
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:992: error: expected ';' before 'errstatus'+
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:993: error: 'sb4' undeclared (first use in this+
    named 'env'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:1042: error: called object+
    +'<erroneous-expression>' is not a function+
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:1042: error: 'OCI_HTYPE_ENV' undeclared (first+
    use in this function)
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:1044: error: 'zend_oci_globals' has no member+
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2392: error: 'php_oci_out_column' has no+
    member named 'retlen'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2392: warning: assignment makes integer from+
    pointer without a cast
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2401: error: 'php_oci_out_column' has no+
    member named 'data'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2401: warning: initialization from incompatible+
    pointer type
    +/tmp/pear/cache/oci8-1.3.5/oci8.c: In function 'php_oci_fetch_row':+
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2416: error: 'ub4' undeclared (first use in this+
    function)
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2416: error: expected ';' before 'nrows'+
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2462: error: 'nrows' undeclared (first use in this+
    function)
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2462: error: too many arguments to function+
    +'php_oci_statement_fetch'+
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2468: error: 'php_oci_statement' has no+
    member named 'ncolumns'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2468: warning: comparison between pointer and+
    integer
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2475: error: 'php_oci_out_column' has no+
    member named 'idle_expiry'
    named 'debug_mode'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2568: error: 'zend_oci_globals' has no member+
    named 'in_call'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2568: error: 'zend_oci_globals' has no member+
    named 'errcode'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2568: error: 'php_oci_spool' has no member+
    named 'env'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2568: error: 'dvoid' undeclared (first use in this+
    function)
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2568: error: expected expression before ')'+
    token
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2568: error: invalid operands to binary *+
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2568: error: 'zend_oci_globals' has no member+
    named 'in_call'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2570: error: 'zend_oci_globals' has no member+
    named 'errcode'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2570: error: 'OCI_SUCCESS' undeclared (first+
    use in this function)
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2571: error: 'zend_oci_globals' has no member+
    named 'err'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2571: error: 'zend_oci_globals' has no member+
    named 'errcode'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2580: error: 'zend_oci_globals' has no member+
    named 'debug_mode'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2580: error: 'zend_oci_globals' has no member+
    named 'in_call'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2580: error: 'zend_oci_globals' has no member+
    named 'errcode'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2580: error: expected expression before ')'+
    token
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2580: error: invalid operands to binary *+
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2580: error: 'zend_oci_globals' has no member+
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2592: error: 'OCI_SPC_HOMOGENEOUS'+
    undeclared (first use in this function)
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2598: error: 'zend_oci_globals' has no member+
    named 'debug_mode'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2598: error: 'zend_oci_globals' has no member+
    named 'in_call'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2598: error: 'zend_oci_globals' has no member+
    named 'errcode'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2598: error: 'OraText' undeclared (first use in+
    this function)
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2598: error: expected expression before ')'+
    token
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2598: error: invalid operands to binary *+
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2598: error: 'zend_oci_globals' has no member+
    named 'in_call'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2600: error: 'zend_oci_globals' has no member+
    named 'persistent_timeout'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2608: error: expected ';' before 'timeout'+
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2610: error: 'zend_oci_globals' has no member+
    named 'debug_mode'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2610: error: 'zend_oci_globals' has no member+
    named 'in_call'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2610: error: 'zend_oci_globals' has no member+
    named 'errcode'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2610: error: expected expression before ')'+
    token
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2610: error: invalid operands to binary *+
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2610: error: 'zend_oci_globals' has no member+
    named 'in_call'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2612: error: 'zend_oci_globals' has no member+
    named 'errcode'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2613: error: 'zend_oci_globals' has no member+
    named 'err'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2613: error: 'zend_oci_globals' has no member+
    named 'errcode'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2625: error: 'zend_oci_globals' has no member+
    named 'debug_mode'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c: In function 'php_oci_get_spool':+
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2680: error: 'php_oci_spool' has no member+
    named 'spool_hash_key'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2680: error: 'php_oci_spool' has no member+
    named 'spool_hash_key'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2680: warning: passing argument 1 of 'strlen'+
    from incompatible pointer type
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2680: warning: passing argument 2 of+
    +'_zend_hash_add_or_update' from incompatible pointer type+
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2682: error: 'php_oci_spool' has no member+
    named 'spool_hash_key'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2682: warning: passing argument 1 of 'strlen'+
    from incompatible pointer type
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2683: error: 'php_oci_spool' has no member+
    named 'spool_hash_key'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c: At top level:+
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2703: error: expected '=', ',', ';', 'asm' or+
    +'__attribute__' before '*' token+
    +/tmp/pear/cache/oci8-1.3.5/oci8.c: In function 'php_oci_old_create_session':+
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2728: error: 'ub4' undeclared (first use in this+
    function)
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2728: error: expected ';' before+
    +'statement_cache_size'+
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2730: error: 'zend_oci_globals' has no member+
    named 'debug_mode'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2735: error: 'php_oci_connection' has no+
    member named 'env'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2735: error: 'php_oci_connection' has no+
    member named 'charset'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2740: error: 'zend_oci_globals' has no member+
    named 'debug_mode'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2740: error: 'zend_oci_globals' has no member+
    named 'in_call'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2740: error: 'zend_oci_globals' has no member+
    named 'errcode'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2740: error: 'php_oci_connection' has no+
    member named 'env'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2740: error: 'dvoid' undeclared (first use in this+
    function)
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2740: error: expected expression before ')'+
    token
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2740: error: invalid operands to binary *+
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2740: error: 'zend_oci_globals' has no member+
    named 'in_call'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2742: error: 'zend_oci_globals' has no member+
    named 'errcode'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2742: error: 'OCI_SUCCESS' undeclared (first+
    named 'in_call'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2748: error: 'zend_oci_globals' has no member+
    named 'errcode'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2748: error: 'php_oci_connection' has no+
    named 'errcode'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2792: error: expected expression before ')'+
    token
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2792: error: invalid operands to binary *+
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2792: error: 'zend_oci_globals' has no member+
    named 'in_call'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2794: error: 'zend_oci_globals' has no member+
    named 'debug_mode'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2801: error: 'zend_oci_globals' has no member+
    named 'in_call'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2801: error: 'zend_oci_globals' has no member+
    named 'errcode'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2801: error: 'php_oci_connection' has no+
    member named 'svc'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2801: error: 'OCI_HTYPE_SVCCTX' undeclared+
    +(first use in this function)+
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2801: error: 'php_oci_connection' has no+
    member named 'server'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2801: error: 'OCI_ATTR_SERVER' undeclared+
    +(first use in this function)+
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2801: error: 'zend_oci_globals' has no member+
    named 'errcode'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2809: error: 'php_oci_connection' has no+
    member named 'svc'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2809: error: 'php_oci_connection' has no+
    member named 'session'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2809: error: 'OCI_ATTR_SESSION' undeclared+
    +(first use in this function)+
    named 'errcode'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2818: error: 'php_oci_connection' has no+
    member named 'svc'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2818: error: 'zend_oci_globals' has no member+
    named 'err'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2818: error: expected expression before ')'+
    token
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2818: error: invalid operands to binary *+
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2818: error: 'zend_oci_globals' has no member+
    named 'in_call'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2820: error: 'zend_oci_globals' has no member+
    named 'errcode'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2821: error: 'zend_oci_globals' has no member+
    named 'errcode'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2825: error: expected expression before ')'+
    token
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2825: error: invalid operands to binary *+
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2825: error: 'zend_oci_globals' has no member+
    named 'errcode'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2833: error: expected ';' before 'cred_type'+
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2837: error: 'cred_type' undeclared (first use in+
    this function)
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2837: error: 'OCI_CRED_EXT' undeclared (first+
    use in this function)
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2841: error: 'OCI_STMT_CACHE' undeclared+
    +(first use in this function)+
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2841: error: invalid operands to binary |+
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2841: error: incompatible types in assignment+
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2843: error: 'zend_oci_globals' has no member+
    named 'errcode'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2843: error: 'php_oci_connection' has no+
    member named 'svc'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2843: error: 'zend_oci_globals' has no member+
    named 'err'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2843: error: 'php_oci_connection' has no+
    member named 'session'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2843: error: expected ')' before 'cred_type'+
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2843: error: 'zend_oci_globals' has no member+
    named 'in_call'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2845: error: 'zend_oci_globals' has no member+
    named 'errcode'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2850: error: 'OCI_SUCCESS_WITH_INFO'+
    undeclared (first use in this function)
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2857: error: 'zend_oci_globals' has no member+
    named 'err'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2857: warning: comparison between pointer and+
    integer
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2858: error: 'zend_oci_globals' has no member+
    named 'in_call'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2862: error: 'zend_oci_globals' has no member+
    named 'errcode'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2862: error: expected expression before ')'+
    token
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2862: error: invalid operands to binary *+
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2862: error: 'zend_oci_globals' has no member+
    named 'in_call'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2864: error: 'zend_oci_globals' has no member+
    named 'err'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2991: error: 'ub1' undeclared (first use in this+
    function)
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2991: error: expected expression before ')'+
    token
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2991: error: invalid operands to binary *+
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2991: error: 'zend_oci_globals' has no member+
    named 'in_call'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2992: error: 'zend_oci_globals' has no member+
    named 'errcode'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2993: error: 'zend_oci_globals' has no member+
    named 'errcode'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2997: error: 'php_oci_connection' has no+
    member named 'next_pingp'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2999: error: 'zend_oci_globals' has no member+
    named 'err'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:2999: warning: comparison between pointer and+
    named 'errcode'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:3003: error: 'php_oci_connection' has no+
    member named 'next_pingp'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:3003: error: invalid operands to binary >+
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:3003: error: 'php_oci_connection' has no+
    member named 'next_pingp'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:3003: error: invalid operands to binary >=+
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:3006: error: 'php_oci_connection' has no+
    member named 'next_pingp'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:3006: error: 'zend_oci_globals' has no member+
    named 'spool_hash_key'
    +/tmp/pear/cache/oci8-1.3.5/oci8.c: At top level:+
    +/tmp/pear/cache/oci8-1.3.5/oci8.c:3082: error: expected '=', ',', ';', 'asm' or+
    +'__attribute__' before 'php_oci_ping_init'+
    +make: *** [oci8.lo] Error 1+
    ERROR: `make' failed
    +<server>:~ #+

    Unset ORACLE_HOME. It should not be set for Instant Client (except in one rare case).
    Also instead of leaving the install to "autodetect", try using the form "instantclient,/usr/lib/oracle/10.2.0.4/client/lib". See http://blogs.oracle.com/opal/2009/03/pecl_install_prompts_explained.html for a discussion of answering the PECL install prompts.
    Also see http://www.oracle.com/technology/pub/notes/technote_php_instant.html
    and http://www.oracle.com/technology/tech/php/pdf/underground-php-oracle-manual.pdf

  • Dwm 5.9 Compilation issues

    Ok guys, I really need your help.
    I am currently with dwm 5.8.2 (everything's fine) and I downloaded 5.9 via ABS.
    I launched a makepkg under ~/dwm. And next, I tried to apply this patch called pertag2. diff: https://github.com/simongmzlj/dwmhacks/ … rtag2.diff
    It succeeded. Used:
    patch -p1 < pertag2.diff
    And I modified my config.h as jokerboy suggested me here: https://bbs.archlinux.org/viewtopic.php … 45#p960545
    I haven't others patches.
    But when I try to compile it, I got many errors messages.
    dwm build options:
    CFLAGS = -std=c99 -pedantic -Wall -Os -I. -I/usr/include -I/usr/include/X11 -DVERSION="5.9" -DXINERAMA
    LDFLAGS = -s -L/usr/lib -lc -L/usr/lib/X11 -lX11 -L/usr/lib/X11 -lXinerama
    CC = cc
    CC dwm.c
    In file included from dwm.c:293:0:
    config.h:31:16: erreur: ‘tile’ undeclared here (not in a function)
    dwm.c: In function ‘buttonpress’:
    dwm.c:450:9: erreur: request for member ‘name’ in something not a structure or union
    dwm.c:450:9: erreur: request for member ‘name’ in something not a structure or union
    dwm.c:450:4: attention : passing argument 1 of ‘strlen’ from incompatible pointer type [enabled by default]
    /usr/include/string.h:399:15: note: expected ‘const char *’ but argument is of type ‘const struct Layout *’
    dwm.c:450:4: attention : passing argument 1 of ‘textnw’ from incompatible pointer type [enabled by default]
    dwm.c:236:12: note: expected ‘const char *’ but argument is of type ‘const struct Layout *’
    dwm.c: In function ‘createmon’:
    dwm.c:686:29: erreur: request for member ‘mfact’ in something not a structure or union
    dwm.c:686:36: attention : comparaison ordonnée de pointeur avec le zéro entier [-pedantic]
    dwm.c:686:61: erreur: request for member ‘mfact’ in something not a structure or union
    dwm.c:686:48: erreur: non concordance de type dans une expression conditionnelle
    dwm.c:686:16: erreur: incompatible types when assigning to type ‘double’ from type ‘const struct Layout *’
    dwm.c:686:3: attention : statement with no effect [-Wunused-value]
    dwm.c:687:31: erreur: request for member ‘nmaster’ in something not a structure or union
    dwm.c:687:40: attention : comparaison ordonnée de pointeur avec le zéro entier [-pedantic]
    dwm.c:687:46: erreur: ‘nmaster’ undeclared (first use in this function)
    dwm.c:687:46: note: each undeclared identifier is reported only once for each function it appears in
    dwm.c:687:67: erreur: request for member ‘nmaster’ in something not a structure or union
    dwm.c:687:18: attention : assignment makes integer from pointer without a cast [enabled by default]
    dwm.c:688:26: erreur: request for member ‘layout’ in something not a structure or union
    dwm.c: In function ‘drawbar’:
    dwm.c:767:10: erreur: request for member ‘name’ in something not a structure or union
    dwm.c:767:10: erreur: request for member ‘name’ in something not a structure or union
    dwm.c:767:3: attention : passing argument 1 of ‘strlen’ from incompatible pointer type [enabled by default]
    /usr/include/string.h:399:15: note: expected ‘const char *’ but argument is of type ‘const struct Layout *’
    dwm.c:767:3: attention : passing argument 1 of ‘textnw’ from incompatible pointer type [enabled by default]
    dwm.c:236:12: note: expected ‘const char *’ but argument is of type ‘const struct Layout *’
    dwm.c:769:19: erreur: request for member ‘name’ in something not a structure or union
    dwm.c:769:3: attention : passing argument 1 of ‘drawtext’ from incompatible pointer type [enabled by default]
    dwm.c:190:13: note: expected ‘const char *’ but argument is of type ‘const struct Layout *’
    dwm.c: Hors de toute fonction :
    dwm.c:1550:1: attention : ‘setnmaster’ defined but not used [-Wunused-function]
    dwm.c:1539:1: attention : ‘incnmaster’ defined but not used [-Wunused-function]
    dwm.c:1691:1: attention : ‘ntile’ defined but not used [-Wunused-function]
    make: *** [dwm.o] Erreur 1
    Here my config.h:
    /* See LICENSE file for copyright and license details. */
    /* appearance */
    static const char font[] = "-*-terminus-medium-r-*-*-16-*-*-*-*-*-*-*";
    static const char normbordercolor[] = "#cccccc";
    static const char normbgcolor[] = "#cccccc";
    static const char normfgcolor[] = "#000000";
    static const char selbordercolor[] = "#0066ff";
    static const char selbgcolor[] = "#0066ff";
    static const char selfgcolor[] = "#ffffff";
    static const unsigned int borderpx = 1; /* border pixel of windows */
    static const unsigned int snap = 32; /* snap pixel */
    static const Bool showbar = True; /* False means no bar */
    static const Bool topbar = True; /* False means bottom bar */
    static const Rule rules[] = {
    /* class instance title tags mask isfloating monitor */
    { "Gimp", NULL, NULL, 0, True, -1 },
    { "Firefox", NULL, NULL, 1 << 8, False, -1 },
    /* layout(s) */
    static const int nmaster = 1; /* clients in the master area */
    static const float mfact = 0.55; /* factor of master area size [0.05..0.95] */
    static const Bool resizehints = True; /* True means respect size hints in tiled resizals */
    static const Layout layouts[] = {
    /* symbol arrange function */
    { "[]=", tile }, /* first entry is default */
    { "><>", NULL }, /* no layout function means floating behavior */
    { "[M]", monocle },
    { "[N]", ntile },
    /* tagging */
    static const Tag tags[] = {
    /* name layout mfact nmaster */
    { "1", &layouts[0], -1, -1 },
    { "2", &layouts[1], -1, -1 },
    { "3", &layouts[2], -1, -1 },
    { "4", &layouts[3], 0.40, -1 },
    { "5", &layouts[0], -1, -1 },
    { "6", &layouts[0], -1, -1 },
    { "7", &layouts[0], -1, -1 },
    { "8", &layouts[0], -1, -1 },
    { "9", &layouts[0], -1, -1 },
    /* key definitions */
    #define MODKEY Mod1Mask
    #define TAGKEYS(KEY,TAG) \
    { MODKEY, KEY, view, {.ui = 1 << TAG} }, \
    { MODKEY|ControlMask, KEY, toggleview, {.ui = 1 << TAG} }, \
    { MODKEY|ShiftMask, KEY, tag, {.ui = 1 << TAG} }, \
    { MODKEY|ControlMask|ShiftMask, KEY, toggletag, {.ui = 1 << TAG} },
    /* helper for spawning shell commands in the pre dwm-5.0 fashion */
    #define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }
    /* commands */
    static const char *dmenucmd[] = { "dmenu_run", "-fn", font, "-nb", normbgcolor, "-nf", normfgcolor, "-sb", selbgcolor, "-sf", selfgcolor, NULL };
    static const char *termcmd[] = { "uxterm", NULL };
    static Key keys[] = {
    /* modifier key function argument */
    { MODKEY, XK_p, spawn, {.v = dmenucmd } },
    { MODKEY|ShiftMask, XK_Return, spawn, {.v = termcmd } },
    { MODKEY, XK_b, togglebar, {0} },
    { MODKEY, XK_j, focusstack, {.i = +1 } },
    { MODKEY, XK_k, focusstack, {.i = -1 } },
    { MODKEY, XK_a, incnmaster, {.i = +1 } },
    { MODKEY, XK_z, incnmaster, {.i = -1 } },
    { MODKEY, XK_h, setmfact, {.f = -0.05} },
    { MODKEY, XK_l, setmfact, {.f = +0.05} },
    { MODKEY, XK_Return, zoom, {0} },
    { MODKEY, XK_Tab, view, {0} },
    { MODKEY|ShiftMask, XK_c, killclient, {0} },
    { MODKEY, XK_t, setlayout, {.v = &layouts[0]} },
    { MODKEY, XK_f, setlayout, {.v = &layouts[1]} },
    { MODKEY, XK_m, setlayout, {.v = &layouts[2]} },
    { MODKEY, XK_n, setlayout, {.v = &layouts[3]} },
    { MODKEY, XK_space, setlayout, {0} },
    { MODKEY|ShiftMask, XK_space, togglefloating, {0} },
    { MODKEY, XK_0, view, {.ui = ~0 } },
    { MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } },
    { MODKEY, XK_comma, focusmon, {.i = -1 } },
    { MODKEY, XK_period, focusmon, {.i = +1 } },
    { MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } },
    { MODKEY|ShiftMask, XK_period, tagmon, {.i = +1 } },
    TAGKEYS( XK_1, 0)
    TAGKEYS( XK_2, 1)
    TAGKEYS( XK_3, 2)
    TAGKEYS( XK_4, 3)
    TAGKEYS( XK_5, 4)
    TAGKEYS( XK_6, 5)
    TAGKEYS( XK_7, 6)
    TAGKEYS( XK_8, 7)
    TAGKEYS( XK_9, 8)
    { MODKEY|ShiftMask, XK_q, quit, {0} },
    /* button definitions */
    /* click can be ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, or ClkRootWin */
    static Button buttons[] = {
    /* click event mask button function argument */
    { ClkLtSymbol, 0, Button1, setlayout, {0} },
    { ClkLtSymbol, 0, Button3, setlayout, {.v = &layouts[2]} },
    { ClkWinTitle, 0, Button2, zoom, {0} },
    { ClkStatusText, 0, Button2, spawn, {.v = termcmd } },
    { ClkClientWin, MODKEY, Button1, movemouse, {0} },
    { ClkClientWin, MODKEY, Button2, togglefloating, {0} },
    { ClkClientWin, MODKEY, Button3, resizemouse, {0} },
    { ClkTagBar, 0, Button1, view, {0} },
    { ClkTagBar, 0, Button3, toggleview, {0} },
    { ClkTagBar, MODKEY, Button1, tag, {0} },
    { ClkTagBar, MODKEY, Button3, toggletag, {0} },
    dwm.c
    /* See LICENSE file for copyright and license details.
    * dynamic window manager is designed like any other X client as well. It is
    * driven through handling X events. In contrast to other X clients, a window
    * manager selects for SubstructureRedirectMask on the root window, to receive
    * events about window (dis-)appearance. Only one X connection at a time is
    * allowed to select for this event mask.
    * The event handlers of dwm are organized in an array which is accessed
    * whenever a new event has been fetched. This allows event dispatching
    * in O(1) time.
    * Each child of the root window is called a client, except windows which have
    * set the override_redirect flag. Clients are organized in a linked client
    * list on each monitor, the focus history is remembered through a stack list
    * on each monitor. Each client contains a bit array to indicate the tags of a
    * client.
    * Keys and tagging rules are organized as arrays and defined in config.h.
    * To understand everything else, start reading main().
    #include <errno.h>
    #include <locale.h>
    #include <stdarg.h>
    #include <signal.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/wait.h>
    #include <X11/cursorfont.h>
    #include <X11/keysym.h>
    #include <X11/Xatom.h>
    #include <X11/Xlib.h>
    #include <X11/Xproto.h>
    #include <X11/Xutil.h>
    #ifdef XINERAMA
    #include <X11/extensions/Xinerama.h>
    #endif /* XINERAMA */
    /* macros */
    #define BUTTONMASK (ButtonPressMask|ButtonReleaseMask)
    #define CLEANMASK(mask) (mask & ~(numlockmask|LockMask) & (ShiftMask|ControlMask|Mod1Mask|Mod2Mask|Mod3Mask|Mod4Mask|Mod5Mask))
    #define INRECT(X,Y,RX,RY,RW,RH) ((X) >= (RX) && (X) < (RX) + (RW) && (Y) >= (RY) && (Y) < (RY) + (RH))
    #define ISVISIBLE(C) ((C->tags & C->mon->tagset[C->mon->seltags]))
    #define LENGTH(X) (sizeof X / sizeof X[0])
    #define MAX(A, B) ((A) > (B) ? (A) : (B))
    #define MIN(A, B) ((A) < (B) ? (A) : (B))
    #define MOUSEMASK (BUTTONMASK|PointerMotionMask)
    #define WIDTH(X) ((X)->w + 2 * (X)->bw)
    #define HEIGHT(X) ((X)->h + 2 * (X)->bw)
    #define TAGMASK ((1 << LENGTH(tags)) - 1)
    #define TEXTW(X) (textnw(X, strlen(X)) + dc.font.height)
    /* enums */
    enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */
    enum { ColBorder, ColFG, ColBG, ColLast }; /* color */
    enum { NetSupported, NetWMName, NetWMState,
    NetWMFullscreen, NetActiveWindow, NetLast }; /* EWMH atoms */
    enum { WMProtocols, WMDelete, WMState, WMTakeFocus, WMLast }; /* default atoms */
    enum { ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle,
    ClkClientWin, ClkRootWin, ClkLast }; /* clicks */
    typedef union {
    int i;
    unsigned int ui;
    float f;
    const void *v;
    } Arg;
    typedef struct {
    unsigned int click;
    unsigned int mask;
    unsigned int button;
    void (*func)(const Arg *arg);
    const Arg arg;
    } Button;
    typedef struct Monitor Monitor;
    typedef struct Client Client;
    struct Client {
    char name[256];
    float mina, maxa;
    int x, y, w, h;
    int oldx, oldy, oldw, oldh;
    int basew, baseh, incw, inch, maxw, maxh, minw, minh;
    int bw, oldbw;
    unsigned int tags;
    Bool isfixed, isfloating, isurgent, neverfocus, oldstate, isfullscreen;
    Client *next;
    Client *snext;
    Monitor *mon;
    Window win;
    typedef struct {
    int x, y, w, h;
    unsigned long norm[ColLast];
    unsigned long sel[ColLast];
    Drawable drawable;
    GC gc;
    struct {
    int ascent;
    int descent;
    int height;
    XFontSet set;
    XFontStruct *xfont;
    } font;
    } DC; /* draw context */
    typedef struct {
    unsigned int mod;
    KeySym keysym;
    void (*func)(const Arg *);
    const Arg arg;
    } Key;
    typedef struct {
    const char *symbol;
    void (*arrange)(Monitor *);
    } Layout;
    struct Monitor {
    char ltsymbol[16];
    int num;
    int by; /* bar geometry */
    int mx, my, mw, mh; /* screen size */
    int wx, wy, ww, wh; /* window area */
    unsigned int seltags;
    unsigned int sellt;
    unsigned int tagset[2];
    Bool showbar;
    Bool topbar;
    Client *clients;
    Client *sel;
    Client *stack;
    Monitor *next;
    Window barwin;
    const Layout *lt[2];
    int curtag;
    int prevtag;
    const Layout **lts;
    double *mfacts;
    int *nmasters;
    typedef struct {
    const char *name;
    const Layout *layout;
    float mfact;
    int nmaster;
    } Tag;
    typedef struct {
    const char *class;
    const char *instance;
    const char *title;
    unsigned int tags;
    Bool isfloating;
    int monitor;
    } Rule;
    /* function declarations */
    static void applyrules(Client *c);
    static Bool applysizehints(Client *c, int *x, int *y, int *w, int *h, Bool interact);
    static void arrange(Monitor *m);
    static void arrangemon(Monitor *m);
    static void attach(Client *c);
    static void attachstack(Client *c);
    static void buttonpress(XEvent *e);
    static void checkotherwm(void);
    static void cleanup(void);
    static void cleanupmon(Monitor *mon);
    static void clearurgent(Client *c);
    static void clientmessage(XEvent *e);
    static void configure(Client *c);
    static void configurenotify(XEvent *e);
    static void configurerequest(XEvent *e);
    static Monitor *createmon(void);
    static void destroynotify(XEvent *e);
    static void detach(Client *c);
    static void detachstack(Client *c);
    static void die(const char *errstr, ...);
    static Monitor *dirtomon(int dir);
    static void drawbar(Monitor *m);
    static void drawbars(void);
    static void drawsquare(Bool filled, Bool empty, Bool invert, unsigned long col[ColLast]);
    static void drawtext(const char *text, unsigned long col[ColLast], Bool invert);
    static void enternotify(XEvent *e);
    static void expose(XEvent *e);
    static void focus(Client *c);
    static void focusin(XEvent *e);
    static void focusmon(const Arg *arg);
    static void focusstack(const Arg *arg);
    static unsigned long getcolor(const char *colstr);
    static Bool getrootptr(int *x, int *y);
    static long getstate(Window w);
    static Bool gettextprop(Window w, Atom atom, char *text, unsigned int size);
    static void grabbuttons(Client *c, Bool focused);
    static void grabkeys(void);
    static void initfont(const char *fontstr);
    static void keypress(XEvent *e);
    static void killclient(const Arg *arg);
    static void manage(Window w, XWindowAttributes *wa);
    static void mappingnotify(XEvent *e);
    static void maprequest(XEvent *e);
    static void monocle(Monitor *m);
    static void movemouse(const Arg *arg);
    static Client *nexttiled(Client *c);
    static void pop(Client *);
    static void propertynotify(XEvent *e);
    static Monitor *ptrtomon(int x, int y);
    static void quit(const Arg *arg);
    static void resize(Client *c, int x, int y, int w, int h, Bool interact);
    static void resizeclient(Client *c, int x, int y, int w, int h);
    static void resizemouse(const Arg *arg);
    static void restack(Monitor *m);
    static void run(void);
    static void scan(void);
    static Bool sendevent(Client *c, Atom proto);
    static void sendmon(Client *c, Monitor *m);
    static void setclientstate(Client *c, long state);
    static void setfocus(Client *c);
    static void setlayout(const Arg *arg);
    static void setmfact(const Arg *arg);
    static void setnmaster(const Arg *arg);
    static void incnmaster(const Arg *arg);
    static void setup(void);
    static void showhide(Client *c);
    static void sigchld(int unused);
    static void spawn(const Arg *arg);
    static void tag(const Arg *arg);
    static void tagmon(const Arg *arg);
    static int textnw(const char *text, unsigned int len);
    static void ntile(Monitor *);
    static void togglebar(const Arg *arg);
    static void togglefloating(const Arg *arg);
    static void toggletag(const Arg *arg);
    static void toggleview(const Arg *arg);
    static void unfocus(Client *c, Bool setfocus);
    static void unmanage(Client *c, Bool destroyed);
    static void unmapnotify(XEvent *e);
    static Bool updategeom(void);
    static void updatebarpos(Monitor *m);
    static void updatebars(void);
    static void updatenumlockmask(void);
    static void updatesizehints(Client *c);
    static void updatestatus(void);
    static void updatetitle(Client *c);
    static void updatewmhints(Client *c);
    static void view(const Arg *arg);
    static Client *wintoclient(Window w);
    static Monitor *wintomon(Window w);
    static int xerror(Display *dpy, XErrorEvent *ee);
    static int xerrordummy(Display *dpy, XErrorEvent *ee);
    static int xerrorstart(Display *dpy, XErrorEvent *ee);
    static void zoom(const Arg *arg);
    /* variables */
    static const char broken[] = "broken";
    static char stext[256];
    static int screen;
    static int sw, sh; /* X display screen geometry width, height */
    static int bh, blw = 0; /* bar geometry */
    static int (*xerrorxlib)(Display *, XErrorEvent *);
    static unsigned int numlockmask = 0;
    static void (*handler[LASTEvent]) (XEvent *) = {
    [ButtonPress] = buttonpress,
    [ClientMessage] = clientmessage,
    [ConfigureRequest] = configurerequest,
    [ConfigureNotify] = configurenotify,
    [DestroyNotify] = destroynotify,
    [EnterNotify] = enternotify,
    [Expose] = expose,
    [FocusIn] = focusin,
    [KeyPress] = keypress,
    [MappingNotify] = mappingnotify,
    [MapRequest] = maprequest,
    [PropertyNotify] = propertynotify,
    [UnmapNotify] = unmapnotify
    static Atom wmatom[WMLast], netatom[NetLast];
    static Bool running = True;
    static Cursor cursor[CurLast];
    static Display *dpy;
    static DC dc;
    static Monitor *mons = NULL, *selmon = NULL;
    static Window root;
    /* configuration, allows nested code to access above variables */
    #include "config.h"
    /* compile-time check if all tags fit into an unsigned int bit array. */
    struct NumTags { char limitexceeded[LENGTH(tags) > 31 ? -1 : 1]; };
    /* function implementations */
    void
    applyrules(Client *c) {
    const char *class, *instance;
    unsigned int i;
    const Rule *r;
    Monitor *m;
    XClassHint ch = { 0 };
    /* rule matching */
    c->isfloating = c->tags = 0;
    if(XGetClassHint(dpy, c->win, &ch)) {
    class = ch.res_class ? ch.res_class : broken;
    instance = ch.res_name ? ch.res_name : broken;
    for(i = 0; i < LENGTH(rules); i++) {
    r = &rules[i];
    if((!r->title || strstr(c->name, r->title))
    && (!r->class || strstr(class, r->class))
    && (!r->instance || strstr(instance, r->instance)))
    c->isfloating = r->isfloating;
    c->tags |= r->tags;
    for(m = mons; m && m->num != r->monitor; m = m->next);
    if(m)
    c->mon = m;
    if(ch.res_class)
    XFree(ch.res_class);
    if(ch.res_name)
    XFree(ch.res_name);
    c->tags = c->tags & TAGMASK ? c->tags & TAGMASK : c->mon->tagset[c->mon->seltags];
    Bool
    applysizehints(Client *c, int *x, int *y, int *w, int *h, Bool interact) {
    Bool baseismin;
    Monitor *m = c->mon;
    /* set minimum possible */
    *w = MAX(1, *w);
    *h = MAX(1, *h);
    if(interact) {
    if(*x > sw)
    *x = sw - WIDTH(c);
    if(*y > sh)
    *y = sh - HEIGHT(c);
    if(*x + *w + 2 * c->bw < 0)
    *x = 0;
    if(*y + *h + 2 * c->bw < 0)
    *y = 0;
    else {
    if(*x > m->mx + m->mw)
    *x = m->mx + m->mw - WIDTH(c);
    if(*y > m->my + m->mh)
    *y = m->my + m->mh - HEIGHT(c);
    if(*x + *w + 2 * c->bw < m->mx)
    *x = m->mx;
    if(*y + *h + 2 * c->bw < m->my)
    *y = m->my;
    if(*h < bh)
    *h = bh;
    if(*w < bh)
    *w = bh;
    if(resizehints || c->isfloating) {
    /* see last two sentences in ICCCM 4.1.2.3 */
    baseismin = c->basew == c->minw && c->baseh == c->minh;
    if(!baseismin) { /* temporarily remove base dimensions */
    *w -= c->basew;
    *h -= c->baseh;
    /* adjust for aspect limits */
    if(c->mina > 0 && c->maxa > 0) {
    if(c->maxa < (float)*w / *h)
    *w = *h * c->maxa + 0.5;
    else if(c->mina < (float)*h / *w)
    *h = *w * c->mina + 0.5;
    if(baseismin) { /* increment calculation requires this */
    *w -= c->basew;
    *h -= c->baseh;
    /* adjust for increment value */
    if(c->incw)
    *w -= *w % c->incw;
    if(c->inch)
    *h -= *h % c->inch;
    /* restore base dimensions */
    *w = MAX(*w + c->basew, c->minw);
    *h = MAX(*h + c->baseh, c->minh);
    if(c->maxw)
    *w = MIN(*w, c->maxw);
    if(c->maxh)
    *h = MIN(*h, c->maxh);
    return *x != c->x || *y != c->y || *w != c->w || *h != c->h;
    void
    arrange(Monitor *m) {
    if(m)
    showhide(m->stack);
    else for(m = mons; m; m = m->next)
    showhide(m->stack);
    focus(NULL);
    if(m)
    arrangemon(m);
    else for(m = mons; m; m = m->next)
    arrangemon(m);
    void
    arrangemon(Monitor *m) {
    strncpy(m->ltsymbol, m->lt[m->sellt]->symbol, sizeof m->ltsymbol);
    if(m->lt[m->sellt]->arrange)
    m->lt[m->sellt]->arrange(m);
    restack(m);
    void
    attach(Client *c) {
    c->next = c->mon->clients;
    c->mon->clients = c;
    void
    attachstack(Client *c) {
    c->snext = c->mon->stack;
    c->mon->stack = c;
    void
    buttonpress(XEvent *e) {
    unsigned int i, x, click;
    Arg arg = {0};
    Client *c;
    Monitor *m;
    XButtonPressedEvent *ev = &e->xbutton;
    click = ClkRootWin;
    /* focus monitor if necessary */
    if((m = wintomon(ev->window)) && m != selmon) {
    unfocus(selmon->sel, True);
    selmon = m;
    focus(NULL);
    if(ev->window == selmon->barwin) {
    i = x = 0;
    do {
    x += TEXTW(tags[i].name);
    } while(ev->x >= x && ++i < LENGTH(tags));
    if(i < LENGTH(tags)) {
    click = ClkTagBar;
    arg.ui = 1 << i;
    else if(ev->x < x + blw)
    click = ClkLtSymbol;
    else if(ev->x > selmon->ww - TEXTW(stext))
    click = ClkStatusText;
    else
    click = ClkWinTitle;
    else if((c = wintoclient(ev->window))) {
    focus(c);
    click = ClkClientWin;
    for(i = 0; i < LENGTH(buttons); i++)
    if(click == buttons[i].click && buttons[i].func && buttons[i].button == ev->button
    && CLEANMASK(buttons[i].mask) == CLEANMASK(ev->state))
    buttons[i].func(click == ClkTagBar && buttons[i].arg.i == 0 ? &arg : &buttons[i].arg);
    void
    checkotherwm(void) {
    xerrorxlib = XSetErrorHandler(xerrorstart);
    /* this causes an error if some other window manager is running */
    XSelectInput(dpy, DefaultRootWindow(dpy), SubstructureRedirectMask);
    XSync(dpy, False);
    XSetErrorHandler(xerror);
    XSync(dpy, False);
    void
    cleanup(void) {
    Arg a = {.ui = ~0};
    Layout foo = { "", NULL };
    Monitor *m;
    view(&a);
    selmon->lt[selmon->sellt] = &foo;
    for(m = mons; m; m = m->next)
    while(m->stack)
    unmanage(m->stack, False);
    if(dc.font.set)
    XFreeFontSet(dpy, dc.font.set);
    else
    XFreeFont(dpy, dc.font.xfont);
    XUngrabKey(dpy, AnyKey, AnyModifier, root);
    XFreePixmap(dpy, dc.drawable);
    XFreeGC(dpy, dc.gc);
    XFreeCursor(dpy, cursor[CurNormal]);
    XFreeCursor(dpy, cursor[CurResize]);
    XFreeCursor(dpy, cursor[CurMove]);
    while(mons)
    cleanupmon(mons);
    XSync(dpy, False);
    XSetInputFocus(dpy, PointerRoot, RevertToPointerRoot, CurrentTime);
    void
    cleanupmon(Monitor *mon) {
    Monitor *m;
    if(mon == mons)
    mons = mons->next;
    else {
    for(m = mons; m && m->next != mon; m = m->next);
    m->next = mon->next;
    XUnmapWindow(dpy, mon->barwin);
    XDestroyWindow(dpy, mon->barwin);
    free(mon->mfacts);
    free(mon->nmasters);
    free(mon->lts);
    free(mon);
    void
    clearurgent(Client *c) {
    XWMHints *wmh;
    c->isurgent = False;
    if(!(wmh = XGetWMHints(dpy, c->win)))
    return;
    wmh->flags &= ~XUrgencyHint;
    XSetWMHints(dpy, c->win, wmh);
    XFree(wmh);
    void
    clientmessage(XEvent *e) {
    XClientMessageEvent *cme = &e->xclient;
    Client *c = wintoclient(cme->window);
    if(!c)
    return;
    if(cme->message_type == netatom[NetWMState] && cme->data.l[1] == netatom[NetWMFullscreen]) {
    if(cme->data.l[0] && !c->isfullscreen) {
    XChangeProperty(dpy, cme->window, netatom[NetWMState], XA_ATOM, 32,
    PropModeReplace, (unsigned char*)&netatom[NetWMFullscreen], 1);
    c->isfullscreen = True;
    c->oldstate = c->isfloating;
    c->oldbw = c->bw;
    c->bw = 0;
    c->isfloating = True;
    resizeclient(c, c->mon->mx, c->mon->my, c->mon->mw, c->mon->mh);
    XRaiseWindow(dpy, c->win);
    else {
    XChangeProperty(dpy, cme->window, netatom[NetWMState], XA_ATOM, 32,
    PropModeReplace, (unsigned char*)0, 0);
    c->isfullscreen = False;
    c->isfloating = c->oldstate;
    c->bw = c->oldbw;
    c->x = c->oldx;
    c->y = c->oldy;
    c->w = c->oldw;
    c->h = c->oldh;
    resizeclient(c, c->x, c->y, c->w, c->h);
    arrange(c->mon);
    else if(cme->message_type == netatom[NetActiveWindow]) {
    if(!ISVISIBLE(c)) {
    c->mon->seltags ^= 1;
    c->mon->tagset[c->mon->seltags] = c->tags;
    pop(c);
    void
    configure(Client *c) {
    XConfigureEvent ce;
    ce.type = ConfigureNotify;
    ce.display = dpy;
    ce.event = c->win;
    ce.window = c->win;
    ce.x = c->x;
    ce.y = c->y;
    ce.width = c->w;
    ce.height = c->h;
    ce.border_width = c->bw;
    ce.above = None;
    ce.override_redirect = False;
    XSendEvent(dpy, c->win, False, StructureNotifyMask, (XEvent *)&ce);
    void
    configurenotify(XEvent *e) {
    Monitor *m;
    XConfigureEvent *ev = &e->xconfigure;
    Bool dirty;
    if(ev->window == root) {
    dirty = (sw != ev->width);
    sw = ev->width;
    sh = ev->height;
    if(updategeom() || dirty) {
    if(dc.drawable != 0)
    XFreePixmap(dpy, dc.drawable);
    dc.drawable = XCreatePixmap(dpy, root, sw, bh, DefaultDepth(dpy, screen));
    updatebars();
    for(m = mons; m; m = m->next)
    XMoveResizeWindow(dpy, m->barwin, m->wx, m->by, m->ww, bh);
    arrange(NULL);
    void
    configurerequest(XEvent *e) {
    Client *c;
    Monitor *m;
    XConfigureRequestEvent *ev = &e->xconfigurerequest;
    XWindowChanges wc;
    if((c = wintoclient(ev->window))) {
    if(ev->value_mask & CWBorderWidth)
    c->bw = ev->border_width;
    else if(c->isfloating || !selmon->lt[selmon->sellt]->arrange) {
    m = c->mon;
    if(ev->value_mask & CWX)
    c->x = m->mx + ev->x;
    if(ev->value_mask & CWY)
    c->y = m->my + ev->y;
    if(ev->value_mask & CWWidth)
    c->w = ev->width;
    if(ev->value_mask & CWHeight)
    c->h = ev->height;
    if((c->x + c->w) > m->mx + m->mw && c->isfloating)
    c->x = m->mx + (m->mw / 2 - c->w / 2); /* center in x direction */
    if((c->y + c->h) > m->my + m->mh && c->isfloating)
    c->y = m->my + (m->mh / 2 - c->h / 2); /* center in y direction */
    if((ev->value_mask & (CWX|CWY)) && !(ev->value_mask & (CWWidth|CWHeight)))
    configure(c);
    if(ISVISIBLE(c))
    XMoveResizeWindow(dpy, c->win, c->x, c->y, c->w, c->h);
    else
    configure(c);
    else {
    wc.x = ev->x;
    wc.y = ev->y;
    wc.width = ev->width;
    wc.height = ev->height;
    wc.border_width = ev->border_width;
    wc.sibling = ev->above;
    wc.stack_mode = ev->detail;
    XConfigureWindow(dpy, ev->window, ev->value_mask, &wc);
    XSync(dpy, False);
    /* TODO Check how many times createmon is called */
    Monitor *
    createmon(void) {
    Monitor *m;
    int i, numtags = LENGTH(tags) + 1;
    if(!(m = (Monitor *)calloc(1, sizeof(Monitor))))
    die("fatal: could not malloc() %u bytes\n", sizeof(Monitor));
    if(!(m->mfacts = calloc(sizeof(double), numtags)))
    die("fatal: could not malloc() %u bytes\n", sizeof(double) * numtags);
    if(!(m->nmasters = calloc(sizeof(int), numtags)))
    die("fatal: could not malloc() %u bytes\n", sizeof(int) * numtags);
    if(!(m->lts = calloc(sizeof(Layout *), numtags)))
    die("fatal: could not malloc() %u bytes\n", sizeof(Layout *) * numtags);
    m->tagset[0] = m->tagset[1] = 1;
    m->showbar = showbar;
    m->topbar = topbar;
    m->curtag = m->prevtag = 1;
    for(i = 1; i < numtags; i++) {
    m->mfacts[i] = tags[i - 1].mfact < 0 ? mfact : tags[i - 1].mfact;
    m->nmasters[i] = tags[i - 1].nmaster < 0 ? nmaster : tags[i - 1].nmaster;
    m->lts[i] = tags[i - 1].layout;
    m->lt[0] = m->lts[m->curtag];
    m->lt[1] = &layouts[1 % LENGTH(layouts)];
    strncpy(m->ltsymbol, m->lt[0]->symbol, sizeof m->ltsymbol);
    return m;
    void
    destroynotify(XEvent *e) {
    Client *c;
    XDestroyWindowEvent *ev = &e->xdestroywindow;
    if((c = wintoclient(ev->window)))
    unmanage(c, True);
    void
    detach(Client *c) {
    Client **tc;
    for(tc = &c->mon->clients; *tc && *tc != c; tc = &(*tc)->next);
    *tc = c->next;
    void
    detachstack(Client *c) {
    Client **tc, *t;
    for(tc = &c->mon->stack; *tc && *tc != c; tc = &(*tc)->snext);
    *tc = c->snext;
    if(c == c->mon->sel) {
    for(t = c->mon->stack; t && !ISVISIBLE(t); t = t->snext);
    c->mon->sel = t;
    void
    die(const char *errstr, ...) {
    va_list ap;
    va_start(ap, errstr);
    vfprintf(stderr, errstr, ap);
    va_end(ap);
    exit(EXIT_FAILURE);
    Monitor *
    dirtomon(int dir) {
    Monitor *m = NULL;
    if(dir > 0) {
    if(!(m = selmon->next))
    m = mons;
    else {
    if(selmon == mons)
    for(m = mons; m->next; m = m->next);
    else
    for(m = mons; m->next != selmon; m = m->next);
    return m;
    void
    drawbar(Monitor *m) {
    int x;
    unsigned int i, occ = 0, urg = 0;
    unsigned long *col;
    Client *c;
    for(c = m->clients; c; c = c->next) {
    occ |= c->tags;
    if(c->isurgent)
    urg |= c->tags;
    dc.x = 0;
    for(i = 0; i < LENGTH(tags); i++) {
    dc.w = TEXTW(tags[i].name);
    col = m->tagset[m->seltags] & 1 << i ? dc.sel : dc.norm;
    drawtext(tags[i].name, col, urg & 1 << i);
    drawsquare(m == selmon && selmon->sel && selmon->sel->tags & 1 << i,
    occ & 1 << i, urg & 1 << i, col);
    dc.x += dc.w;
    dc.w = blw = TEXTW(m->ltsymbol);
    drawtext(m->ltsymbol, dc.norm, False);
    dc.x += dc.w;
    x = dc.x;
    if(m == selmon) { /* status is only drawn on selected monitor */
    dc.w = TEXTW(stext);
    dc.x = m->ww - dc.w;
    if(dc.x < x) {
    dc.x = x;
    dc.w = m->ww - x;
    drawtext(stext, dc.norm, False);
    else
    dc.x = m->ww;
    if((dc.w = dc.x - x) > bh) {
    dc.x = x;
    if(m->sel) {
    col = m == selmon ? dc.sel : dc.norm;
    drawtext(m->sel->name, col, False);
    drawsquare(m->sel->isfixed, m->sel->isfloating, False, col);
    else
    drawtext(NULL, dc.norm, False);
    XCopyArea(dpy, dc.drawable, m->barwin, dc.gc, 0, 0, m->ww, bh, 0, 0);
    XSync(dpy, False);
    void
    drawbars(void) {
    Monitor *m;
    for(m = mons; m; m = m->next)
    drawbar(m);
    void
    drawsquare(Bool filled, Bool empty, Bool invert, unsigned long col[ColLast]) {
    int x;
    XSetForeground(dpy, dc.gc, col[invert ? ColBG : ColFG]);
    x = (dc.font.ascent + dc.font.descent + 2) / 4;
    if(filled)
    XFillRectangle(dpy, dc.drawable, dc.gc, dc.x+1, dc.y+1, x+1, x+1);
    else if(empty)
    XDrawRectangle(dpy, dc.drawable, dc.gc, dc.x+1, dc.y+1, x, x);
    void
    drawtext(const char *text, unsigned long col[ColLast], Bool invert) {
    char buf[256];
    int i, x, y, h, len, olen;
    XSetForeground(dpy, dc.gc, col[invert ? ColFG : ColBG]);
    XFillRectangle(dpy, dc.drawable, dc.gc, dc.x, dc.y, dc.w, dc.h);
    if(!text)
    return;
    olen = strlen(text);
    h = dc.font.ascent + dc.font.descent;
    y = dc.y + (dc.h / 2) - (h / 2) + dc.font.ascent;
    x = dc.x + (h / 2);
    /* shorten text if necessary */
    for(len = MIN(olen, sizeof buf); len && textnw(text, len) > dc.w - h; len--);
    if(!len)
    return;
    memcpy(buf, text, len);
    if(len < olen)
    for(i = len; i && i > len - 3; buf[--i] = '.');
    XSetForeground(dpy, dc.gc, col[invert ? ColBG : ColFG]);
    if(dc.font.set)
    XmbDrawString(dpy, dc.drawable, dc.font.set, dc.gc, x, y, buf, len);
    else
    XDrawString(dpy, dc.drawable, dc.gc, x, y, buf, len);
    void
    enternotify(XEvent *e) {
    Client *c;
    Monitor *m;
    XCrossingEvent *ev = &e->xcrossing;
    if((ev->mode != NotifyNormal || ev->detail == NotifyInferior) && ev->window != root)
    return;
    c = wintoclient(ev->window);
    m = c ? c->mon : wintomon(ev->window);
    if(m != selmon) {
    unfocus(selmon->sel, True);
    selmon = m;
    else if(!c || c == selmon->sel)
    return;
    focus(c);
    void
    expose(XEvent *e) {
    Monitor *m;
    XExposeEvent *ev = &e->xexpose;
    if(ev->count == 0 && (m = wintomon(ev->window)))
    drawbar(m);
    void
    focus(Client *c) {
    if(!c || !ISVISIBLE(c))
    for(c = selmon->stack; c && !ISVISIBLE(c); c = c->snext);
    /* was if(selmon->sel) */
    if(selmon->sel && selmon->sel != c)
    unfocus(selmon->sel, False);
    if(c) {
    if(c->mon != selmon)
    selmon = c->mon;
    if(c->isurgent)
    clearurgent(c);
    detachstack(c);
    attachstack(c);
    grabbuttons(c, True);
    XSetWindowBorder(dpy, c->win, dc.sel[ColBorder]);
    setfocus(c);
    else
    XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime);
    selmon->sel = c;
    drawbars();
    void
    focusin(XEvent *e) { /* there are some broken focus acquiring clients */
    XFocusChangeEvent *ev = &e->xfocus;
    if(selmon->sel && ev->window != selmon->sel->win)
    setfocus(selmon->sel);
    void
    focusmon(const Arg *arg) {
    Monitor *m;
    if(!mons->next)
    return;
    if((m = dirtomon(arg->i)) == selmon)
    return;
    unfocus(selmon->sel, True);
    selmon = m;
    focus(NULL);
    void
    focusstack(const Arg *arg) {
    Client *c = NULL, *i;
    if(!selmon->sel)
    return;
    if(arg->i > 0) {
    for(c = selmon->sel->next; c && !ISVISIBLE(c); c = c->next);
    if(!c)
    for(c = selmon->clients; c && !ISVISIBLE(c); c = c->next);
    else {
    for(i = selmon->clients; i != selmon->sel; i = i->next)
    if(ISVISIBLE(i))
    c = i;
    if(!c)
    for(; i; i = i->next)
    if(ISVISIBLE(i))
    c = i;
    if(c) {
    focus(c);
    restack(selmon);
    unsigned long
    getcolor(const char *colstr) {
    Colormap cmap = DefaultColormap(dpy, screen);
    XColor color;
    if(!XAllocNamedColor(dpy, cmap, colstr, &color, &color))
    die("error, cannot allocate color '%s'\n", colstr);
    return color.pixel;
    Bool
    getrootptr(int *x, int *y) {
    int di;
    unsigned int dui;
    Window dummy;
    return XQueryPointer(dpy, root, &dummy, &dummy, x, y, &di, &di, &dui);
    long
    getstate(Window w) {
    int format;
    long result = -1;
    unsigned char *p = NULL;
    unsigned long n, extra;
    Atom real;
    if(XGetWindowProperty(dpy, w, wmatom[WMState], 0L, 2L, False, wmatom[WMState],
    &real, &format, &n, &extra, (unsigned char **)&p) != Success)
    return -1;
    if(n != 0)
    result = *p;
    XFree(p);
    return result;
    Bool
    gettextprop(Window w, Atom atom, char *text, unsigned int size) {
    char **list = NULL;
    int n;
    XTextProperty name;
    if(!text || size == 0)
    return False;
    text[0] = '\0';
    XGetTextProperty(dpy, w, &name, atom);
    if(!name.nitems)
    return False;
    if(name.encoding == XA_STRING)
    strncpy(text, (char *)name.value, size - 1);
    else {
    if(XmbTextPropertyToTextList(dpy, &name, &list, &n) >= Success && n > 0 && *list) {
    strncpy(text, *list, size - 1);
    XFreeStringList(list);
    text[size - 1] = '\0';
    XFree(name.value);
    return True;
    void
    grabbuttons(Client *c, Bool focused) {
    updatenumlockmask();
    unsigned int i, j;
    unsigned int modifiers[] = { 0, LockMask, numlockmask, numlockmask|LockMask };
    XUngrabButton(dpy, AnyButton, AnyModifier, c->win);
    if(focused) {
    for(i = 0; i < LENGTH(buttons); i++)
    if(buttons[i].click == ClkClientWin)
    for(j = 0; j < LENGTH(modifiers); j++)
    XGrabButton(dpy, buttons[i].button,
    buttons[i].mask | modifiers[j],
    c->win, False, BUTTONMASK,
    GrabModeAsync, GrabModeSync, None, None);
    else
    XGrabButton(dpy, AnyButton, AnyModifier, c->win, False,
    BUTTONMASK, GrabModeAsync, GrabModeSync, None, None);
    void
    grabkeys(void) {
    updatenumlockmask();
    unsigned int i, j;
    unsigned int modifiers[] = { 0, LockMask, numlockmask, numlockmask|LockMask };
    KeyCode code;
    XUngrabKey(dpy, AnyKey, AnyModifier, root);
    for(i = 0; i < LENGTH(keys); i++) {
    if((code = XKeysymToKeycode(dpy, keys[i].keysym)))
    for(j = 0; j < LENGTH(modifiers); j++)
    XGrabKey(dpy, code, keys[i].mod | modifiers[j], root,
    True, GrabModeAsync, GrabModeAsync);
    void
    initfont(const char *fontstr) {
    char *def, **missing;
    int n;
    missing = NULL;
    dc.font.set = XCreateFontSet(dpy, fontstr, &missing, &n, &def);
    if(missing) {
    while(n--)
    fprintf(stderr, "dwm: missing fontset: %s\n", missing[n]);
    XFreeStringList(missing);
    if(dc.font.set) {
    XFontStruct **xfonts;
    char **font_names;
    dc.font.ascent = dc.font.descent = 0;
    XExtentsOfFontSet(dc.font.set);
    n = XFontsOfFontSet(dc.font.set, &xfonts, &font_names);
    while(n--) {
    dc.font.ascent = MAX(dc.font.ascent, (*xfonts)->ascent);
    dc.font.descent = MAX(dc.font.descent,(*xfonts)->descent);
    xfonts++;
    else {
    if(!(dc.font.xfont = XLoadQueryFont(dpy, fontstr))
    && !(dc.font.xfont = XLoadQueryFont(dpy, "fixed")))
    die("error, cannot load font: '%s'\n", fontstr);
    dc.font.ascent = dc.font.xfont->ascent;
    dc.font.descent = dc.font.xfont->descent;
    dc.font.height = dc.font.ascent + dc.font.descent;
    #ifdef XINERAMA
    static Bool
    isuniquegeom(XineramaScreenInfo *unique, size_t n, XineramaScreenInfo *info) {
    while(n--)
    if(unique[n].x_org == info->x_org && unique[n].y_org == info->y_org
    && unique[n].width == info->width && unique[n].height == info->height)
    return False;
    return True;
    #endif /* XINERAMA */
    void
    keypress(XEvent *e) {
    unsigned int i;
    KeySym keysym;
    XKeyEvent *ev;
    ev = &e->xkey;
    keysym = XKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0);
    for(i = 0; i < LENGTH(keys); i++)
    if(keysym == keys[i].keysym
    && CLEANMASK(keys[i].mod) == CLEANMASK(ev->state)
    && keys[i].func)
    keys[i].func(&(keys[i].arg));
    void
    killclient(const Arg *arg) {
    if(!selmon->sel)
    return;
    if(!sendevent(selmon->sel, wmatom[WMDelete])) {
    XGrabServer(dpy);
    XSetErrorHandler(xerrordummy);
    XSetCloseDownMode(dpy, DestroyAll);
    XKillClient(dpy, selmon->sel->win);
    XSync(dpy, False);
    XSetErrorHandler(xerror);
    XUngrabServer(dpy);
    void
    manage(Window w, XWindowAttributes *wa) {
    Client *c, *t = NULL;
    Window trans = None;
    XWindowChanges wc;
    if(!(c = calloc(1, sizeof(Client))))
    die("fatal: could not malloc() %u bytes\n", sizeof(Client));
    c->win = w;
    updatetitle(c);
    if(XGetTransientForHint(dpy, w, &trans) && (t = wintoclient(trans))) {
    c->mon = t->mon;
    c->tags = t->tags;
    else {
    c->mon = selmon;
    applyrules(c);
    /* geometry */
    c->x = c->oldx = wa->x;
    c->y = c->oldy = wa->y;
    c->w = c->oldw = wa->width;
    c->h = c->oldh = wa->height;
    c->oldbw = wa->border_width;
    if(c->w == c->mon->mw && c->h == c->mon->mh) {
    c->isfloating = True;
    c->x = c->mon->mx;
    c->y = c->mon->my;
    c->bw = 0;
    else {
    if(c->x + WIDTH(c) > c->mon->mx + c->mon->mw)
    c->x = c->mon->mx + c->mon->mw - WIDTH(c);
    if(c->y + HEIGHT(c) > c->mon->my + c->mon->mh)
    c->y = c->mon->my + c->mon->mh - HEIGHT(c);
    c->x = MAX(c->x, c->mon->mx);
    /* only fix client y-offset, if the client center might cover the bar */
    c->y = MAX(c->y, ((c->mon->by == 0) && (c->x + (c->w / 2) >= c->mon->wx)
    && (c->x + (c->w / 2) < c->mon->wx + c->mon->ww)) ? bh : c->mon->my);
    c->bw = borderpx;
    wc.border_width = c->bw;
    XConfigureWindow(dpy, w, CWBorderWidth, &wc);
    XSetWindowBorder(dpy, w, dc.norm[ColBorder]);
    configure(c); /* propagates border_width, if size doesn't change */
    updatesizehints(c);
    updatewmhints(c);
    XSelectInput(dpy, w, EnterWindowMask|FocusChangeMask|PropertyChangeMask|StructureNotifyMask);
    grabbuttons(c, False);
    if(!c->isfloating)
    c->isfloating = c->oldstate = trans != None || c->isfixed;
    if(c->isfloating)
    XRaiseWindow(dpy, c->win);
    attach(c);
    attachstack(c);
    XMoveResizeWindow(dpy, c->win, c->x + 2 * sw, c->y, c->w, c->h); /* some windows require this */
    XMapWindow(dpy, c->win);
    setclientstate(c, NormalState);
    arrange(c->mon);
    void
    mappingnotify(XEvent *e) {
    XMappingEvent *ev = &e->xmapping;
    XRefreshKeyboardMapping(ev);
    if(ev->request == MappingKeyboard)
    grabkeys();
    void
    maprequest(XEvent *e) {
    static XWindowAttributes wa;
    XMapRequestEvent *ev = &e->xmaprequest;
    if(!XGetWindowAttributes(dpy, ev->window, &wa))
    return;
    if(wa.override_redirect)
    return;
    if(!wintoclient(ev->window))
    manage(ev->window, &wa);
    void
    monocle(Monitor *m) {
    unsigned int n = 0;
    Client *c;
    for(c = m->clients; c; c = c->next)
    if(ISVISIBLE(c))
    n++;
    if(n > 0) /* override layout symbol */
    snprintf(m->ltsymbol, sizeof m->ltsymbol, "[%d]", n);
    for(c = nexttiled(m->clients); c; c = nexttiled(c->next))
    resize(c, m->wx, m->wy, m->ww - 2 * c->bw, m->wh - 2 * c->bw, False);
    void
    movemouse(const Arg *arg) {
    int x, y, ocx, ocy, nx, ny;
    Client *c;
    Monitor *m;
    XEvent ev;
    if(!(c = selmon->sel))
    return;
    restack(selmon);
    ocx = c->x;
    ocy = c->y;
    if(XGrabPointer(dpy, root, False, MOUSEMASK, GrabModeAsync, GrabModeAsync,
    None, cursor[CurMove], CurrentTime) != GrabSuccess)
    return;
    if(!getrootptr(&x, &y))
    return;
    do {
    XMaskEvent(dpy, MOUSEMASK|ExposureMask|SubstructureRedirectMask, &ev);
    switch(ev.type) {
    case ConfigureRequest:
    case Expose:
    case MapRequest:
    handler[ev.type](&ev);
    break;
    case MotionNotify:
    nx = ocx + (ev.xmotion.x - x);
    ny = ocy + (ev.xmotion.y - y);
    if(nx >= selmon->wx && nx <= selmon->wx + selmon->ww
    && ny >= selmon->wy && ny <= selmon->wy + selmon->wh) {
    if(abs(selmon->wx - nx) < snap)
    nx = selmon->wx;
    else if(abs((selmon->wx + selmon->ww) - (nx + WIDTH(c))) < snap)
    nx = selmon->wx + selmon->ww - WIDTH(c);
    if(abs(selmon->wy - ny) < snap)
    ny = selmon->wy;
    else if(abs((selmon->wy + selmon->wh) - (ny + HEIGHT(c))) < snap)
    ny = selmon->wy + selmon->wh - HEIGHT(c);
    if(!c->isfloating && selmon->lt[selmon->sellt]->arrange
    && (abs(nx - c->x) > snap || abs(ny - c->y) > snap))
    togglefloating(NULL);
    if(!selmon->lt[selmon->sellt]->arrange || c->isfloating)
    resize(c, nx, ny, c->w, c->h, True);
    break;
    } while(ev.type != ButtonRelease);
    XUngrabPointer(dpy, CurrentTime);
    if((m = ptrtomon(c->x + c->w / 2, c->y + c->h / 2)) != selmon) {
    sendmon(c, m);
    selmon = m;
    focus(NULL);
    Client *
    nexttiled(Client *c) {
    for(; c && (c->isfloating || !ISVISIBLE(c)); c = c->next);
    return c;
    void
    pop(Client *c) {
    detach(c);
    attach(c);
    focus(c);
    arrange(c->mon);
    void
    propertynotify(XEvent *e) {
    Client *c;
    Window trans;
    XPropertyEvent *ev = &e->xproperty;
    if((ev->window == root) && (ev->atom == XA_WM_NAME))
    updatestatus();
    else if(ev->state == PropertyDelete)
    return; /* ignore */
    else if((c = wintoclient(ev->window))) {
    switch(ev->atom) {
    default: break;
    case XA_WM_TRANSIENT_FOR:
    if(!c->isfloating && (XGetTransientForHint(dpy, c->win, &trans)) &&
    (c->isfloating = (wintoclient(trans)) != NULL))
    arrange(c->mon);
    break;
    case XA_WM_NORMAL_HINTS:
    updatesizehints(c);
    break;
    case XA_WM_HINTS:
    updatewmhints(c);
    drawbars();
    break;
    if(ev->atom == XA_WM_NAME || ev->atom == netatom[NetWMName]) {
    updatetitle(c);
    if(c == c->mon->sel)
    drawbar(c->mon);
    Monitor *
    ptrtomon(int x, int y) {
    Monitor *m;
    for(m = mons; m; m = m->next)
    if(INRECT(x, y, m->wx, m->wy, m->ww, m->wh))
    return m;
    return selmon;
    void
    quit(const Arg *arg) {
    running = False;
    void
    resize(Client *c, int x, int y, int w, int h, Bool interact) {
    if(applysizehints(c, &x, &y, &w, &h, interact))
    resizeclient(c, x, y, w, h);
    void
    resizeclient(Client *c, int x, int y, int w, int h) {
    XWindowChanges wc;
    c->oldx = c->x; c->x = wc.x = x;
    c->oldy = c->y; c->y = wc.y = y;
    c->oldw = c->w; c->w = wc.width = w;
    c->oldh = c->h; c->h = wc.height = h;
    wc.border_width = c->bw;
    XConfigureWindow(dpy, c->win, CWX|CWY|CWWidth|CWHeight|CWBorderWidth, &wc);
    configure(c);
    XSync(dpy, False);
    void
    resizemouse(const Arg *arg) {
    int ocx, ocy;
    int nw, nh;
    Client *c;
    Monitor *m;
    XEvent ev;
    if(!(c = selmon->sel))
    return;
    restack(selmon);
    ocx = c->x;
    ocy = c->y;
    if(XGrabPointer(dpy, root, False, MOUSEMASK, GrabModeAsync, GrabModeAsync,
    None, cursor[CurResize], CurrentTime) != GrabSuccess)
    return;
    XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w + c->bw - 1, c->h + c->bw - 1);
    do {
    XMaskEvent(dpy, MOUSEMASK|ExposureMask|SubstructureRedirectMask, &ev);
    switch(ev.type) {
    case ConfigureRequest:
    case Expose:
    case MapRequest:
    handler[ev.type](&ev);
    break;
    case MotionNotify:
    nw = MAX(ev.xmotion.x - ocx - 2 * c->bw + 1, 1);
    nh = MAX(ev.xmotion.y - ocy - 2 * c->bw + 1, 1);
    if(c->mon->wx + nw >= selmon->wx && c->mon->wx + nw <= selmon->wx + selmon->ww
    && c->mon->wy + nh >= selmon->wy && c->mon->wy + nh <= selmon->wy + selmon->wh)
    if(!c->isfloating && selmon->lt[selmon->sellt]->arrange
    && (abs(nw - c->w) > snap || abs(nh - c->h) > snap))
    togglefloating(NULL);
    if(!selmon->lt[selmon->sellt]->arrange || c->isfloating)
    resize(c, c->x, c->y, nw, nh, True);
    break;
    } while(ev.type != ButtonRelease);
    XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w + c->bw - 1, c->h + c->bw - 1);
    XUngrabPointer(dpy, CurrentTime);
    while(XCheckMaskEvent(dpy, EnterWindowMask, &ev));
    if((m = ptrtomon(c->x + c->w / 2, c->y + c->h / 2)) != selmon) {
    sendmon(c, m);
    selmon = m;
    focus(NULL);
    void
    restack(Monitor *m) {
    Client *c;
    XEvent ev;
    XWindowChanges wc;
    drawbar(m);
    if(!m->sel)
    return;
    if(m->sel->isfloating || !m->lt[m->sellt]->arrange)
    XRaiseWindow(dpy, m->sel->win);
    if(m->lt[m->sellt]->arrange) {
    wc.stack_mode = Below;
    wc.sibling = m->barwin;
    for(c = m->stack; c; c = c->snext)
    if(!c->isfloating && ISVISIBLE(c)) {
    XConfigureWindow(dpy, c->win, CWSibling|CWStackMode, &wc);
    wc.sibling = c->win;
    XSync(dpy, False);
    while(XCheckMaskEvent(dpy, EnterWindowMask, &ev));
    void
    run(void) {
    XEvent ev;
    /* main event loop */
    XSync(dpy, False);
    while(running && !XNextEvent(dpy, &ev)) {
    if(handler[ev.type])
    handler[ev.type](&ev); /* call handler */
    void
    scan(void) {
    unsigned int i, num;
    Window d1, d2, *wins = NULL;
    XWindowAttributes wa;
    if(XQueryTree(dpy, root, &d1, &d2, &wins, &num)) {
    for(i = 0; i < num; i++) {
    if(!XGetWindowAttributes(dpy, wins[i], &wa)
    || wa.override_redirect || XGetTransientForHint(dpy, wins[i], &d1))
    continue;
    if(wa.map_state == IsViewable || getstate(wins[i]) == IconicState)
    manage(wins[i], &wa);
    for(i = 0; i < num; i++) { /* now the transients */
    if(!XGetWindowAttributes(dpy, wins[i], &wa))
    continue;
    if(XGetTransientForHint(dpy, wins[i], &d1)
    && (wa.map_state == IsViewable || getstate(wins[i]) == IconicState))
    manage(wins[i], &wa);
    if(wins)
    XFree(wins);
    void
    sendmon(Client *c, Monitor *m) {
    if(c->mon == m)
    return;
    unfocus(c, True);
    detach(c);
    detachstack(c);
    c->mon = m;
    c->tags = m->tagset[m->seltags]; /* assign tags of target monitor */
    attach(c);
    attachstack(c);
    focus(NULL);
    arrange(NULL);
    void
    setclientstate(Client *c, long state) {
    long data[] = { state, None };
    XChangeProperty(dpy, c->win, wmatom[WMState], wmatom[WMState], 32,
    PropModeReplace, (unsigned char *)data, 2);
    Bool
    sendevent(Client *c, Atom proto) {
    int n;
    Atom *protocols;
    Bool exists = False;
    XEvent ev;
    if(XGetWMProtocols(dpy, c->win, &protocols, &n)) {
    while(!exists && n--)
    exists = protocols[n] == proto;
    XFree(protocols);
    if(exists) {
    ev.type = ClientMessage;
    ev.xclient.window = c->win;
    ev.xclient.message_type = wmatom[WMProtocols];
    ev.xclient.format = 32;
    ev.xclient.data.l[0] = proto;
    ev.xclient.data.l[1] = CurrentTime;
    XSendEvent(dpy, c->win, False, NoEventMask, &ev);
    return exists;
    void
    setfocus(Client *c) {
    if(!c->neverfocus)
    XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime);
    sendevent(c, wmatom[WMTakeFocus]);
    void
    setlayout(const Arg *arg) {
    if(!arg || !arg->v || arg->v != selmon->lt[selmon->sellt])
    selmon->sellt ^= 1;
    if(arg && arg->v)
    selmon->lt[selmon->sellt] = selmon->lts[selmon->curtag] = (Layout *)arg->v;
    strncpy(selmon->ltsymbol, selmon->lt[selmon->sellt]->symbol, sizeof selmon->ltsymbol);
    if(selmon->sel)
    arrange(selmon);
    else
    drawbar(selmon);
    static void
    incnmaster(const Arg *arg) {
    int i;
    if(!arg || !selmon->lt[selmon->sellt]->arrange)
    return;
    i = selmon->nmasters[selmon->curtag] + arg->i;
    selmon->nmasters[selmon->curtag] = i < 0 ? 0 : i;
    arrange(selmon);
    static void
    setnmaster(const Arg *arg) {
    if(!arg || !selmon->lt[selmon->sellt]->arrange)
    return;
    selmon->nmasters[selmon->curtag] = arg->i > 0 ? arg->i : 0;
    arrange(selmon);
    /* arg > 1.0 will set mfact absolutly */
    void
    setmfact(const Arg *arg) {
    float f;
    if(!arg || !selmon->lt[selmon->sellt]->arrange)
    return;
    f = arg->f < 1.0 ? arg->f + selmon->mfacts[selmon->curtag] : arg->f - 1.0;
    if(f < 0.1 || f > 0.9)
    return;
    selmon->mfacts[selmon->curtag] = f;
    arrange(selmon);
    void
    setup(void) {
    XSetWindowAttributes wa;
    /* clean up any zombies immediately */
    sigchld(0);
    /* init screen */
    screen = DefaultScreen(dpy);
    root = RootWindow(dpy, screen);
    initfont(font);
    sw = DisplayWidth(dpy, screen);
    sh = DisplayHeight(dpy, screen);
    bh = dc.h = dc.font.height + 2;
    updategeom();
    /* init atoms */
    wmatom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False);
    wmatom[WMDelete] = XInternAtom(dpy, "WM_DELETE_WINDOW", False);
    wmatom[WMState] = XInternAtom(dpy, "WM_STATE", False);
    wmatom[WMTakeFocus] = XInternAtom(dpy, "WM_TAKE_FOCUS", False);
    netatom[NetActiveWindow] = XInternAtom(dpy, "_NET_ACTIVE_WINDOW", False);
    netatom[NetSupported] = XInternAtom(dpy, "_NET_SUPPORTED", False);
    netatom[NetWMName] = XInternAtom(dpy, "_NET_WM_NAME", False);
    netatom[NetWMState] = XInternAtom(dpy, "_NET_WM_STATE", False);
    netatom[NetWMFullscreen] = XInternAtom(dpy, "_NET_WM_STATE_FULLSCREEN", False);
    /* init cursors */
    cursor[CurNormal] = XCreateFontCursor(dpy, XC_left_ptr);
    cursor[CurResize] = XCreateFontCursor(dpy, XC_sizing);
    cursor[CurMove] = XCreateFontCursor(dpy, XC_fleur);
    /* init appearance */
    dc.norm[ColBorder] = getcolor(normbordercolor);
    dc.norm[ColBG] = getcolor(normbgcolor);
    dc.norm[ColFG] = getcolor(normfgcolor);
    dc.sel[ColBorder] = getcolor(selbordercolor);
    dc.sel[ColBG] = getcolor(selbgcolor);
    dc.sel[ColFG] = getcolor(selfgcolor);
    dc.drawable = XCreatePixmap(dpy, root, DisplayWidth(dpy, screen), bh, DefaultDepth(dpy, screen));
    dc.gc = XCreateGC(dpy, root, 0, NULL);
    XSetLineAttributes(dpy, dc.gc, 1, LineSolid, CapButt, JoinMiter);
    if(!dc.font.set)
    XSetFont(dpy, dc.gc, dc.font.xfont->fid);
    /* init bars */
    updatebars();
    updatestatus();
    /* EWMH support per view */
    XChangeProperty(dpy, root, netatom[NetSupported], XA_ATOM, 32,
    PropModeReplace, (unsigned char *) netatom, NetLast);
    /* select for events */
    wa.cursor = cursor[CurNormal];
    wa.event_mask = SubstructureRedirectMask|SubstructureNotifyMask|ButtonPressMask
    |EnterWindowMask|LeaveWindowMask|StructureNotifyMask
    |PropertyChangeMask;
    XChangeWindowAttributes(dpy, root, CWEventMask|CWCursor, &wa);
    XSelectInput(dpy, root, wa.event_mask);
    grabkeys();
    void
    showhide(Client *c) {
    if(!c)
    return;
    if(ISVISIBLE(c)) { /* show clients top down */
    XMoveWindow(dpy, c->win, c->x, c->y);
    if((!c->mon->lt[c->mon->sellt]->arrange || c->isfloating) && !c->isfullscreen)
    resize(c, c->x, c->y, c->w, c->h, False);
    showhide(c->snext);
    else { /* hide clients bottom up */
    showhide(c->snext);
    XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y);
    void
    sigchld(int unused) {
    if(signal(SIGCHLD, sigchld) == SIG_ERR)
    die("Can't install SIGCHLD handler");
    while(0 < waitpid(-1, NULL, WNOHANG));
    void
    spawn(const Arg *arg) {
    if(fork() == 0) {
    if(dpy)
    close(ConnectionNumber(dpy));
    setsid();
    execvp(((char **)arg->v)[0], (char **)arg->v);
    fprintf(stderr, "dwm: execvp %s", ((char **)arg->v)[0]);
    perror(" failed");
    exit(EXIT_SUCCESS);
    void
    tag(const Arg *arg) {
    if(selmon->sel && arg->ui & TAGMASK) {
    selmon->sel->tags = arg->ui & TAGMASK;
    arrange(selmon);
    void
    tagmon(const Arg *arg) {
    if(!selmon->sel || !mons->next)
    return;
    sendmon(selmon->sel, dirtomon(arg->i));
    int
    textnw(const char *text, unsigned int len) {
    XRectangle r;
    if(dc.font.set) {
    XmbTextExtents(dc.font.set, text, len, NULL, &r);
    return r.width;
    return XTextWidth(dc.font.xfont, text, len);
    void
    ntile(Monitor *m) {
    int x, y, h, w, mw, nmax, nm;
    unsigned int i, n;
    Client *c;
    snprintf(m->ltsymbol, sizeof m->ltsymbol, "=%d]", m->nmasters[m->curtag]);
    for(n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++);
    c = nexttiled(m->clients);
    nmax = m->nmasters[m->curtag];
    nm = nmax == 1 ? 1 : MIN(n / 2, nmax);
    if(nm > n)
    nm = n;
    /* master */
    if(nm > 0) {
    mw = selmon->mfacts[selmon->curtag] * m->ww;
    h = m->wh / nm;
    if(h < bh)
    h = m->wh;
    y = m->wy;
    for(i = 0; i < nm; i++, c = nexttiled(c->next)) {
    resize(c, m->wx, y, (n == nm ? m->ww : mw) - 2 * c->bw,
    ((i + 1 == nm) ? m->wy + m->wh - y : h) - 2 * c->bw, False);
    if(h != m->wh)
    y = c->y + HEIGHT(c);
    n -= nm;
    } else
    mw = 0;
    if(n == 0)
    return;
    /* tile stack */
    x = m->wx + mw;
    y = m->wy;
    w = m->ww - mw;
    h = m->wh / n;
    if(h < bh)
    h = m->wh;
    for(i = 0; c; c = nexttiled(c->next), i++) {
    resize(c, x, y, w - 2 * c->bw,
    ((i + 1 == n) ? m->wy + m->wh - y : h) - 2 * c->bw, False);
    if(h != m->wh)
    y = c->y + HEIGHT(c);
    void
    togglebar(const Arg *arg) {
    selmon->showbar = !selmon->showbar;
    updatebarpos(selmon);
    XMoveResizeWindow(dpy, selmon->barwin, selmon->wx, selmon->by, selmon->ww, bh);
    arrange(selmon);
    void
    togglefloating(const Arg *arg) {
    if(!selmon->sel)
    return;
    selmon->sel->isfloating = !selmon->sel->isfloating || selmon->sel->isfixed;
    if(selmon->sel->isfloating)
    resize(selmon->sel, selmon->sel->x, selmon->sel->y,
    selmon->sel->w, selmon->sel->h, False);
    arrange(selmon);
    void
    toggletag(const Arg *arg) {
    unsigned int newtags;
    unsigned int i;
    if(!selmon->sel)
    return;
    newtags = selmon->sel->tags ^ (arg->ui & TAGMASK);
    if(newtags) {
    selmon->sel->tags = newtags;
    if(newtags == ~0) {
    selmon->prevtag = selmon->curtag;
    selmon->curtag = 0;
    if(!(newtags & 1 << (selmon->curtag - 1))) {
    selmon->prevtag = selmon->curtag;
    for (i=0; !(newtags & 1 << i); i++);
    selmon->curtag = i + 1;
    selmon->sel->tags = newtags;
    selmon->lt[selmon->sellt] = selmon->lts[selmon->curtag];
    arrange(selmon);
    void
    toggleview(const Arg *arg) {
    unsigned int newtagset = selmon->tagset[selmon->seltags] ^ (arg->ui & TAGMASK);
    if(newtagset) {
    selmon->tagset[selmon->seltags] = newtagset;
    arrange(selmon);
    void
    unfocus(Client *c, Bool setfocus) {
    if(!c)
    return;
    grabbuttons(c, False);
    XSetWindowBorder(dpy, c->win, dc.norm[ColBorder]);
    if(setfocus)
    XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime);
    void
    unmanage(Client *c, Bool destroyed) {
    Monitor *m = c->mon;
    XWindowChanges wc;
    /* The server grab construct avoids race conditions. */
    detach(c);
    detachstack(c);
    if(!destroyed) {
    wc.border_width = c->oldbw;
    XGrabServer(dpy);
    XSetErrorHandler(xerrordummy);
    XConfigureWindow(dpy, c->win, CWBorderWidth, &wc); /* restore border */
    XUngrabButton(dpy, AnyButton, AnyModifier, c->win);
    setclientstate(c, WithdrawnState);
    XSync(dpy, False);
    XSetErrorHandler(xerror);
    XUngrabServer(dpy);
    free(c);
    focus(NULL);
    arrange(m);
    void
    unmapnotify(XEvent *e) {
    Client *c;
    XUnmapEvent *ev = &e->xunmap;
    if((c = wintoclient(ev->window)))
    unmanage(c, False);
    void
    updatebars(void) {
    Monitor *m;
    XSetWindowAttributes wa = {
    .override_redirect = True,
    .background_pixmap = ParentRelative,
    .event_mask = ButtonPressMask|ExposureMask
    for(m = mons; m; m = m->next) {
    m->barwin = XCreateWindow(dpy, root, m->wx, m->by, m->ww, bh, 0, DefaultDepth(dpy, screen),
    CopyFromParent, DefaultVisual(dpy, screen),
    CWOverrideRedirect|CWBackPixmap|CWEventMask, &wa);
    XDefineCursor(dpy, m->barwin, cursor[CurNormal]);
    XMapRaised(dpy, m->barwin);
    void
    updatebarpos(Monitor *m) {
    m->wy = m->my;
    m->wh = m->mh;
    if(m->showbar) {
    m->wh -= bh;
    m->by = m->topbar ? m->wy : m->wy + m->wh;
    m->wy = m->topbar ? m->wy + bh : m->wy;
    else
    m->by = -bh;
    Bool
    updategeom(void) {
    Bool dirty = False;
    #ifdef XINERAMA
    if(XineramaIsActive(dpy)) {
    int i, j, n, nn;
    Client *c;
    Monitor *m;
    XineramaScreenInfo *info = XineramaQueryScreens(dpy, &nn);
    XineramaScreenInfo *unique = NULL;
    for(n = 0, m = mons; m; m = m->next, n++);
    /* only consider unique geometries as separate screens */
    if(!(unique = (XineramaScreenInfo *)malloc(sizeof(XineramaScreenInfo) * nn)))
    die("fatal: could not malloc() %u bytes\n", sizeof(XineramaScreenInfo) * nn);
    for(i = 0, j = 0; i < nn; i++)
    if(isuniquegeom(unique, j, &info[i]))
    memcpy(&unique[j++], &info[i], sizeof(XineramaScreenInfo));
    XFree(info);
    nn = j;
    if(n <= nn) {
    for(i = 0; i < (nn - n); i++) { /* new monitors available */
    for(m = mons; m && m->next; m = m->next);
    if(m)
    m->next = createmon();
    else
    mons = createmon();
    for(i = 0, m = mons; i < nn && m; m = m->next, i++)
    if(i >= n
    || (unique[i].x_org != m->mx || unique[i].y_org != m->my
    || unique[i].width != m->mw || unique[i].height != m->mh))
    dirty = True;
    m->num = i;
    m->mx = m->wx = unique[i].x_org;
    m->my = m->wy = unique[i].y_org;
    m->mw = m->ww = unique[i].width;
    m->mh = m->wh = unique[i].height;
    updatebarpos(m);
    else { /* less monitors available nn < n */
    for(i = nn; i < n; i++) {
    for(m = mons; m && m->next; m = m->next);
    while(m->clients) {
    dirty = True;
    c = m->clients;
    m->clients = c->next;
    detachstack(c);
    c->mon = mons;
    attach(c);
    attachstack(c);
    if(m == selmon)
    selmon = mons;
    cleanupmon(m);
    free(unique);
    else
    #endif /* XINERAMA */
    /* default monitor setup */
    if(!mons)
    mons = createmon();
    if(mons->mw != sw || mons->mh != sh) {
    dirty = True;
    mons->mw = mons->ww = sw;
    mons->mh = mons->wh = sh;
    updatebarpos(mons);
    if(dirty) {
    selmon = mons;
    selmon = wintomon(root);
    return dirty;
    void
    updatenumlockmask(void) {
    unsigned int i, j;
    XModifierKeymap *modmap;
    numlockmask = 0;
    modmap = XGetModifierMapping(dpy);
    for(i = 0; i < 8; i++)
    for(j = 0; j < modmap->max_keypermod; j++)
    if(modmap->modifiermap[i * modmap->max_keypermod + j]
    == XKeysymToKeycode(dpy, XK_Num_Lock))
    numlockmask = (1 << i);
    XFreeModifiermap(modmap);
    void
    updatesizehints(Client *c) {
    long msize;
    XSizeHints size;
    if(!XGetWMNormalHints(dpy, c->win, &size, &msize))
    /* size is uninitialized, ensure that size.flags aren't used */
    size.flags = PSize;
    if(size.flags & PBaseSize) {
    c->basew = size.base_width;
    c->baseh = size.base_height;
    else if(size.flags & PMinSize) {
    c->basew = size.min_width;
    c->baseh = size.min_height;
    else
    c->basew = c->baseh = 0;
    if(size.flags & PResizeInc) {
    c->incw = size.width_inc;
    c->inch = size.height_inc;
    else
    c->incw = c->inch = 0;
    if(size.flags & PMaxSize) {
    c->maxw = size

    The diff you use rename tile() to ntile(), you should not have tile in your config.h. The rest of errors probably relate to what the diff has nerfed, or should be gone once you fix that tile.
    I think you should stay on 5.8.2 until all the patches have support for 5.9 if you can't patch on patch on your own.
    (edit) that github repo has issues, it might be good idea to create issue if that patch really have compatible issue with 5.9. That would benefit all other patch users.
    Last edited by livibetter (2011-09-12 14:55:00)

Maybe you are looking for

  • Error while creating Discussions for a document inside a room

    Hi, I am getting an error when i am trying to start a discussion for a document. When i go back to the details screen and try to add a discussion it shows that the discussion is actually created inspite of the error being displayed. Thanks Regards Pr

  • Tracks in my albums are all in the wrong order!

    Hi, as it turns out I have a problem. Some of my albums on my iPad have all mixed up, the tracks we appear as, instead of in correct order (listed as 1. 2. 3. Well you get the idea), are in the wrong order! Everything was fine before I update to iOS

  • User entry without restriction

    Hi Guys, I was wondering if there was way of getting a user entry without actually restricting based on the entry. I need the user to enter a year value (mandatory)and based on that, I have to create another variable using User exit. How can that be

  • Adjust fontSize of TextInput

    Hey all, I'm  using the "changed" event of a TextInput to do the following: while ( Textfield.textWidth > Textfield.width ) {      Textfield.setStyle( "fontSize", Textfield.getStyle( "fontSize" ) - 1 ); It should change the fontSize so the text alway

  • Can't log in using Opera or Safari on a Mac

    Login to the support forum fails using Opera 10.60 or Safari 5.1.2 on a Mac (OS X 10.7.2). It only works with Firefox 9.0.1. These are all up to date. How come SE has a forum where login is this brittle? What can be done about it? I don't want to hav