Index: tags/2.8.2/AUTHORS
===================================================================
--- tags/2.8.2/AUTHORS	(revision 117)
+++ tags/2.8.2/AUTHORS	(revision 117)
@@ -0,0 +1,12 @@
+Bas van der Vlies <basv@sara.nl>
+
+Configure and Debian package support: 
+	Yaroslav Halchenko
+
+PBSQuery module:
+	Roy Dragseth
+	Bas van der Vlies
+
+Contributors:
+	Walter de Jong
+	Ramon Bastiaans
Index: tags/2.8.2/CHANGES
===================================================================
--- tags/2.8.2/CHANGES	(revision 117)
+++ tags/2.8.2/CHANGES	(revision 117)
@@ -0,0 +1,293 @@
+=========== Version 2.8.2
+
+Configure has a new option:
+	--with-pbsdir=PATH
+
+If set it will use PATH specified as argument to
+find the pbs/torque libraries. If unset it will use
+some useful defaults to find the libaries.
+Suggested by: Troy Baer
+
+PBSQuery.py:
+	- If we can not make a connection with the server
+	  then raise an exception and let the programmer 
+	  decides what to do.
+
+pbs_python.spec:
+	- It can now handle mode bits
+	  Author: Martin Pels from SARA
+        
+=========== Version 2.8.0
+
+setup.py:
+	- Added /usr/lib to PBS_LIB_DIR
+
+pbs.py:
+	- Added new function "pbs.error()". This function checks if 
+	  an error has occured with a pbs function, eg:
+	    task_id = pbs.pbs_submit(c, attrl, "A.tsk", 'NULL', 'NULL')
+	    error_number, err_txt = pbs.error()
+	    if error_number:
+	   	print error_number, err_txt
+
+          prints the following message if script A.tsk does not exists:
+	    15042 (qsub) cannot access script file
+
+pbs_python.spec:
+	- to make rpm packages from the source package, initial version
+	Author: Martin Pels from SARA
+
+README:
+	- Now requires python 2.1 and higher
+	- Explain how to build DEBIAN package
+
+=========== Version 2.7.10
+
+PBSQuery.py:
+	Fixed an error. You always got all resources from eg nodes
+	even when you supplied an attribute list where you only
+	requested the 'state' of the node.
+
+	Updated the inline python documentation
+
+=========== Version 2.7.9
+
+Fixed an error the previous version was in DEBUG mode. So
+you get an lot undesired output on the screen.
+
+debian package now also generated a package with the write 
+version info.
+
+=========== Version 2.7.8
+
+Setup.py:
+	Can also handle ROCKS installations + the version
+	info is now the same as pbs.py
+	Thanks to: Roy Dragseth
+
+=========== Version 2.7.7
+
+PBSQuery module: 
+  It can now be used in daemon programs. The pbs_server closes
+  the connection after an certain amount of time. This is fixed,
+  before every query there is an new connection and if the query 
+  is finished the connection is closed.
+  
+=========== Version 2.7.6
+
+Now setup.py can also handle old Oscar Installations. 
+Thanks To: Robin Humble
+
+Fixed an print statement fix in new_interface.py:
+Thanks To: Robin Humble
+
+Made some improvements for PBSQuery module:
+	- Updated the documentation
+	- Added the has_key() function to all
+ 	  PBSObjects. So that the behaviour is similar to 
+          an dictionary
+	  Suggested By: Ramon Bastiaans
+	
+=========== Version 2.7.5
+ Added PBSQuery module.  This module requires pbs.py and it a simple module 
+ for querying the pbs server. The documentation is in the module. Use for 
+ example ipython to read it.
+
+ Written By: Roy Dragseth 
+             Bas van der Vlies
+
+ eg: ( see also examples/new_interface.py)
+
+ from PBSQuery import PBSQuery
+ p = PBSQuery()
+
+ jobs = p.getjobs()
+ for name, job in jobs.items()
+ 	print job
+
+=========== Version 2.7.4
+ New versions fixes an bug in function pbs.pbs_statnode(). 
+ Reported by: Keith Poirier 
+
+ Configure support:
+ Contributed By: Yaroslav Halchenko
+
+ Debian package support:
+ Contributed By: Yaroslav Halchenko
+
+ Added Support for Debuging the interface, You must edit pbs_wrap.c 
+ and search for SARA_DEBUG:
+	#define SARA_DEBUG 1
+ Implemented by: Ramon Bastiaans
+
+ examples/pbsmon.py:
+ 	- Fixed an error when regex fails to determine node number, 
+	  no status was displayed
+        - It will now display and 'j' if the node is free for the batch
+	  system and a job runs on the node (SMP-systems).
+ Changed by: Bas van der Vlies
+
+ examples/rack_pbsmon.py:
+ 	- An pbsmon that display node info per rack
+	- Edit the rack_pbsmon.py to adjust the values. It requires
+	  that hostname contains rack and node id's, 
+	  eg: gb-r<number>n<number>
+ Contributed by: Walter de Jong
+
+=========== Version 2.7.3
+ The name SPBS is changed to the new name TORQUE (Tera-scale Open-source
+ Resource and QUEing manager). 
+
+ The interface support OPENPBS and TORQUE.
+
+=========== Version 2.7.2
+ Some minor changes to include files. Now the Scalable PBS keywords
+ are also supported ( server attribute names: node_ping_rate and
+ node_check_rate). This does not interfere with the openpbs software.
+
+ pbsmon.py could not handle an one node cluster. Fixed it.
+
+=========== Version 2.7
+ Forgot to wrap the pbs_statfree() function. So we could not free
+ allocated memory from functions that return 'struct batch_status *' 
+ like pbs_statjob().
+
+ pbsmon.py can now handle 2 and 3 digit hostnames. Patch supplied by
+ Daniel Olson
+
+=========== Version 2.6.1
+ Setup.py now checks if all openpbs libraries are installed to compile the 
+ package.
+
+=========== Version 2.6
+
+ Fixed a bug in the pbs python module. Forgot to map the pbs_statjob()
+ function. This bug prevented to pass 'struct attrl' variables to this
+ function. Thanks to Evelyn Shiu for reporting this bug.
+
+
+=========== Version 2.5
+ Added the OpenPbs logging functions (log.h and liblog.a). There
+ is an example in the examples directory: logpbs.py
+
+ Fixed a bug in examples/resmom_info.py used the default port for
+ pbs_resmon if getservbyname fails.
+
+ Fixed a bug in resmom code. If the user has no permissions to query
+ the pbs_mom daemon a empty string is returned. Now we check for
+ the empty string. So we do not get a python exception.
+
+ Fixed a bug in setup.py forgot the exit statement when we did not
+ find the pbs libraries.
+
+=========== Version 2.3
+ Bugfix in the pbsnodes-a.py. Forgot to import the sys module.
+
+ Removed some obsolete code. 
+
+ As for now we make use of the distutils module. So the package
+ is automatically compiled and installed in proper directories, usage:
+    python setup.py install
+ This requires that the package 'distutils' must be installed. As for
+ version 1.6 and higher it is in the distribution.
+
+ Added a function that prints the pbs python interface version. So we
+ can check if we have the right interface version:
+ import pbs
+ print pbs.version()
+ 
+
+=========== Version 2.2
+
+In this release we can query the pbs_mom daemon with the aid of
+resource management functions:
+   pbs.openrm()
+   pbs.closerm()
+   pbs.downrm()
+   pbs.configrm()
+   pbs.addreq()
+   pbs.allreq()
+   pbs.flushreq()
+   pbs.activereq()
+   pbs.fullresp()
+   pbs.getreq()
+
+There is also a python function:
+   pbs.get_mom_values(id, [list]):
+     id   - connection id of pbs.openrm(node-name, port-number)
+     list - Is a optional paramter. A list of resource keywords
+
+   If 'list' is not supplied then this function will get the values
+   for the standard resource keywords, eg uname, loadave, .. + 'arch' 
+   depended keywords. The arch feature is only implemented for linux, 
+   but it can easily be ported to other oses.
+
+   if 'list' is supplied then we only fetch values for the keywords
+   that are in the list.
+
+   The function returns a dictonary. The keys are the resource keywords.
+
+   See 'resmom_info.py' for a example of this new feature.
+
+=========== Version 2.0
+
+The previous version was a simple interface above the PBS C API LIB.  This 
+interface has gone a major changes. The most noticeable change is  that
+the functions accept/return Python lists instead of C-lists.  So you can now 
+use standard Python syntax for manipulating Python lists. If you are familar 
+with the Python syntax then you will appreciate this new interface.
+
+NOTE:
+  This interface is NOT compatible with the old one
+
+Here are some guidelines to convert your code to the new one:
+
+The constructors for the struct has gone a major change:
+  old code:
+    temp = pbs.new_attrl();
+    attrl_p = pbs.attrlPtr(temp)
+    attrl_p.name = 'state'
+
+  new_code:
+     attr_l = pbs.new_attrl(1)   // Creates a list of attrl structs length 1
+     attr_l[0].name = 'state'
+
+
+The pbs_stat functions returns Python lists instead of C-lists. There is
+NO next field anymore:
+  old_code:
+    temp = pbs.new_attrl();
+    attrl_p = pbs.attrlPtr(temp)
+    attrl_p.this = 'NULL'
+
+    nodes = pbs.pbs_statnode(con, "", attrl_p, "NULL")
+
+    while nodes.this != 'NULL':
+      print nodes.name
+
+      node_attrl = nodes.attribs
+      while node_attrl.this != 'NULL':
+        print '\t', node_attrl.name, '=', node_attrl.value
+	node_attrl = node_attrl.next
+
+    nodes = nodes.next 
+
+
+  new_code:
+    nodes = pbs.pbs_statnode(con, "", "NULL", "NULL")
+    for node in nodes:
+      print node.name
+      for attrib in node.attribs:
+        print '\t', attrib.name, '=', attrib.value
+
+Another advantage is you can use the print statement to show the
+connect of attrl and attropl classes:
+   attr_l = pbs.new_attrl(2)
+   attr_l[0].name = 'bas'
+   attr_l[0].value = 'van der Vlies'
+
+   print  attr_l[0]
+   >> (bas,,van der Vlies)
+    
+I hope these examples illustrate the changes. If you specify a wrong type
+for a function then function wil raise a Python exception.
Index: tags/2.8.2/LICENSE
===================================================================
--- tags/2.8.2/LICENSE	(revision 117)
+++ tags/2.8.2/LICENSE	(revision 117)
@@ -0,0 +1,76 @@
+
+        OpenPBS (Portable Batch System) v2.3 Software License
+
+Copyright (c) 1999-2000 Veridian Information Solutions, Inc.
+All rights reserved.
+
+---------------------------------------------------------------------------
+For a license to use or redistribute the OpenPBS software under conditions
+other than those described below, or to purchase support for this software,
+please contact Veridian Systems, PBS Products Department ("Licensor") at:
+
+   www.OpenPBS.org  +1 650 967-4675                  sales@OpenPBS.org
+                       877 902-4PBS (US toll-free)
+---------------------------------------------------------------------------
+
+This license covers use of the OpenPBS v2.3 software (the "Software") at
+your site or location, and, for certain users, redistribution of the
+Software to other sites and locations.  Use and redistribution of
+OpenPBS v2.3 in source and binary forms, with or without modification,
+are permitted provided that all of the following conditions are met.
+After December 31, 2001, only conditions 3-6 must be met:
+
+1. Commercial and/or non-commercial use of the Software is permitted
+   provided a current software registration is on file at www.OpenPBS.org.
+   If use of this software contributes to a publication, product, or
+   service, proper attribution must be given; see www.OpenPBS.org/credit.html
+
+2. Redistribution in any form is only permitted for non-commercial,
+   non-profit purposes.  There can be no charge for the Software or any
+   software incorporating the Software.  Further, there can be no
+   expectation of revenue generated as a consequence of redistributing
+   the Software.
+
+3. Any Redistribution of source code must retain the above copyright notice
+   and the acknowledgment contained in paragraph 6, this list of conditions
+   and the disclaimer contained in paragraph 7.
+
+4. Any Redistribution in binary form must reproduce the above copyright
+   notice and the acknowledgment contained in paragraph 6, this list of
+   conditions and the disclaimer contained in paragraph 7 in the
+   documentation and/or other materials provided with the distribution.
+
+5. Redistributions in any form must be accompanied by information on how to
+   obtain complete source code for the OpenPBS software and any
+   modifications and/or additions to the OpenPBS software.  The source code
+   must either be included in the distribution or be available for no more
+   than the cost of distribution plus a nominal fee, and all modifications
+   and additions to the Software must be freely redistributable by any party
+   (including Licensor) without restriction.
+
+6. All advertising materials mentioning features or use of the Software must
+   display the following acknowledgment:
+
+    "This product includes software developed by NASA Ames Research Center,
+    Lawrence Livermore National Laboratory, and Veridian Information Solutions,
+    Inc.  Visit www.OpenPBS.org for OpenPBS software support,
+    products, and information."
+
+7. DISCLAIMER OF WARRANTY
+
+THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. ANY EXPRESS
+OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT
+ARE EXPRESSLY DISCLAIMED.
+
+IN NO EVENT SHALL VERIDIAN CORPORATION, ITS AFFILIATED COMPANIES, OR THE
+U.S. GOVERNMENT OR ANY OF ITS AGENCIES BE LIABLE FOR ANY DIRECT OR INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
+OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+This license will be governed by the laws of the Commonwealth of Virginia,
+without reference to its choice of law rules.
Index: tags/2.8.2/LICENSE.SARA
===================================================================
--- tags/2.8.2/LICENSE.SARA	(revision 117)
+++ tags/2.8.2/LICENSE.SARA	(revision 117)
@@ -0,0 +1,24 @@
+/*
+ * This program is being developed by Bas van der Vlies <basv@sara.nl>.
+ *
+ * Copyright (C) 2000, SARA.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation without fee is hereby granted, provided that the above 
+ * copyright notice appears in all copies and that both the copyright notice 
+ * and this permission notice appear in supporting documentation.
+ *
+ * Neither SARA (Stichting Academisch Rekencentrum Amsterdam) nor the
+ * nor the author make any representations about the suitability of this
+ * software for any purpose. This software is provided ``as is'' without
+ * express or implied warranty.
+ *
+ */
+********************************************************************        
+*                                                                  *        
+*  Bas van der Vlies                     e-mail: basv@sara.nl      *        
+*  SARA - Academic Computing Services    phone:  +31 20 592 8012   *        
+*  Kruislaan 415                         fax:    +31 20 6683167    *        
+*  1098 SJ Amsterdam                     WWW:    www.sara.nl       *        
+*                                                                  *        
+********************************************************************      
Index: tags/2.8.2/Makefile.in
===================================================================
--- tags/2.8.2/Makefile.in	(revision 117)
+++ tags/2.8.2/Makefile.in	(revision 117)
@@ -0,0 +1,36 @@
+TAR=tar
+GZIP_ENV=--best
+
+PREFIX=@prefix@
+exec_prefix=$(PREFIX)
+BINDIR=$(PREFIX)/bin
+PBSLIB=@pbspath@
+
+
+DOCDIR=/usr/share/doc/pbs-python
+EXAMPLES=$(DOCDIR)/examples
+
+.PHONY: install pythonlib
+pythonlib:
+	#(cd src; make)
+	python setup.py build
+
+install: pythonlib sara_install
+	#mkdir -p $(DESTDIR)/@pyexecdir@ $(DESTDIR)/$(BINDIR)
+	#install build/lib*/* $(DESTDIR)/@pyexecdir@
+	#(cd examples; for i in *py; do install $$i  $(DESTDIR)/$(EXAMPLES)/$${i//.py/}; done)
+	#python ./setup.py install --prefix $(DESTDIR)/@pyexecdir@ ;
+
+	python ./setup.py install --prefix $(DESTDIR)/$(exec_prefix) ;
+	install -D LICENSE.SARA $(DESTDIR)/$(DOCDIR)/LICENSE.SARA
+	(cd examples; for i in *py; do install -D $$i  $(DESTDIR)/$(EXAMPLES)/$${i}; done)
+
+sara_install:
+	install -D examples/rack_pbsmon.py $(DESTDIR)/$(BINDIR)/pbsmon
+
+clean:
+	cd src; make clean	
+	rm -rf config.log config.cache config.status build
+
+distclean: clean
+	rm -rf Makefile
Index: tags/2.8.2/README
===================================================================
--- tags/2.8.2/README	(revision 117)
+++ tags/2.8.2/README	(revision 117)
@@ -0,0 +1,65 @@
+the latest stable pbs_python interface is available from:
+	ftp://ftp.sara.nl/pub/outgoing/pbs_python.tar.gz
+
+Pbs_python interface is a wrapper class for the OPENPBS/TORQUE C LIB API. 
+Now you can write utilities/extensions in Python instead of C.  
+
+The Python wrapper class is tested on:
+
+  - Intel cluster debian GNU/LINUX woody/sarge OPENPBS 2.3.16, 
+    TORQUE 1.0.1p4, 1.1.0p4 and up
+
+  - For X86_64 systems you have to compile torque/openpbs with 
+    the -fPIC option. Else you can not build the python module
+
+  - Compaq Alpha cluster debian GNU/LINUX woody OPENPBS 2.3.16
+
+  - SGI Origin 3000: Irix 6.5, OPENPBS 2.3.16
+
+  - TRU64 system, NOTE: must rename libnet.a to libpbs_net.a and edit
+    setup.py to reflect the change. There is also a system wide libnet.so.
+
+  - It should run on different OSes.
+
+In the past our Alpha cluster was redhat (6.2)  and we had to add '-lots'
+to the LIBS line
+
+--- Compile and install the package: (Require python 2.1 and higher)
+
+  As for python version 1.6 and higher the procedure is:
+    ./configure
+    make
+    make install
+
+  Debian package:
+    debian/rules binary
+
+--- Testing the package:
+
+The test programs are include as a reference how to use the PBS
+python module. You have to edit some test programs to reflect
+your PBS installation.
+
+pbsmon.py        - ascii xpbsmon
+rack_pbsmon.py   - ascii xpbsmon by rack layout
+pbsnodes-a.py    - pbsnodes -a
+pbs_version.py   - print server version
+set_property.py  - set some node properties
+resmom_info.py   - queries the pbs_mom daemon on the nodes
+logpbs.py	 - Shows the usage of the PBS logging routines
+new_interface.py - Example how to use PBSQuery module
+PBSQuery.py      - python <install_path>/PBSQuery.py (has builtin demo)
+
+Comments,suggestions or bugfixes mail them to: Bas van der Vlies <basv@sara.nl>
+For more info about SARA see:
+	http://www.sara.nl/index_eng.html
+	
+
+********************************************************************
+*                                                                  *
+*  Bas van der Vlies                     e-mail: basv@sara.nl      *
+*  SARA - Academic Computing Services    phone:  +31 20 592 8012   *
+*  Kruislaan 415                         fax:    +31 20 6683167    *
+*  1098 SJ Amsterdam                     WWW:    www.sara.nl       *
+*                                                                  *
+********************************************************************
Index: tags/2.8.2/TODO
===================================================================
--- tags/2.8.2/TODO	(revision 117)
+++ tags/2.8.2/TODO	(revision 117)
@@ -0,0 +1,1 @@
+-  Setup a web site for documentation and an email list 
Index: tags/2.8.2/aclocal.m4
===================================================================
--- tags/2.8.2/aclocal.m4	(revision 117)
+++ tags/2.8.2/aclocal.m4	(revision 117)
@@ -0,0 +1,1023 @@
+# generated automatically by aclocal 1.7.9 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002
+# Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+# Do all the work for Automake.                            -*- Autoconf -*-
+
+# This macro actually does too much some checks are only needed if
+# your package does certain things.  But this isn't really a big deal.
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 10
+
+AC_PREREQ([2.54])
+
+# Autoconf 2.50 wants to disallow AM_ names.  We explicitly allow
+# the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out.  PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition.  After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+ AC_REQUIRE([AC_PROG_INSTALL])dnl
+# test to see if srcdir already configured
+if test "`cd $srcdir && pwd`" != "`pwd`" &&
+   test -f $srcdir/config.status; then
+  AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AM_MISSING_PROG(AMTAR, tar)
+AM_PROG_INSTALL_SH
+AM_PROG_INSTALL_STRIP
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+                  [_AM_DEPENDENCIES(CC)],
+                  [define([AC_PROG_CC],
+                          defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+                  [_AM_DEPENDENCIES(CXX)],
+                  [define([AC_PROG_CXX],
+                          defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+])
+])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated.  The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $1 | $1:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
+
+# Copyright 2002  Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.7"])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION so it can be traced.
+# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+	 [AM_AUTOMAKE_VERSION([1.7.9])])
+
+# Helper functions for option handling.                    -*- Autoconf -*-
+
+# Copyright 2001, 2002  Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 2
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# ------------------------------
+# Set option NAME.  Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ----------------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+#
+# Check to make sure that the build environment is sane.
+#
+
+# Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 3
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+   if test "$[*]" = "X"; then
+      # -L didn't work.
+      set X `ls -t $srcdir/configure conftest.file`
+   fi
+   rm -f conftest.file
+   if test "$[*]" != "X $srcdir/configure conftest.file" \
+      && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+      # If neither matched, then we have a broken ls.  This can happen
+      # if, for instance, CONFIG_SHELL is bash and it inherits a
+      # broken ls alias from the environment.  This has actually
+      # happened.  Such a system could not be considered "sane".
+      AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+alias in your environment])
+   fi
+
+   test "$[2]" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+
+#  -*- Autoconf -*-
+
+
+# Copyright 1997, 1999, 2000, 2001 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 3
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+
+# AM_AUX_DIR_EXPAND
+
+# Copyright 2001 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to `$srcdir/foo'.  In other projects, it is set to
+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory.  The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run.  This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+#    fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+#    fails if $ac_aux_dir is absolute,
+#    fails when called from a subdirectory in a VPATH build with
+#          a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir.  In an in-source build this is usually
+# harmless because $srcdir is `.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
+#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+#   MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH.  The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+# Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])
+
+AC_DEFUN([AM_AUX_DIR_EXPAND], [
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+
+# Copyright 2001 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+install_sh=${install_sh-"$am_aux_dir/install-sh"}
+AC_SUBST(install_sh)])
+
+# AM_PROG_INSTALL_STRIP
+
+# Copyright 2001 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries.  This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'.  However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+  AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+#                                                          -*- Autoconf -*-
+# Copyright (C) 2003  Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 1
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot.  For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# serial 5						-*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003  Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+
+# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery.  Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+ifelse([$1], CC,   [depcc="$CC"   am_compiler_list=],
+       [$1], CXX,  [depcc="$CXX"  am_compiler_list=],
+       [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+       [$1], GCJ,  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+                   [depcc="$$1"   am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+               [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_$1_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+  fi
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      : > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    case $depmode in
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    none) break ;;
+    esac
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.
+    if depmode=$depmode \
+       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored.
+      if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else
+        am_cv_$1_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE(dependency-tracking,
+[  --disable-dependency-tracking Speeds up one-time builds
+  --enable-dependency-tracking  Do not reject slow dependency extractors])
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])
+])
+
+# Generate code to set up dependency tracking.   -*- Autoconf -*-
+
+# Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+#serial 2
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[for mf in $CONFIG_FILES; do
+  # Strip MF so we end up with the name of the file.
+  mf=`echo "$mf" | sed -e 's/:.*$//'`
+  # Check whether this is an Automake generated Makefile or not.
+  # We used to match only the files named `Makefile.in', but
+  # some people rename them; so instead we look at the file content.
+  # Grep'ing the first line is not enough: some people post-process
+  # each Makefile.in and add a new line on top of each file to say so.
+  # So let's grep whole file.
+  if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
+    dirpart=`AS_DIRNAME("$mf")`
+  else
+    continue
+  fi
+  grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue
+  # Extract the definition of DEP_FILES from the Makefile without
+  # running `make'.
+  DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"`
+  test -z "$DEPDIR" && continue
+  # When using ansi2knr, U may be empty or an underscore; expand it
+  U=`sed -n -e '/^U = / s///p' < "$mf"`
+  test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
+  # We invoke sed twice because it is the simplest approach to
+  # changing $(DEPDIR) to its actual value in the expansion.
+  for file in `sed -n -e '
+    /^DEP_FILES = .*\\\\$/ {
+      s/^DEP_FILES = //
+      :loop
+	s/\\\\$//
+	p
+	n
+	/\\\\$/ b loop
+      p
+    }
+    /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \
+       sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+    # Make sure the directory exists.
+    test -f "$dirpart/$file" && continue
+    fdir=`AS_DIRNAME(["$file"])`
+    AS_MKDIR_P([$dirpart/$fdir])
+    # echo "creating $dirpart/$file"
+    echo '# dummy' > "$dirpart/$file"
+  done
+done
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled.  FIXME.  This creates each `.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Check to see how 'make' treats includes.	-*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 2
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+	@echo done
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+   am__include=include
+   am__quote=
+   _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+      am__include=.include
+      am__quote="\""
+      _am_result=BSD
+   fi
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# AM_CONDITIONAL                                              -*- Autoconf -*-
+
+# Copyright 1997, 2000, 2001 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 5
+
+AC_PREREQ(2.52)
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[ifelse([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+        [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])
+AC_SUBST([$1_FALSE])
+if $2; then
+  $1_TRUE=
+  $1_FALSE='#'
+else
+  $1_TRUE='#'
+  $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+  AC_MSG_ERROR([conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.])
+fi])])
+
+
+# Copyright 1999, 2000, 2001, 2002, 2003  Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# AM_PATH_PYTHON([MINIMUM-VERSION])
+
+# Adds support for distributing Python modules and packages.  To
+# install modules, copy them to $(pythondir), using the python_PYTHON
+# automake variable.  To install a package with the same name as the
+# automake package, install to $(pkgpythondir), or use the
+# pkgpython_PYTHON automake variable.
+
+# The variables $(pyexecdir) and $(pkgpyexecdir) are provided as
+# locations to install python extension modules (shared libraries).
+# Another macro is required to find the appropriate flags to compile
+# extension modules.
+
+# If your package is configured with a different prefix to python,
+# users will have to add the install directory to the PYTHONPATH
+# environment variable, or create a .pth file (see the python
+# documentation for details).
+
+# If the MINIMUM-VERSION argument is passed, AM_PATH_PYTHON will
+# cause an error if the version of python installed on the system
+# doesn't meet the requirement.  MINIMUM-VERSION should consist of
+# numbers and dots only.
+
+AC_DEFUN([AM_PATH_PYTHON],
+ [
+  dnl Find a Python interpreter.  Python versions prior to 1.5 are not
+  dnl supported because the default installation locations changed from
+  dnl $prefix/lib/site-python in 1.4 to $prefix/lib/python1.5/site-packages
+  dnl in 1.5.
+  m4_define([_AM_PYTHON_INTERPRETER_LIST],
+	    [python python2 python2.3 python2.2 python2.1 python2.0 python1.6 python1.5])
+
+  m4_if([$1],[],[
+    dnl No version check is needed.
+    # Find any Python interpreter.
+    AC_PATH_PROGS([PYTHON], _AM_PYTHON_INTERPRETER_LIST)
+    am_display_PYTHON=python
+  ], [
+    dnl A version check is needed.
+    if test -n "$PYTHON"; then
+      # If the user set $PYTHON, use it and don't search something else.
+      AC_MSG_CHECKING([whether $PYTHON version >= $1])
+      AM_PYTHON_CHECK_VERSION([$PYTHON], [$1],
+			      [AC_MSG_RESULT(yes)],
+			      [AC_MSG_ERROR(too old)])
+    else
+      # Otherwise, try each interpreter until we find one that satisfies
+      # VERSION.
+      AC_CACHE_CHECK([for a Python interpreter with version >= $1],
+	[am_cv_pathless_PYTHON],[
+	for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST : ; do
+          if test "$am_cv_pathless_PYTHON" = : ; then
+            AC_MSG_ERROR([no suitable Python interpreter found])
+	  fi
+          AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break])
+        done])
+      # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
+      AC_PATH_PROG([PYTHON], [$am_cv_pathless_PYTHON])
+      am_display_PYTHON=$am_cv_pathless_PYTHON
+    fi
+  ])
+
+  dnl Query Python for its version number.  Getting [:3] seems to be
+  dnl the best way to do this; it's what "site.py" does in the standard
+  dnl library.
+
+  AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version],
+    [am_cv_python_version=`$PYTHON -c "import sys; print sys.version[[:3]]"`])
+  AC_SUBST([PYTHON_VERSION], [$am_cv_python_version])
+
+  dnl Use the values of $prefix and $exec_prefix for the corresponding
+  dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX.  These are made
+  dnl distinct variables so they can be overridden if need be.  However,
+  dnl general consensus is that you shouldn't need this ability.
+
+  AC_SUBST([PYTHON_PREFIX], ['${prefix}'])
+  AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}'])
+
+  dnl At times (like when building shared libraries) you may want
+  dnl to know which OS platform Python thinks this is.
+
+  AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform],
+    [am_cv_python_platform=`$PYTHON -c "import sys; print sys.platform"`])
+  AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform])
+
+
+  dnl Set up 4 directories:
+
+  dnl pythondir -- where to install python scripts.  This is the
+  dnl   site-packages directory, not the python standard library
+  dnl   directory like in previous automake betas.  This behavior
+  dnl   is more consistent with lispdir.m4 for example.
+  dnl Query distutils for this directory.  distutils does not exist in
+  dnl Python 1.5, so we fall back to the hardcoded directory if it
+  dnl doesn't work.
+  AC_CACHE_CHECK([for $am_display_PYTHON script directory],
+    [am_cv_python_pythondir],
+    [am_cv_python_pythondir=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib(0,0,prefix='$PYTHON_PREFIX')" 2>/dev/null ||
+     echo "$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages"`])
+  AC_SUBST([pythondir], [$am_cv_python_pythondir])
+
+  dnl pkgpythondir -- $PACKAGE directory under pythondir.  Was
+  dnl   PYTHON_SITE_PACKAGE in previous betas, but this naming is
+  dnl   more consistent with the rest of automake.
+
+  AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE])
+
+  dnl pyexecdir -- directory for installing python extension modules
+  dnl   (shared libraries)
+  dnl Query distutils for this directory.  distutils does not exist in
+  dnl Python 1.5, so we fall back to the hardcoded directory if it
+  dnl doesn't work.
+  AC_CACHE_CHECK([for $am_display_PYTHON extension module directory],
+    [am_cv_python_pyexecdir],
+    [am_cv_python_pyexecdir=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib(1,0,prefix='$PYTHON_EXEC_PREFIX')" 2>/dev/null ||
+     echo "${PYTHON_EXEC_PREFIX}/lib/python${PYTHON_VERSION}/site-packages"`])
+  AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir])
+
+  dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE)
+
+  AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE])
+])
+
+
+# AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
+# ---------------------------------------------------------------------------
+# Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION.
+# Run ACTION-IF-FALSE otherwise.
+# This test uses sys.hexversion instead of the string equivalent (first
+# word of sys.version), in order to cope with versions such as 2.2c1.
+# hexversion has been introduced in Python 1.5.2; it's probably not
+# worth to support older versions (1.5.1 was released on October 31, 1998).
+AC_DEFUN([AM_PYTHON_CHECK_VERSION],
+ [prog="import sys, string
+# split strings by '.' and convert to numeric.  Append some zeros
+# because we need at least 4 digits for the hex conversion.
+minver = map(int, string.split('$2', '.')) + [[0, 0, 0]]
+minverhex = 0
+for i in xrange(0, 4): minverhex = (minverhex << 8) + minver[[i]]
+sys.exit(sys.hexversion < minverhex)"
+  AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])])
+
+# Copyright 2001 Free Software Foundation, Inc.             -*- Autoconf -*-
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# AM_RUN_LOG(COMMAND)
+# -------------------
+# Run COMMAND, save the exit status in ac_status, and log it.
+# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
+AC_DEFUN([AM_RUN_LOG],
+[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
+   ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   (exit $ac_status); }])
+
Index: tags/2.8.2/configure
===================================================================
--- tags/2.8.2/configure	(revision 117)
+++ tags/2.8.2/configure	(revision 117)
@@ -0,0 +1,2273 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.59.
+#
+# Copyright (C) 2003 Free Software Foundation, Inc.
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+  set -o posix
+fi
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+  LC_TELEPHONE LC_TIME
+do
+  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+    eval $as_var=C; export $as_var
+  else
+    $as_unset $as_var
+  fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)$' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+  	  /^X\/\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\/\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2"  || {
+  # Find who we are.  Look in the path if we contain no path at all
+  # relative or not.
+  case $0 in
+    *[\\/]* ) as_myself=$0 ;;
+    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+
+       ;;
+  esac
+  # We did not find ourselves, most probably we were run as `sh COMMAND'
+  # in which case we are not to be found in the path.
+  if test "x$as_myself" = x; then
+    as_myself=$0
+  fi
+  if test ! -f "$as_myself"; then
+    { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
+   { (exit 1); exit 1; }; }
+  fi
+  case $CONFIG_SHELL in
+  '')
+    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for as_base in sh bash ksh sh5; do
+	 case $as_dir in
+	 /*)
+	   if ("$as_dir/$as_base" -c '
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then
+	     $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+	     $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+	     CONFIG_SHELL=$as_dir/$as_base
+	     export CONFIG_SHELL
+	     exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+	   fi;;
+	 esac
+       done
+done
+;;
+  esac
+
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+  # uniformly replaced by the line number.  The first 'sed' inserts a
+  # line-number line before each line; the second 'sed' does the real
+  # work.  The second script uses 'N' to pair each line-number line
+  # with the numbered line, and appends trailing '-' during
+  # substitution so that $LINENO is not a special case at line end.
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)
+  sed '=' <$as_myself |
+    sed '
+      N
+      s,$,-,
+      : loop
+      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+      t loop
+      s,-$,,
+      s,^['$as_cr_digits']*\n,,
+    ' >$as_me.lineno &&
+  chmod +x $as_me.lineno ||
+    { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+   { (exit 1); exit 1; }; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensible to this).
+  . ./$as_me.lineno
+  # Exit status is that of the last command.
+  exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+  *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T='	' ;;
+  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+  # We could just check for DJGPP; but this test a) works b) is more generic
+  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+  if test -f conf$$.exe; then
+    # Don't use ln at all; we don't have any links
+    as_ln_s='cp -p'
+  else
+    as_ln_s='ln -s'
+  fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s=ln
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" 	$as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+exec 6>&1
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_config_libobj_dir=.
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+# Maximum number of lines to put in a shell here document.
+# This variable seems obsolete.  It should probably be removed, and
+# only ac_max_sed_lines should be used.
+: ${ac_max_here_lines=38}
+
+# Identity of this package.
+PACKAGE_NAME=
+PACKAGE_TARNAME=
+PACKAGE_VERSION=
+PACKAGE_STRING=
+PACKAGE_BUGREPORT=
+
+ac_unique_file="src/pbs.py"
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS pyexecdir pbspath PYTHON PYTHON_VERSION PYTHON_PREFIX PYTHON_EXEC_PREFIX PYTHON_PLATFORM pythondir pkgpythondir pkgpyexecdir LIBOBJS LTLIBOBJS'
+ac_subst_files=''
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datadir='${prefix}/share'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+libdir='${exec_prefix}/lib'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+infodir='${prefix}/info'
+mandir='${prefix}/man'
+
+ac_prev=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval "$ac_prev=\$ac_option"
+    ac_prev=
+    continue
+  fi
+
+  ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_option in
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+  | --da=*)
+    datadir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+   { (exit 1); exit 1; }; }
+    ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+    eval "enable_$ac_feature=no" ;;
+
+  -enable-* | --enable-*)
+    ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+   { (exit 1); exit 1; }; }
+    ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+    case $ac_option in
+      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+      *) ac_optarg=yes ;;
+    esac
+    eval "enable_$ac_feature='$ac_optarg'" ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst \
+  | --locals | --local | --loca | --loc | --lo)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+  | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c | -n)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid package name: $ac_package" >&2
+   { (exit 1); exit 1; }; }
+    ac_package=`echo $ac_package| sed 's/-/_/g'`
+    case $ac_option in
+      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+      *) ac_optarg=yes ;;
+    esac
+    eval "with_$ac_package='$ac_optarg'" ;;
+
+  -without-* | --without-*)
+    ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid package name: $ac_package" >&2
+   { (exit 1); exit 1; }; }
+    ac_package=`echo $ac_package | sed 's/-/_/g'`
+    eval "with_$ac_package=no" ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) { echo "$as_me: error: unrecognized option: $ac_option
+Try \`$0 --help' for more information." >&2
+   { (exit 1); exit 1; }; }
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+   { (exit 1); exit 1; }; }
+    ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
+    eval "$ac_envvar='$ac_optarg'"
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  { echo "$as_me: error: missing argument to $ac_option" >&2
+   { (exit 1); exit 1; }; }
+fi
+
+# Be sure to have absolute paths.
+for ac_var in exec_prefix prefix
+do
+  eval ac_val=$`echo $ac_var`
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
+    *)  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+# Be sure to have absolute paths.
+for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
+	      localstatedir libdir includedir oldincludedir infodir mandir
+do
+  eval ac_val=$`echo $ac_var`
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* ) ;;
+    *)  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+    echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+    If a cross compiler is detected then cross compile mode will be used." >&2
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then its parent.
+  ac_confdir=`(dirname "$0") 2>/dev/null ||
+$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$0" : 'X\(//\)[^/]' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$0" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+  srcdir=$ac_confdir
+  if test ! -r $srcdir/$ac_unique_file; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r $srcdir/$ac_unique_file; then
+  if test "$ac_srcdir_defaulted" = yes; then
+    { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
+   { (exit 1); exit 1; }; }
+  else
+    { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+   { (exit 1); exit 1; }; }
+  fi
+fi
+(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||
+  { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2
+   { (exit 1); exit 1; }; }
+srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
+ac_env_build_alias_set=${build_alias+set}
+ac_env_build_alias_value=$build_alias
+ac_cv_env_build_alias_set=${build_alias+set}
+ac_cv_env_build_alias_value=$build_alias
+ac_env_host_alias_set=${host_alias+set}
+ac_env_host_alias_value=$host_alias
+ac_cv_env_host_alias_set=${host_alias+set}
+ac_cv_env_host_alias_value=$host_alias
+ac_env_target_alias_set=${target_alias+set}
+ac_env_target_alias_value=$target_alias
+ac_cv_env_target_alias_set=${target_alias+set}
+ac_cv_env_target_alias_value=$target_alias
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<_ACEOF
+\`configure' configures this package to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+_ACEOF
+
+  cat <<_ACEOF
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+			  [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+			  [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR           user executables [EPREFIX/bin]
+  --sbindir=DIR          system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR       program executables [EPREFIX/libexec]
+  --datadir=DIR          read-only architecture-independent data [PREFIX/share]
+  --sysconfdir=DIR       read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR   modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR    modifiable single-machine data [PREFIX/var]
+  --libdir=DIR           object code libraries [EPREFIX/lib]
+  --includedir=DIR       C header files [PREFIX/include]
+  --oldincludedir=DIR    C header files for non-gcc [/usr/include]
+  --infodir=DIR          info documentation [PREFIX/info]
+  --mandir=DIR           man documentation [PREFIX/man]
+_ACEOF
+
+  cat <<\_ACEOF
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+
+  cat <<\_ACEOF
+
+Optional Packages:
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+
+  --with-pbsdir=PATH	directory that contains the torque libraries
+
+_ACEOF
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  ac_popdir=`pwd`
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d $ac_dir || continue
+    ac_builddir=.
+
+if test "$ac_dir" != .; then
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  # A "../" for each directory in $ac_dir_suffix.
+  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+  ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+  .)  # No --srcdir option.  We are building in place.
+    ac_srcdir=.
+    if test -z "$ac_top_builddir"; then
+       ac_top_srcdir=.
+    else
+       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+    fi ;;
+  [\\/]* | ?:[\\/]* )  # Absolute path.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir ;;
+  *) # Relative path.
+    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+  case "$ac_dir" in
+  .) ac_abs_builddir=`pwd`;;
+  [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+  *) ac_abs_builddir=`pwd`/"$ac_dir";;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+  case ${ac_top_builddir}. in
+  .) ac_abs_top_builddir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+  *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+  case $ac_srcdir in
+  .) ac_abs_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+  *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+  case $ac_top_srcdir in
+  .) ac_abs_top_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+  *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+  esac;;
+esac
+
+    cd $ac_dir
+    # Check for guested configure; otherwise get Cygnus style configure.
+    if test -f $ac_srcdir/configure.gnu; then
+      echo
+      $SHELL $ac_srcdir/configure.gnu  --help=recursive
+    elif test -f $ac_srcdir/configure; then
+      echo
+      $SHELL $ac_srcdir/configure  --help=recursive
+    elif test -f $ac_srcdir/configure.ac ||
+	   test -f $ac_srcdir/configure.in; then
+      echo
+      $ac_configure --help
+    else
+      echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi
+    cd "$ac_popdir"
+  done
+fi
+
+test -n "$ac_init_help" && exit 0
+if $ac_init_version; then
+  cat <<\_ACEOF
+
+Copyright (C) 2003 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+  exit 0
+fi
+exec 5>config.log
+cat >&5 <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by $as_me, which was
+generated by GNU Autoconf 2.59.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+hostinfo               = `(hostinfo) 2>/dev/null               || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  echo "PATH: $as_dir"
+done
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_sep=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *" "*|*"	"*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+      ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
+    2)
+      ac_configure_args1="$ac_configure_args1 '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+	ac_must_keep_next=false # Got value, back to normal.
+      else
+	case $ac_arg in
+	  *=* | --config-cache | -C | -disable-* | --disable-* \
+	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+	  | -with-* | --with-* | -without-* | --without-* | --x)
+	    case "$ac_configure_args0 " in
+	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+	    esac
+	    ;;
+	  -* ) ac_must_keep_next=true ;;
+	esac
+      fi
+      ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
+      # Get rid of the leading space.
+      ac_sep=" "
+      ;;
+    esac
+  done
+done
+$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
+$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Be sure not to use single quotes in there, as some shells,
+# such as our DU 5.0 friend, will then `close' the trap.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    cat <<\_ASBOX
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+_ASBOX
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+{
+  (set) 2>&1 |
+    case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
+    *ac_space=\ *)
+      sed -n \
+	"s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
+      ;;
+    *)
+      sed -n \
+	"s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+      ;;
+    esac;
+}
+    echo
+
+    cat <<\_ASBOX
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+_ASBOX
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=$`echo $ac_var`
+      echo "$ac_var='"'"'$ac_val'"'"'"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      cat <<\_ASBOX
+## ------------- ##
+## Output files. ##
+## ------------- ##
+_ASBOX
+      echo
+      for ac_var in $ac_subst_files
+      do
+	eval ac_val=$`echo $ac_var`
+	echo "$ac_var='"'"'$ac_val'"'"'"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      cat <<\_ASBOX
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+_ASBOX
+      echo
+      sed "/^$/d" confdefs.h | sort
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      echo "$as_me: caught signal $ac_signal"
+    echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core &&
+  rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+     ' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -rf conftest* confdefs.h
+# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+echo >confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer explicitly selected file to automatically selected ones.
+if test -z "$CONFIG_SITE"; then
+  if test "x$prefix" != xNONE; then
+    CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
+  else
+    CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
+  fi
+fi
+for ac_site_file in $CONFIG_SITE; do
+  if test -r "$ac_site_file"; then
+    { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file"
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special
+  # files actually), so we avoid doing that.
+  if test -f "$cache_file"; then
+    { echo "$as_me:$LINENO: loading cache $cache_file" >&5
+echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . $cache_file;;
+      *)                      . ./$cache_file;;
+    esac
+  fi
+else
+  { echo "$as_me:$LINENO: creating cache $cache_file" >&5
+echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in `(set) 2>&1 |
+	       sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val="\$ac_cv_env_${ac_var}_value"
+  eval ac_new_val="\$ac_env_${ac_var}_value"
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+	{ echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+	{ echo "$as_me:$LINENO:   former value:  $ac_old_val" >&5
+echo "$as_me:   former value:  $ac_old_val" >&2;}
+	{ echo "$as_me:$LINENO:   current value: $ac_new_val" >&5
+echo "$as_me:   current value: $ac_new_val" >&2;}
+	ac_cache_corrupted=:
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *" "*|*"	"*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+      ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
+echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-pbsdir or --without-pbsdir was given.
+if test "${with_pbsdir+set}" = set; then
+  withval="$with_pbsdir"
+  case "${withval}" in
+	*) pbspath="${withval}" ;;
+  esac
+else
+  pbspath=""
+
+fi;
+
+
+
+
+        # Find any Python interpreter.
+    for ac_prog in python python2 python2.3 python2.2 python2.1 python2.0 python1.6 python1.5
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_PYTHON+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $PYTHON in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+PYTHON=$ac_cv_path_PYTHON
+
+if test -n "$PYTHON"; then
+  echo "$as_me:$LINENO: result: $PYTHON" >&5
+echo "${ECHO_T}$PYTHON" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$PYTHON" && break
+done
+
+    am_display_PYTHON=python
+
+
+
+  echo "$as_me:$LINENO: checking for $am_display_PYTHON version" >&5
+echo $ECHO_N "checking for $am_display_PYTHON version... $ECHO_C" >&6
+if test "${am_cv_python_version+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  am_cv_python_version=`$PYTHON -c "import sys; print sys.version[:3]"`
+fi
+echo "$as_me:$LINENO: result: $am_cv_python_version" >&5
+echo "${ECHO_T}$am_cv_python_version" >&6
+  PYTHON_VERSION=$am_cv_python_version
+
+
+
+  PYTHON_PREFIX='${prefix}'
+
+  PYTHON_EXEC_PREFIX='${exec_prefix}'
+
+
+
+  echo "$as_me:$LINENO: checking for $am_display_PYTHON platform" >&5
+echo $ECHO_N "checking for $am_display_PYTHON platform... $ECHO_C" >&6
+if test "${am_cv_python_platform+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  am_cv_python_platform=`$PYTHON -c "import sys; print sys.platform"`
+fi
+echo "$as_me:$LINENO: result: $am_cv_python_platform" >&5
+echo "${ECHO_T}$am_cv_python_platform" >&6
+  PYTHON_PLATFORM=$am_cv_python_platform
+
+
+
+
+                echo "$as_me:$LINENO: checking for $am_display_PYTHON script directory" >&5
+echo $ECHO_N "checking for $am_display_PYTHON script directory... $ECHO_C" >&6
+if test "${am_cv_python_pythondir+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  am_cv_python_pythondir=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib(0,0,prefix='$PYTHON_PREFIX')" 2>/dev/null ||
+     echo "$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages"`
+fi
+echo "$as_me:$LINENO: result: $am_cv_python_pythondir" >&5
+echo "${ECHO_T}$am_cv_python_pythondir" >&6
+  pythondir=$am_cv_python_pythondir
+
+
+
+  pkgpythondir=\${pythondir}/$PACKAGE
+
+
+            echo "$as_me:$LINENO: checking for $am_display_PYTHON extension module directory" >&5
+echo $ECHO_N "checking for $am_display_PYTHON extension module directory... $ECHO_C" >&6
+if test "${am_cv_python_pyexecdir+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  am_cv_python_pyexecdir=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib(1,0,prefix='$PYTHON_EXEC_PREFIX')" 2>/dev/null ||
+     echo "${PYTHON_EXEC_PREFIX}/lib/python${PYTHON_VERSION}/site-packages"`
+fi
+echo "$as_me:$LINENO: result: $am_cv_python_pyexecdir" >&5
+echo "${ECHO_T}$am_cv_python_pyexecdir" >&6
+  pyexecdir=$am_cv_python_pyexecdir
+
+
+
+  pkgpyexecdir=\${pyexecdir}/$PACKAGE
+
+
+
+                    ac_config_files="$ac_config_files Makefile setup.py"
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, don't put newlines in cache variables' values.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+{
+  (set) 2>&1 |
+    case `(ac_space=' '; set | grep ac_space) 2>&1` in
+    *ac_space=\ *)
+      # `set' does not quote correctly, so add quotes (double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \).
+      sed -n \
+	"s/'/'\\\\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;;
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n \
+	"s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+      ;;
+    esac;
+} |
+  sed '
+     t clear
+     : clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     : end' >>confcache
+if diff $cache_file confcache >/dev/null 2>&1; then :; else
+  if test -w $cache_file; then
+    test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
+    cat confcache >$cache_file
+  else
+    echo "not updating unwritable cache $cache_file"
+  fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[	 ]*VPATH[	 ]*=/{
+s/:*\$(srcdir):*/:/;
+s/:*\${srcdir}:*/:/;
+s/:*@srcdir@:*/:/;
+s/^\([^=]*=[	 ]*\):*/\1/;
+s/:*$//;
+s/^[^=]*=[	 ]*$//;
+}'
+fi
+
+# Transform confdefs.h into DEFS.
+# Protect against shell expansion while executing Makefile rules.
+# Protect against Makefile macro expansion.
+#
+# If the first sed substitution is executed (which looks for macros that
+# take arguments), then we branch to the quote section.  Otherwise,
+# look for a macro that doesn't take arguments.
+cat >confdef2opt.sed <<\_ACEOF
+t clear
+: clear
+s,^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 (][^	 (]*([^)]*)\)[	 ]*\(.*\),-D\1=\2,g
+t quote
+s,^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 ][^	 ]*\)[	 ]*\(.*\),-D\1=\2,g
+t quote
+d
+: quote
+s,[	 `~#$^&*(){}\\|;'"<>?],\\&,g
+s,\[,\\&,g
+s,\],\\&,g
+s,\$,$$,g
+p
+_ACEOF
+# We use echo to avoid assuming a particular line-breaking character.
+# The extra dot is to prevent the shell from consuming trailing
+# line-breaks from the sub-command output.  A line-break within
+# single-quotes doesn't work because, if this script is created in a
+# platform that uses two characters for line-breaks (e.g., DOS), tr
+# would break.
+ac_LF_and_DOT=`echo; echo .`
+DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'`
+rm -f confdef2opt.sed
+
+
+ac_libobjs=
+ac_ltlibobjs=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+  # 1. Remove the extension, and $U if already installed.
+  ac_i=`echo "$ac_i" |
+	 sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
+  # 2. Add them.
+  ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
+  ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+
+: ${CONFIG_STATUS=./config.status}
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+  set -o posix
+fi
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+  LC_TELEPHONE LC_TIME
+do
+  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+    eval $as_var=C; export $as_var
+  else
+    $as_unset $as_var
+  fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)$' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+  	  /^X\/\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\/\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2"  || {
+  # Find who we are.  Look in the path if we contain no path at all
+  # relative or not.
+  case $0 in
+    *[\\/]* ) as_myself=$0 ;;
+    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+
+       ;;
+  esac
+  # We did not find ourselves, most probably we were run as `sh COMMAND'
+  # in which case we are not to be found in the path.
+  if test "x$as_myself" = x; then
+    as_myself=$0
+  fi
+  if test ! -f "$as_myself"; then
+    { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
+echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+  case $CONFIG_SHELL in
+  '')
+    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for as_base in sh bash ksh sh5; do
+	 case $as_dir in
+	 /*)
+	   if ("$as_dir/$as_base" -c '
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then
+	     $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+	     $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+	     CONFIG_SHELL=$as_dir/$as_base
+	     export CONFIG_SHELL
+	     exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+	   fi;;
+	 esac
+       done
+done
+;;
+  esac
+
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+  # uniformly replaced by the line number.  The first 'sed' inserts a
+  # line-number line before each line; the second 'sed' does the real
+  # work.  The second script uses 'N' to pair each line-number line
+  # with the numbered line, and appends trailing '-' during
+  # substitution so that $LINENO is not a special case at line end.
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)
+  sed '=' <$as_myself |
+    sed '
+      N
+      s,$,-,
+      : loop
+      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+      t loop
+      s,-$,,
+      s,^['$as_cr_digits']*\n,,
+    ' >$as_me.lineno &&
+  chmod +x $as_me.lineno ||
+    { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
+echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
+   { (exit 1); exit 1; }; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensible to this).
+  . ./$as_me.lineno
+  # Exit status is that of the last command.
+  exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+  *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T='	' ;;
+  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+  # We could just check for DJGPP; but this test a) works b) is more generic
+  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+  if test -f conf$$.exe; then
+    # Don't use ln at all; we don't have any links
+    as_ln_s='cp -p'
+  else
+    as_ln_s='ln -s'
+  fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s=ln
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" 	$as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+exec 6>&1
+
+# Open the log real soon, to keep \$[0] and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.  Logging --version etc. is OK.
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+} >&5
+cat >&5 <<_CSEOF
+
+This file was extended by $as_me, which was
+generated by GNU Autoconf 2.59.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+_CSEOF
+echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
+echo >&5
+_ACEOF
+
+# Files that config.status was made for.
+if test -n "$ac_config_files"; then
+  echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_headers"; then
+  echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_links"; then
+  echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_commands"; then
+  echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTIONS] [FILE]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number, then exit
+  -q, --quiet      do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+  --file=FILE[:TEMPLATE]
+		   instantiate the configuration file FILE
+
+Configuration files:
+$config_files
+
+Report bugs to <bug-autoconf@gnu.org>."
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+ac_cs_version="\\
+config.status
+configured by $0, generated by GNU Autoconf 2.59,
+  with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright (C) 2003 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+srcdir=$srcdir
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+# If no file are specified by the user, then we need to provide default
+# value.  By we need to know if files were specified by the user.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=*)
+    ac_option=`expr "x$1" : 'x\([^=]*\)='`
+    ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  -*)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  *) # This is not an option, so the user has probably given explicit
+     # arguments.
+     ac_option=$1
+     ac_need_defaults=false;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --vers* | -V )
+    echo "$ac_cs_version"; exit 0 ;;
+  --he | --h)
+    # Conflict between --help and --header
+    { { echo "$as_me:$LINENO: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&2;}
+   { (exit 1); exit 1; }; };;
+  --help | --hel | -h )
+    echo "$ac_cs_usage"; exit 0 ;;
+  --debug | --d* | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+    ac_need_defaults=false;;
+  --header | --heade | --head | --hea )
+    $ac_shift
+    CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+    ac_need_defaults=false;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2;}
+   { (exit 1); exit 1; }; } ;;
+
+  *) ac_config_targets="$ac_config_targets $1" ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+if \$ac_cs_recheck; then
+  echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
+  exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+fi
+
+_ACEOF
+
+
+
+
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+for ac_config_target in $ac_config_targets
+do
+  case "$ac_config_target" in
+  # Handling of arguments.
+  "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+  "setup.py" ) CONFIG_FILES="$CONFIG_FILES setup.py" ;;
+  *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason to put it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Create a temporary directory, and hook for its removal unless debugging.
+$debug ||
+{
+  trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
+  trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
+  test -n "$tmp" && test -d "$tmp"
+}  ||
+{
+  tmp=./confstat$$-$RANDOM
+  (umask 077 && mkdir $tmp)
+} ||
+{
+   echo "$me: cannot create a temporary directory in ." >&2
+   { (exit 1); exit 1; }
+}
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+
+#
+# CONFIG_FILES section.
+#
+
+# No need to generate the scripts if there are no CONFIG_FILES.
+# This happens for instance when ./config.status config.h
+if test -n "\$CONFIG_FILES"; then
+  # Protect against being on the right side of a sed subst in config.status.
+  sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
+   s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
+s,@SHELL@,$SHELL,;t t
+s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
+s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
+s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
+s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
+s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
+s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
+s,@exec_prefix@,$exec_prefix,;t t
+s,@prefix@,$prefix,;t t
+s,@program_transform_name@,$program_transform_name,;t t
+s,@bindir@,$bindir,;t t
+s,@sbindir@,$sbindir,;t t
+s,@libexecdir@,$libexecdir,;t t
+s,@datadir@,$datadir,;t t
+s,@sysconfdir@,$sysconfdir,;t t
+s,@sharedstatedir@,$sharedstatedir,;t t
+s,@localstatedir@,$localstatedir,;t t
+s,@libdir@,$libdir,;t t
+s,@includedir@,$includedir,;t t
+s,@oldincludedir@,$oldincludedir,;t t
+s,@infodir@,$infodir,;t t
+s,@mandir@,$mandir,;t t
+s,@build_alias@,$build_alias,;t t
+s,@host_alias@,$host_alias,;t t
+s,@target_alias@,$target_alias,;t t
+s,@DEFS@,$DEFS,;t t
+s,@ECHO_C@,$ECHO_C,;t t
+s,@ECHO_N@,$ECHO_N,;t t
+s,@ECHO_T@,$ECHO_T,;t t
+s,@LIBS@,$LIBS,;t t
+s,@pyexecdir@,$pyexecdir,;t t
+s,@pbspath@,$pbspath,;t t
+s,@PYTHON@,$PYTHON,;t t
+s,@PYTHON_VERSION@,$PYTHON_VERSION,;t t
+s,@PYTHON_PREFIX@,$PYTHON_PREFIX,;t t
+s,@PYTHON_EXEC_PREFIX@,$PYTHON_EXEC_PREFIX,;t t
+s,@PYTHON_PLATFORM@,$PYTHON_PLATFORM,;t t
+s,@pythondir@,$pythondir,;t t
+s,@pkgpythondir@,$pkgpythondir,;t t
+s,@pkgpyexecdir@,$pkgpyexecdir,;t t
+s,@LIBOBJS@,$LIBOBJS,;t t
+s,@LTLIBOBJS@,$LTLIBOBJS,;t t
+CEOF
+
+_ACEOF
+
+  cat >>$CONFIG_STATUS <<\_ACEOF
+  # Split the substitutions into bite-sized pieces for seds with
+  # small command number limits, like on Digital OSF/1 and HP-UX.
+  ac_max_sed_lines=48
+  ac_sed_frag=1 # Number of current file.
+  ac_beg=1 # First line for current file.
+  ac_end=$ac_max_sed_lines # Line after last line for current file.
+  ac_more_lines=:
+  ac_sed_cmds=
+  while $ac_more_lines; do
+    if test $ac_beg -gt 1; then
+      sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+    else
+      sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+    fi
+    if test ! -s $tmp/subs.frag; then
+      ac_more_lines=false
+    else
+      # The purpose of the label and of the branching condition is to
+      # speed up the sed processing (if there are no `@' at all, there
+      # is no need to browse any of the substitutions).
+      # These are the two extra sed commands mentioned above.
+      (echo ':t
+  /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
+      if test -z "$ac_sed_cmds"; then
+	ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+      else
+	ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+      fi
+      ac_sed_frag=`expr $ac_sed_frag + 1`
+      ac_beg=$ac_end
+      ac_end=`expr $ac_end + $ac_max_sed_lines`
+    fi
+  done
+  if test -z "$ac_sed_cmds"; then
+    ac_sed_cmds=cat
+  fi
+fi # test -n "$CONFIG_FILES"
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+  case $ac_file in
+  - | *:- | *:-:* ) # input from stdin
+	cat >$tmp/stdin
+	ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  * )   ac_file_in=$ac_file.in ;;
+  esac
+
+  # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
+  ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_file" : 'X\(//\)[^/]' \| \
+	 X"$ac_file" : 'X\(//\)$' \| \
+	 X"$ac_file" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+  { if $as_mkdir_p; then
+    mkdir -p "$ac_dir"
+  else
+    as_dir="$ac_dir"
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+   { (exit 1); exit 1; }; }; }
+
+  ac_builddir=.
+
+if test "$ac_dir" != .; then
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  # A "../" for each directory in $ac_dir_suffix.
+  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+  ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+  .)  # No --srcdir option.  We are building in place.
+    ac_srcdir=.
+    if test -z "$ac_top_builddir"; then
+       ac_top_srcdir=.
+    else
+       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+    fi ;;
+  [\\/]* | ?:[\\/]* )  # Absolute path.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir ;;
+  *) # Relative path.
+    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+  case "$ac_dir" in
+  .) ac_abs_builddir=`pwd`;;
+  [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+  *) ac_abs_builddir=`pwd`/"$ac_dir";;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+  case ${ac_top_builddir}. in
+  .) ac_abs_top_builddir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+  *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+  case $ac_srcdir in
+  .) ac_abs_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+  *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+  case $ac_top_srcdir in
+  .) ac_abs_top_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+  *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+  esac;;
+esac
+
+
+
+  # Let's still pretend it is `configure' which instantiates (i.e., don't
+  # use $as_me), people would be surprised to read:
+  #    /* config.h.  Generated by config.status.  */
+  if test x"$ac_file" = x-; then
+    configure_input=
+  else
+    configure_input="$ac_file.  "
+  fi
+  configure_input=$configure_input"Generated from `echo $ac_file_in |
+				     sed 's,.*/,,'` by configure."
+
+  # First look for the input files in the build tree, otherwise in the
+  # src tree.
+  ac_file_inputs=`IFS=:
+    for f in $ac_file_in; do
+      case $f in
+      -) echo $tmp/stdin ;;
+      [\\/$]*)
+	 # Absolute (can't be DOS-style, as IFS=:)
+	 test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+	 echo "$f";;
+      *) # Relative
+	 if test -f "$f"; then
+	   # Build tree
+	   echo "$f"
+	 elif test -f "$srcdir/$f"; then
+	   # Source tree
+	   echo "$srcdir/$f"
+	 else
+	   # /dev/null tree
+	   { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+	 fi;;
+      esac
+    done` || { (exit 1); exit 1; }
+
+  if test x"$ac_file" != x-; then
+    { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+    rm -f "$ac_file"
+  fi
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+  sed "$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s,@configure_input@,$configure_input,;t t
+s,@srcdir@,$ac_srcdir,;t t
+s,@abs_srcdir@,$ac_abs_srcdir,;t t
+s,@top_srcdir@,$ac_top_srcdir,;t t
+s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
+s,@builddir@,$ac_builddir,;t t
+s,@abs_builddir@,$ac_abs_builddir,;t t
+s,@top_builddir@,$ac_top_builddir,;t t
+s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
+" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
+  rm -f $tmp/stdin
+  if test x"$ac_file" != x-; then
+    mv $tmp/out $ac_file
+  else
+    cat $tmp/out
+    rm -f $tmp/out
+  fi
+
+done
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+{ (exit 0); exit 0; }
+_ACEOF
+chmod +x $CONFIG_STATUS
+ac_clean_files=$ac_clean_files_save
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+  ac_cs_success=:
+  ac_config_status_args=
+  test "$silent" = yes &&
+    ac_config_status_args="$ac_config_status_args --quiet"
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || { (exit 1); exit 1; }
+fi
+
Index: tags/2.8.2/configure.in
===================================================================
--- tags/2.8.2/configure.in	(revision 117)
+++ tags/2.8.2/configure.in	(revision 117)
@@ -0,0 +1,24 @@
+AC_INIT(src/pbs.py)
+AC_SUBST(prefix)
+AC_SUBST(exec_prefix)
+AC_SUBST(pyexecdir)
+AC_SUBST(pbspath)
+
+
+AC_ARG_WITH(pbsdir,
+[  
+  --with-pbsdir=PATH	directory that contains the torque libraries],
+
+  [case "${withval}" in
+	*) pbspath="${withval}" ;;
+  esac], 
+
+  [pbspath=""]
+)dnl
+
+AM_PATH_PYTHON
+
+AC_OUTPUT(
+        Makefile
+	setup.py
+	)
Index: tags/2.8.2/debian/changelog
===================================================================
--- tags/2.8.2/debian/changelog	(revision 117)
+++ tags/2.8.2/debian/changelog	(revision 117)
@@ -0,0 +1,32 @@
+pbs-python (2.8.0-2) unstable; urgency=medium
+
+  * Used swig 1.3.24 with python2.1 works also on higher python versions
+
+ -- Bas van der Vlies <bas@rc.sara.nl>  Mon,  7 Nov 2005 14:55:00 +0100
+
+pbs-python (2.8.0-1) unstable; urgency=low
+
+  * New pbs_python release, See CHANGES
+
+ -- Bas van der Vlies <bas@rc.sara.nl>  Fri,  4 Nov 2005 15:58:44 +0100
+
+pbs-python (2.7.10-1) unstable; urgency=low
+
+  * Added examples/LICENSE.sara to /usr/share/doc directory
+  * Made an sara_install section for pbsmon --> examples/rack_pbsmon.py
+
+ -- Bas van der Vlies <basv@sara.nl>  Mon, 26 Sep 2005 16:32:06 +0200
+
+pbs-python (2.7.9-2) unstable; urgency=low
+
+  * Bumped up version
+  * Fixed  DEBUG mode
+
+ -- Bas van der Vlies <bas@rc.sara.nl>  Fri, 24 Jun 2005 11:23:30 +0200
+
+pbs-python (2.7.5-1) unstable; urgency=low
+
+  * Initial version
+
+ -- Yaroslav Halchenko <debian@onerussian.com>  Mon, 1 Nov 2004 12:13:08 -0400
+
Index: tags/2.8.2/debian/compat
===================================================================
--- tags/2.8.2/debian/compat	(revision 117)
+++ tags/2.8.2/debian/compat	(revision 117)
@@ -0,0 +1,1 @@
+4
Index: tags/2.8.2/debian/control
===================================================================
--- tags/2.8.2/debian/control	(revision 117)
+++ tags/2.8.2/debian/control	(revision 117)
@@ -0,0 +1,13 @@
+Source: pbs-python
+Section: misc
+Priority: optional
+Maintainer: Yaroslav Halchenko <debian@onerussian.com>
+Build-Depends: debhelper (>> 4.0.0), cdbs, chrpath, python, torque
+Standards-Version: 3.5.8
+
+Package: pbs-python
+Section: misc
+Architecture: i386
+Depends: torque
+Description: XXX
+ XXX
Index: tags/2.8.2/debian/copyright
===================================================================
--- tags/2.8.2/debian/copyright	(revision 117)
+++ tags/2.8.2/debian/copyright	(revision 117)
@@ -0,0 +1,20 @@
+This package was debianized by 
+ Yaroslav Halchenko <yoh@psychology.rutgers.edu>
+ on Sat, 10 May 2003 20:34:31 -0400.
+
+It was built based on CVS snapshot of 'rumba-manifold'
+ from  :pserver:anonymous@cnrg2.rutgers.edu:/home/cvs
+ on Sat, 10 May 2003 20:34:31 -0400.
+
+Upstream Author:
+ Donovan Rebbechi <elflord@psychology.rutgers.edu>
+ Benjamin Martin Bly <ben@psychology.rutgers.edu>
+
+Copyright:
+
+    This program is free software; you can redistribute it and/or
+    modify it under the terms of the "Artistic License" which comes
+    with Perl.
+
+On Debian GNU/Linux systems, the complete text of the Artistic Licence
+in `/usr/share/common-licenses/Artistic'.
Index: tags/2.8.2/debian/rules
===================================================================
--- tags/2.8.2/debian/rules	(revision 117)
+++ tags/2.8.2/debian/rules	(revision 117)
@@ -0,0 +1,17 @@
+#!/usr/bin/make -f
+# Copyrignt 2003-04 Yaroslav Halchenko <debian@onerussian.com>
+
+include /usr/share/cdbs/1/rules/buildcore.mk
+include /usr/share/cdbs/1/rules/debhelper.mk
+include /usr/share/cdbs/1/class/autotools.mk
+include /usr/share/cdbs/1/class/makefile.mk
+
+DEB_CONFIGURE_EXTRA_FLAGS := --enable-python
+
+# does on package by package bases so doesn't work :-/
+#DEB_DH_INSTALL_ARGS := --list-missing
+
+#DEB_CONFIGURE_EXTRA_FLAGS := --enable-debug
+
+# tight versioning
+#DEB_DH_MAKESHLIBS_ARGS := -V
Index: tags/2.8.2/description.html
===================================================================
--- tags/2.8.2/description.html	(revision 117)
+++ tags/2.8.2/description.html	(revision 117)
@@ -0,0 +1,42 @@
+<HTML>
+<HEAD>
+<TITLE>OpenPbs programming with PYTHON</TITLE>
+</HEAD>
+<BODY>
+<H1>OpenPbs programming with PYTHON</H1>
+<H2>Introduction</H2>
+<P>
+This a openpbs/torque python module. So you can now use python instead of the OPENPBS 
+C API to make OpenPbs programs to set/query queue, node and server attributes.
+
+<P>
+<H2>Installation</H2>
+<P>
+To install the python modules for python version 1.6 and higher it is easy:
+<BLOCKQUOTE>
+  ./configure
+  make
+  make install
+</BLOCKQUOTE>
+
+As for python versions lower the 1.6 the following procedure is required.
+First you have to make the python module and test if it works. It
+depends on your python installation where you want to place the
+pbs modules. Some good places are:
+<BLOCKQUOTE>
+     /usr/lib/python1.5/site-packages<BR>
+     /usr/local/lib/python1.5/site-packages<BR>
+</BLOCKQUOTE>
+<P>
+<H1>Author Contact Information</H1>
+<P>
+The OpenPbs C API to python interface is written by:
+<P>
+<BLOCKQUOTE>
+Bas van der Vlies, <A href="mailto:basv@sara.nl">basv@sara.nl</A><BR>
+the Netherlands
+</BLOCKQUOTE>
+<P>
+</BODY>
+</HTML>
+
Index: tags/2.8.2/examples/README
===================================================================
--- tags/2.8.2/examples/README	(revision 117)
+++ tags/2.8.2/examples/README	(revision 117)
@@ -0,0 +1,6 @@
+To test these utilities set the environment variabele PYTHONPATH:
+for sh-shells:
+	PYTHONPATH=../src; export PYTHONPATH
+
+for csh-shells:
+	setenv PYTHONPATH ../src
Index: tags/2.8.2/examples/logpbs.py
===================================================================
--- tags/2.8.2/examples/logpbs.py	(revision 117)
+++ tags/2.8.2/examples/logpbs.py	(revision 117)
@@ -0,0 +1,38 @@
+#!/usr/bin/env python
+#
+# Author: Bas van der Vlies <basv@sara.nl>
+# Date  : 21 Oct 2002
+# Desc. : How to use the logging facility of Openpbs
+#
+# $Id: logpbs.py,v 1.1 2002/10/21 12:31:41 sscpbas Exp $
+#
+import pbs
+import sys
+
+def main():
+  
+   # Open log in current directory with current date
+   #
+   if pbs.log_open('', '.'):
+     print 'Could not open log file'
+     sys.exit(1)
+
+   pbs.log_record(pbs.PBSEVENT_ERROR, pbs.PBS_EVENTCLASS_REQUEST, 'test1', 'this a test message')
+
+   # Give a verbose message of closing the file
+   #
+   pbs.log_close(1)
+
+   # Open the sched log file
+   #
+   if pbs.log_open('', '/var/spool/openpbs/sched_logs'):
+     print 'Could not open log file in /var/spool/openpbs/sched_logs'
+     sys.exit(1)
+
+   pbs.log_record(pbs.PBSEVENT_JOB, pbs.PBS_EVENTCLASS_JOB, 'test1', 'this a test message')
+
+   # Give a NON verbose message of closing the file
+   #
+   pbs.log_close(0)
+
+main()
Index: tags/2.8.2/examples/new_interface.py
===================================================================
--- tags/2.8.2/examples/new_interface.py	(revision 117)
+++ tags/2.8.2/examples/new_interface.py	(revision 117)
@@ -0,0 +1,35 @@
+#!/usr/bin/env python
+#
+# Author: Bas van der Vlies <basv@sara.nl>
+# Date  : 02 March 2005
+# Desc. : Usage of the new PBSQuery module
+#
+# SVN info:
+# $Id$
+#
+#
+#
+
+from PBSQuery import PBSQuery
+
+def main():
+
+  p = PBSQuery()
+
+  nodes = p.getnodes()
+  for name, node in nodes.items():
+  	print node
+	if node.is_free():
+		print "%s : Found an free node" %name
+
+  jobs = p.getjobs()
+  for name, job in jobs.items():
+     for key in job.keys():
+        print '%s = %s' %(key, job[key])
+ 
+  l = ['state', 'np' ]
+  nodes = p.getnodes(l)
+  for node in nodes.values():
+     print node
+
+main()
Index: tags/2.8.2/examples/pbs_version.py
===================================================================
--- tags/2.8.2/examples/pbs_version.py	(revision 117)
+++ tags/2.8.2/examples/pbs_version.py	(revision 117)
@@ -0,0 +1,31 @@
+#!/usr/bin/env python
+# Author: Bas van der Vlies <basv@sara.nl>
+# Date  : 17 Aug 2001 
+# Desc. : print version of pbs_server
+#    
+# CVS info:
+# $Id: pbs_version.py,v 1.1 2002/02/27 14:35:51 sscpbas Exp $
+#
+#
+import sys
+import pbs
+
+def main():
+
+  pbs_server = pbs.pbs_default()
+  if not pbs_server:
+    print 'No default server'
+    sys.exit(1)
+
+  con = pbs.pbs_connect(pbs_server)
+
+  attr_l = pbs.new_attrl(1)
+  attr_l[0].name = 'pbs_version'
+
+  server_info = pbs.pbs_statserver(con, attr_l, 'NULL')
+  for entry in server_info:
+    print entry.name
+    for attrib in entry.attribs:
+       print '\t', attrib.name, ' = ', attrib.value
+
+main()
Index: tags/2.8.2/examples/pbsmon.py
===================================================================
--- tags/2.8.2/examples/pbsmon.py	(revision 117)
+++ tags/2.8.2/examples/pbsmon.py	(revision 117)
@@ -0,0 +1,158 @@
+#!/usr/bin/env python
+#
+# Author: Bas van der Vlies <basv@sara.nl>
+# Date  : 17 Aug 2001
+# Desc. : This script displays the status of the PBS batch.
+#         It display the status of a node. The ideas are
+#         based on the awk-script of Willem Vermin
+#
+# CVS info:
+# $Id$
+#
+import sys
+import string
+import re
+
+import pbs
+
+pbs_ND_free_and_job = 'not_all_procs_used'
+
+translate_state = {
+    pbs.ND_free             : '_',
+    pbs.ND_down             : 'X',
+    pbs.ND_offline          : '.',
+    pbs.ND_reserve          : 'R',
+    pbs.ND_job_exclusive    : 'J',
+    pbs.ND_job_sharing      : 'S',
+    pbs.ND_busy             : '*',
+    pbs.ND_state_unknown    : '?',   
+    pbs.ND_timeshared       : 'T',
+    pbs.ND_cluster          : 'C',
+    pbs_ND_free_and_job     : 'j'
+}
+
+
+
+def display_cluster_status(nl, sl):
+
+  # Thanks to Daniel Olson, we have now code that can handle
+  # 2 and 3 digit hostname numbers
+  #
+  if len(nl) == 1: 
+    width = len( nl[0] )
+  else:
+    width = len( nl[-1] )
+
+  # Determine what format we have to use
+  #
+  if width == 3:
+    step = end = 19
+    format = '%3s'
+  else:
+    step  = end = 25
+    format = '%2s'
+
+  start = 0 
+
+  items = len(nl)
+
+  # Sanity check 
+  if end > items:
+    end = items
+
+  while start < items:
+
+    print ' ',
+    for j in range(start,end):
+      print format %(nl[j]) ,
+
+    print '\n ',
+    for j in range(start,end):
+      print format %(sl[j]) ,
+   
+    print '\n'
+
+    start = end
+    end = end + step 
+
+    if end > items:
+      end = items
+   
+  # Now some statistics
+  #
+  n = 0
+  for key in translate_state.keys():
+    value = translate_state[key]
+    print "%3s %-21s : %d\t |" %( value, key, sl.count(value) ),
+    if n%2:
+      print ''
+    n = n + 1
+
+def main():
+  state_list = []
+  node_list  = []
+  node_nr    = 0
+
+  if len(sys.argv) > 1:
+    pbs_server = sys.argv[1]
+  else:
+    pbs_server = pbs.pbs_default()
+    if not pbs_server:
+      print "No default pbs server, usage: pbsmon [server] "
+      sys.exit(1)
+
+  con = pbs.pbs_connect(pbs_server)
+  if con < 0:
+   print  pbs.pbs_geterrmsg(con)
+   sys.exit(1)
+
+  # We are only interested in the state and jobs of a node
+  #
+  attrl = pbs.new_attrl(2);
+  attrl[0].name='state'
+  attrl[1].name = 'jobs'
+
+
+  nodes = pbs.pbs_statnode(con, "", attrl, "NULL")
+
+  # Some is het None dan weer NULL, beats me
+  #
+  for node in nodes:
+
+    # display_node_status(batch_info)
+    node_attr = node.attribs
+
+    # A node can have serveral states, huh. We are only
+    # interested in first entry.
+    #
+    temp = string.splitfields(node_attr[0].value, ',')
+    state = temp[0]
+
+    # look if on a free node a job is scheduled, then mark it
+    # as other state
+    #
+    if state == pbs.ND_free:
+       if len(node_attr) > 1:
+          state_list.append(translate_state[pbs_ND_free_and_job])
+       else:
+          state_list.append(translate_state[state])
+    else:
+          state_list.append(translate_state[state])
+		
+		
+    re_host = re.compile(r"""
+
+      (?P<name>\d+)
+
+      """, re.VERBOSE)
+
+    result = re_host.search(node.name)
+    if result:
+      node_list.append( result.group('name') )
+    else:
+      node_nr = node_nr + 1
+      node_list.append( str(node_nr) )
+
+  display_cluster_status(node_list, state_list)
+
+main()
Index: tags/2.8.2/examples/pbsnodes-a.py
===================================================================
--- tags/2.8.2/examples/pbsnodes-a.py	(revision 117)
+++ tags/2.8.2/examples/pbsnodes-a.py	(revision 117)
@@ -0,0 +1,33 @@
+#!/usr/bin/env python
+#
+# Author: Bas van der Vlies <basv@sara.nl>
+# Date  : 17 Aug 2001 
+# Desc. : Simple pbsnodes -a
+#
+# CVS info:
+# $Id$
+#
+#
+#
+
+
+import pbs
+import sys
+
+def main():
+
+  pbs_server = pbs.pbs_default()
+  if not pbs_server:
+    print "No default pbs server"
+    sys.exit(1)
+
+  con = pbs.pbs_connect(pbs_server)
+  nodes = pbs.pbs_statnode(con, "", "NULL", "NULL")
+
+
+  for node in nodes:
+    print node.name
+    for attrib in node.attribs:
+      print '\t', attrib.name, '=', attrib.value
+
+main()
Index: tags/2.8.2/examples/rack_pbsmon.py
===================================================================
--- tags/2.8.2/examples/rack_pbsmon.py	(revision 117)
+++ tags/2.8.2/examples/rack_pbsmon.py	(revision 117)
@@ -0,0 +1,137 @@
+#! /usr/bin/env python
+#
+#	pbsmon	WJ104
+#
+#	Hint: set ts=4
+#
+
+import os
+import sys
+import string
+
+import pbs
+
+
+NODES_PER_RACK = 19
+N_RACKS = 15
+
+pbs_ND_single = 'job (single)'
+
+
+PBS_STATES = {
+	pbs.ND_free				: '_',
+	pbs.ND_down				: 'X',
+	pbs.ND_offline			: '.',
+	pbs.ND_reserve			: 'R',
+	pbs.ND_job_exclusive	: 'J',
+	pbs.ND_job_sharing		: 'S',
+	pbs.ND_busy				: '*',
+	pbs.ND_state_unknown	: '?',
+	pbs.ND_timeshared		: 'T',
+	pbs.ND_cluster			: 'C',
+	pbs_ND_single			: 'j'
+}
+
+
+
+def pbsmon():
+	global NODES_PER_RACK, N_RACKS, PBS_STATES
+
+	if len(sys.argv) > 1:
+		pbs_server = sys.argv[1]
+	else:
+		pbs_server = pbs.pbs_default()
+
+	if not pbs_server:
+		print 'No default pbs server, usage: %s [server]' % os.path.basename(sys.argv[0])
+		sys.exit(1)
+
+	con = pbs.pbs_connect(pbs_server)
+	if con < 0:
+		print pbs.pbs_geterrmsg(con)
+		sys.exit(1)
+
+# get the state of the nodes
+	attrl = pbs.new_attrl(2)
+	attrl[0].name = 'state'
+	attrl[1].name = 'jobs'
+	nodes = pbs.pbs_statnode(con, '', attrl, 'NULL')
+
+	node_dict = {}
+
+	count_states = {}
+	for key in PBS_STATES.keys():
+		count_states[key] = 0
+
+	for node in nodes:
+		node_attr = node.attribs
+		temp = string.split(node_attr[0].value, ',')
+		state = temp[0]
+		state_char = PBS_STATES[state]
+		count_states[state] = count_states[state] + 1
+
+		if state == pbs.ND_free:
+			if len(node_attr) > 1:
+#				print 'TD: %s' % node.name, node_attr[1]
+				state_char = PBS_STATES[pbs_ND_single]
+				count_states[pbs.ND_free] = count_states[pbs.ND_free] - 1
+				count_states[pbs_ND_single] = count_states[pbs_ND_single] + 1
+
+#		print 'TD: %s %s' % (node.name, state_char)
+		node_dict[node.name] = state_char
+
+	legend = PBS_STATES.keys()
+	legend.sort()
+
+# print nodes with gb-r%dn%d naming scheme
+	print '  ',
+	for rack in xrange(1, N_RACKS+1):
+		print '%2d' % rack,
+	print
+
+	for node_nr in xrange(1, NODES_PER_RACK+1):
+		print '%2d' % node_nr,
+
+		for rack in xrange(1, N_RACKS+1):
+			node_name = 'gb-r%dn%d' % (rack, node_nr)
+
+			if node_dict.has_key(node_name):
+				print ' %s' % node_dict[node_name],
+
+				del node_dict[node_name]
+			else:
+				print '  ',
+
+		if node_nr-1 < len(legend):
+			state = legend[node_nr-1]
+			print '  %s  %-13s : %d' % (PBS_STATES[state], state, count_states[state])
+		else:
+			print
+
+	print
+
+# any other nodes?
+	arr = node_dict.keys()
+	if arr:
+		arr.sort()
+
+		for node in arr:
+			print '%s %s' % (node, node_dict[node])
+
+		print
+
+#	n = 0
+#	for state in legend:
+#		print '%s  %-13s : %-3d     ' % (PBS_STATES[state], state, count_states[state]),
+#		n = n + 1
+#		if n > 1:
+#			n = 0
+#			print
+
+
+if __name__ == '__main__':
+	pbsmon()
+
+
+# EOB
+
Index: tags/2.8.2/examples/resmom_info.py
===================================================================
--- tags/2.8.2/examples/resmom_info.py	(revision 117)
+++ tags/2.8.2/examples/resmom_info.py	(revision 117)
@@ -0,0 +1,47 @@
+#!/usr/bin/env python
+#
+# Author: Bas van der Vlies <basv@sara.nl>
+# Date  : 27 Feb 2002
+# Desc. : This will query the pbs_mom daemon about its resources
+#
+# $Id: resmom_info.py,v 1.4 2002/10/22 08:58:48 sscpbas Exp $
+#
+import pbs
+import sys
+import time
+import socket
+
+def main():
+  server = pbs.pbs_default()
+  c      = pbs.pbs_connect(server)
+
+  nodes = pbs.pbs_statnode(c, '', 'NULL', 'NULL')
+
+  for node in nodes:
+    print node.name, ' :'
+    attrs = node.attribs
+    for attr in attrs:
+      print '\t%s = %s' %(attr.name, attr.value)
+
+    try:
+      mom_port = socket.getservbyname('pbs_resmon', 'tcp')
+    except socket.error:
+      mom_port = pbs.PBS_MANAGER_SERVICE_PORT
+
+    mom_id = pbs.openrm(node.name, mom_port)
+
+    mom_keys = pbs.get_mom_values(mom_id)
+    for key in mom_keys.keys():
+      print '\t%s = %s' %(key, mom_keys[key])
+
+    print '\nTesting list with user supplied keywords'
+
+    l = [ 'bas', 'ncpus', 'loadave' ]
+    mom_keys = pbs.get_mom_values(mom_id, l)
+    for key in mom_keys.keys():
+      print '\t%s = %s' %(key, mom_keys[key])
+    print ''
+    pbs.closerm(mom_id)
+
+
+main()
Index: tags/2.8.2/examples/set_property.py
===================================================================
--- tags/2.8.2/examples/set_property.py	(revision 117)
+++ tags/2.8.2/examples/set_property.py	(revision 117)
@@ -0,0 +1,34 @@
+#!/usr/bin/env python
+#
+# Author: Bas van der Vlies <basv@sara.nl>
+# Date  : 17 Aug 2001
+# Desc. : Set a node property
+#
+# CVS info:
+# $Id: set_property.py,v 1.1 2002/02/27 14:35:51 sscpbas Exp $
+#
+#
+#
+import sys
+import pbs
+
+def main():
+  pbs_server = pbs.pbs_default()
+  if not pbs_server:
+    print 'No default server'
+    sys.exit(1)
+
+  con = pbs.pbs_connect(pbs_server)
+
+  attrop_l = pbs.new_attropl(1)
+  attrop_l[0].name  = 'properties'
+  attrop_l[0].value = 'set_something_useful'
+  attrop_l[0].op    = pbs.INCR
+
+  r =  pbs.pbs_manager(con, pbs.MGR_CMD_SET, pbs.MGR_OBJ_NODE, 
+                    "e2", attrop_l, 'NULL')
+
+  if r > 0:
+    print r, ";", pbs.pbs_geterrmsg(con) 
+
+main()
Index: tags/2.8.2/pbs_python.spec
===================================================================
--- tags/2.8.2/pbs_python.spec	(revision 117)
+++ tags/2.8.2/pbs_python.spec	(revision 117)
@@ -0,0 +1,45 @@
+Summary: This package contains the pbs python module.
+Name: pbs_python
+Version: 2.8.1 
+Release: 1
+Copyright: See LICENSE
+Group: Development/Libraries
+Source: ftp://ftp.sara.nl/pub/outgoing/pbs_python.tar.gz 
+BuildRoot: /var/tmp/%{name}-buildroot
+
+%description
+This package contains the pbs python module.
+
+%prep
+%setup -q
+./configure
+%build
+python setup.py build
+
+%install
+python ./setup.py install --prefix $RPM_BUILD_ROOT/usr ;
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%files
+%defattr(-,root,root,0755)
+%doc README TODO examples
+
+/usr/lib/python2.2/site-packages
+/usr/lib/python2.2/site-packages/pbs
+/usr/lib/python2.2/site-packages/pbs/pbs.py
+/usr/lib/python2.2/site-packages/pbs/PBSQuery.py
+/usr/lib/python2.2/site-packages/pbs/_pbs.so
+/usr/lib/python2.2/site-packages/pbs/pbs.pyc
+/usr/lib/python2.2/site-packages/pbs/PBSQuery.pyc
+/usr/lib/python2.2/site-packages/pbs.pth
+
+%changelog
+* Wed Nov 23 2005 Ramon Bastiaans <bastiaans@sara.nl>
+- Fixed missing prep setup and added configure
+* Tue Nov 22 2005 Martin Pels <pels@sara.nl>
+- Changed default directory permissions
+* Tue Nov 01 2005 Martin Pels <pels@sara.nl> 
+- Initial version
+
Index: tags/2.8.2/setup.py.in
===================================================================
--- tags/2.8.2/setup.py.in	(revision 117)
+++ tags/2.8.2/setup.py.in	(revision 117)
@@ -0,0 +1,56 @@
+#!/usr/bin/env python
+#
+# $Id: setup.py 434 2005-11-04 15:02:07Z bas $
+
+import sys
+import os
+
+from distutils.core import setup, Extension 
+
+# Libs required by this package
+#
+LIBS = ['log', 'net', 'pbs'] 
+
+# Try some usefule defaults if not set
+#
+PBS_LIB_DIR='@pbspath@'
+if not PBS_LIB_DIR:
+  for dir in ['/usr/lib', '/usr/local/lib', '/opt/pbs/usr/lib', '/usr/lib/torque', '/opt/pbs/lib', '/opt/torque/lib' ]:
+    dummy = os.path.join(dir, 'libpbs.a')
+    if os.path.exists(dummy):
+      PBS_LIB_DIR=dir
+      break
+
+if not PBS_LIB_DIR:
+  print 'Please specify where the PBS libraries are!!'
+  print 'edit setup.py and fill in the PBS_LIB_DIR variable'
+  sys.exit(1)
+
+# Test if we have all the libs:
+#
+for lib in LIBS:
+  library = 'lib%s.a' %(lib) 
+  dummy = os.path.join(PBS_LIB_DIR, library)
+  if not os.path.exists(dummy):
+    print 'You need to install "%s" in %s' %(library, PBS_LIB_DIR)
+    sys.exit(1)
+
+setup ( name = 'pbs_python',
+        version = '2.8.0',
+	description = 'openpbs/torque python interface',
+	author = 'Bas van der Vlies',
+	author_email = 'basv@sara.nl',
+	url = 'http://www.sara.nl/index_eng.html',
+
+	extra_path = 'pbs',
+        package_dir = { '' : 'src' }, 
+	py_modules = [ 'pbs', 'PBSQuery' ],
+
+	ext_modules = [ 
+	  Extension( '_pbs', ['src/pbs_wrap.c'],
+	  library_dirs = [ PBS_LIB_DIR ],
+	  libraries = LIBS
+	  ) 
+	]
+)
+
Index: tags/2.8.2/src/Makefile
===================================================================
--- tags/2.8.2/src/Makefile	(revision 117)
+++ tags/2.8.2/src/Makefile	(revision 117)
@@ -0,0 +1,12 @@
+# 
+# $Id$
+#
+LIBS    =  -L/usr/lib/torque -llog -lnet -lpbs
+INCLUDE =  -I/usr/include/python2.1
+
+pbs::
+	gcc -c pbs_wrap.c ${INCLUDE}
+	gcc -shared pbs_wrap.o ${LIBS} -o _pbs.so
+
+clean::
+	rm -f *.o pbs.pyc *.so
Index: tags/2.8.2/src/PBSQuery.py
===================================================================
--- tags/2.8.2/src/PBSQuery.py	(revision 117)
+++ tags/2.8.2/src/PBSQuery.py	(revision 117)
@@ -0,0 +1,324 @@
+#
+# Authors: Roy Dragseth (roy.dragseth@cc.uit.no) 
+#          Bas van der Vlies (basv@sara.nl)
+#
+# SVN INFO:
+#	$Id$
+#
+"""
+Usage: from PBSQuery import PBSQuery
+
+This class gets the info from the pbs_server via the pbs.py module
+for the several batch objects. All get..() functions return an dictionary
+with id as key and batch object as value
+
+There are four batch objects:
+ - server 
+ - queue
+ - job
+ - node
+
+Each object can be handled as an dictionary and has several member
+functions. The second parameter is an python list and can be used if you 
+are only interested in certain resources, see example
+
+There are the following functions for PBSQuery:
+  job - 
+	getjob(job_id, attributes=<default is all>)
+	getjobs(attributes=<default is all>)
+ 
+  node -
+	getnode(node_id, attributes=<default is all>)
+	getnodes(attributes=<default is all>)
+
+  queue -
+	getqueue(queue_id, attributes=<default is all>)
+	getqueues(attributes=<default is all>)
+
+  server -
+	get_serverinfo(attributes=<default is all>)
+
+Here is an example how to use the module:
+	from PBSQuery import PBSQuery
+	p = PBSQuery()
+	nodes = p.getnodes()
+	for name,node in nodes.items():
+	    print name
+	    if node.is_free():
+	       print node, node['state']
+
+	l = [ 'state', 'np' ]
+	nodes = p.getnodes(l)
+	for name,node in nodes.items():
+	       print node, node['state']
+
+The parameter 'attributes' is an python list of resources that 
+you are interested in, eg: only show state of nodes
+        l = list()
+	l.append('state')
+	nodes = p.getnodes(l)
+"""
+import pbs
+
+class PBSError(Exception):
+        def __init__(self, msg=''):
+                self.msg = msg
+                Exception.__init__(self, msg)
+        def __repr__(self):
+                return self.msg
+        __str__ = __repr__
+
+
+class PBSQuery:
+    def __init__(self, server=None):
+        if not server:
+            self.server = pbs.pbs_default()
+	else:
+	    self.server = server
+
+
+    def _connect(self):
+       """Connect to the PBS/Torque server"""
+       self.con = pbs.pbs_connect(self.server)
+       if self.con < 0:
+          str = "Could not make an connection with %s\n" %(self.server)
+          raise PBSError(str)
+
+    def _disconnect(self):
+       """Close the PBS/Torque connection"""
+       pbs.pbs_disconnect(self.con)
+       self.attribs = 'NULL'
+
+    def _list_2_attrib(self, list):
+        """Convert an python list to an attrib list suitable for pbs"""
+        self.attribs = pbs.new_attrl( len(list) )
+        i = 0 
+        for attrib in list:
+	    self.attribs[i].name = attrib
+	    i = i + 1
+
+    def _pbsstr_2_list(self, str, delimiter):
+        """Convert an string to an python list and use delimiter as spit char"""
+	l = sting.splitfields(str, delimiter)
+	if len(l) > 1:
+	   return l
+
+    def _list_2_dict(self, l, class_func):
+        """Convert an pbsstat function list to an class dictionary"""
+        self.d = {}
+        for item in l:
+	    new = class_func()
+	    for a in item.attribs:
+	        new.name = item.name 
+	        if a.resource:
+                   new.attribs[a.name + '.' + a.resource] = a.value
+		else:
+	           new.attribs[a.name] = a.value
+                self.d[item.name] = new
+        self._free(l)
+	        
+    def _free(self, memory):
+        pbs.pbs_statfree(memory)
+
+    def _statserver(self, attrib_list=None):
+        """Get the server config from the pbs server"""
+        if attrib_list:
+	   self._list_2_attrib(attrib_list)
+        else:
+	   self.attribs = 'NULL'
+
+        self._connect()
+        serverinfo = pbs.pbs_statserver(self.con, self.attribs, 'NULL')
+        self._disconnect()
+
+	self.serverinfo = {}
+	self._list_2_dict(serverinfo, server)
+
+    def get_serverinfo(self, attrib_list=None):
+        self._statserver(attrib_list)
+	return self.d
+
+    def _statqueue(self, queue_name='', attrib_list=None):
+        """Get the queue config from the pbs server"""
+        if attrib_list:
+	   self._list_2_attrib(attrib_list)
+        else:
+	   self.attribs = 'NULL'
+
+        self._connect()
+        queues = pbs.pbs_statque(self.con, queue_name, self.attribs, 'NULL')
+        self._disconnect()
+
+	self.queues = {}
+	self._list_2_dict(queues, queue)
+
+    def getqueue(self, name, attrib_list=None):
+        self._statqueue(name, attrib_list)
+	return self.d
+        
+    def getqueues(self, attrib_list=None):
+        self._statqueue('', attrib_list)
+	return self.d
+
+    def _statnode(self, node_name='', attrib_list=None):
+        """Get the node config from the pbs server"""
+        if attrib_list:
+	   self._list_2_attrib(attrib_list)
+        else:
+	   self.attribs = 'NULL'
+
+        self._connect()
+        nodes = pbs.pbs_statnode(self.con, node_name, self.attribs, 'NULL')
+        self._disconnect()
+
+        self.nodes = {}
+	self._list_2_dict(nodes, node)
+
+    def getnode(self, name, attrib_list=None):
+        self._statnode(name, attrib_list)
+	return self.d
+        
+    def getnodes(self, attrib_list=None):
+        self._statnode('', attrib_list)
+	return self.d
+
+    def _statjob(self, job_name='', attrib_list=None):
+        """Get the job config from the pbs server"""
+        if attrib_list:
+	   self._list_2_attrib(attrib_list)
+        else:
+	   self.attribs = 'NULL'
+	   
+        self._connect()
+        jobs = pbs.pbs_statjob(self.con, job_name, self.attribs, 'NULL')
+        self._disconnect()
+
+        self.jobs = {}
+	self._list_2_dict(jobs, job)
+
+    def getjob(self, name, attrib_list=None):
+        self._statjob(name, attrib_list)
+	return self.d
+        
+    def getjobs(self, attrib_list=None):
+        self._statjob('', attrib_list)
+	return self.d
+
+class _PBSobject:
+    TRUE  = 1
+    FALSE = 0
+
+    def __init__(self):
+        self.attribs = {}
+	self.name = None
+
+    def __len__(self):
+    	return(len(self.attribs.keys()))
+
+    def __str__(self):
+        data = self.name + '\n'
+	for name,value in self.attribs.items():
+                data = data + '\t%s = %s\n' %(name, value)
+	return(data)
+
+    __repr__ = __str__
+
+    def __getitem__(self,key):
+        if key == 'name':
+            return self.name
+        
+    	return(self.attribs[key])
+
+    def get_value(self, key):
+        if self.attribs.has_key(key):
+	   return self.attribs[key]
+        else:
+	   return None
+
+    def has_key(self, key):
+        if self.attribs.has_key(key):
+	   return self.TRUE
+        else:
+	   return None
+
+    def keys(self):
+        return self.attribs.keys()
+
+    def values(self):
+        return self.attribs.values()
+
+    def items(self):
+        return self.attribs.items()
+    
+class job(_PBSobject):
+    """PBS job class"""
+
+    def is_running(self):
+    	if self.get_value('job_state') == 'Q':
+	   return self.FALSE
+	else:
+	   return self.TRUE 
+
+class node(_PBSobject):
+    """PBS node class"""
+
+    def is_free(self):
+        """Check if node is free"""
+        if self.get_value('state') == 'free':
+	      return self.TRUE
+	else:
+	      return self.FALSE 
+
+    def has_job(self):
+        """Does the node run a job"""
+        if self.get_value('jobs'):
+	      return self.TRUE
+	else:
+	      return self.FALSE
+
+class queue(_PBSobject):
+    """PBS queue class"""
+
+    def is_enabled(self):
+    	if self.get_value('enabled') == 'True':
+	   return self.TRUE 
+	else:
+	   return self.FALSE
+
+    def is_execution(self):
+    	if self.get_value('queue_type') == 'Execution':
+	   return self.TRUE 
+	else:
+	   return self.FALSE
+
+
+class server(_PBSobject):
+    """PBS server class"""
+
+def main():
+    p = PBSQuery()
+
+    serverinfo = p.get_serverinfo()
+    for name, server in serverinfo.items():
+	print server
+	for key in server.keys():
+		print key, ' = ', server[key]
+
+    queues = p.getqueues()
+    for queue in queues.values():
+	if queue.is_execution():
+	   print queue
+
+    jobs = p.getjobs()
+    for name,job in jobs.items():
+	if job.is_running():
+	   print job
+
+    l = ['state']
+    nodes = p.getnodes(l)
+    for name,node in nodes.items():
+        if node.is_free(): 
+           print node
+
+if __name__ == "__main__":
+    main()
Index: tags/2.8.2/src/log.h
===================================================================
--- tags/2.8.2/src/log.h	(revision 117)
+++ tags/2.8.2/src/log.h	(revision 117)
@@ -0,0 +1,153 @@
+/*
+ * $Id$
+ *
+*         OpenPBS (Portable Batch System) v2.3 Software License
+* 
+* Copyright (c) 1999-2002 Veridian Information Solutions, Inc.
+* All rights reserved.
+* 
+* ---------------------------------------------------------------------------
+* For a license to use or redistribute the OpenPBS software under conditions
+* other than those described below, or to purchase support for this software,
+* please contact Veridian Systems, PBS Products Department ("Licensor") at:
+* 
+*    www.OpenPBS.org  +1 650 967-4675                  sales@OpenPBS.org
+*                        877 902-4PBS (US toll-free)
+* ---------------------------------------------------------------------------
+* 
+* This license covers use of the OpenPBS v2.3 software (the "Software") at
+* your site or location, and, for certain users, redistribution of the
+* Software to other sites and locations.  Use and redistribution of
+* OpenPBS v2.3 in source and binary forms, with or without modification,
+* are permitted provided that all of the following conditions are met.
+* After December 31, 2003, only conditions 3-6 must be met:
+* 
+* 1. Commercial and/or non-commercial use of the Software is permitted
+*    provided a current software registration is on file at www.OpenPBS.org.
+*    If use of this software contributes to a publication, product, or
+*    service, proper attribution must be given; see www.OpenPBS.org/credit.html
+* 
+* 2. Redistribution in any form is only permitted for non-commercial,
+*    non-profit purposes.  There can be no charge for the Software or any
+*    software incorporating the Software.  Further, there can be no
+*    expectation of revenue generated as a consequence of redistributing
+*    the Software.
+* 
+* 3. Any Redistribution of source code must retain the above copyright notice
+*    and the acknowledgment contained in paragraph 6, this list of conditions
+*    and the disclaimer contained in paragraph 7.
+* 
+* 4. Any Redistribution in binary form must reproduce the above copyright
+*    notice and the acknowledgment contained in paragraph 6, this list of
+*    conditions and the disclaimer contained in paragraph 7 in the
+*    documentation and/or other materials provided with the distribution.
+* 
+* 5. Redistributions in any form must be accompanied by information on how to
+*    obtain complete source code for the OpenPBS software and any
+*    modifications and/or additions to the OpenPBS software.  The source code
+*    must either be included in the distribution or be available for no more
+*    than the cost of distribution plus a nominal fee, and all modifications
+*    and additions to the Software must be freely redistributable by any party
+*    (including Licensor) without restriction.
+* 
+* 6. All advertising materials mentioning features or use of the Software must
+*    display the following acknowledgment:
+* 
+*     "This product includes software developed by NASA Ames Research Center,
+*     Lawrence Livermore National Laboratory, and Veridian Information 
+*     Solutions, Inc.
+*     Visit www.OpenPBS.org for OpenPBS software support,
+*     products, and information."
+* 
+* 7. DISCLAIMER OF WARRANTY
+* 
+* THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. ANY EXPRESS
+* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT
+* ARE EXPRESSLY DISCLAIMED.
+* 
+* IN NO EVENT SHALL VERIDIAN CORPORATION, ITS AFFILIATED COMPANIES, OR THE
+* U.S. GOVERNMENT OR ANY OF ITS AGENCIES BE LIABLE FOR ANY DIRECT OR INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
+* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+* This license will be governed by the laws of the Commonwealth of Virginia,
+* without reference to its choice of law rules.
+*/
+
+/*
+ * @(#) OpenPbs version: log.h,v 2.2.6.7 2001/12/05 00:38:11 hender Exp
+ */
+
+/*
+ * include file for error/event logging
+ */
+
+/*
+ * HvB: openpbs uses 1024
+*/
+#define LOG_BUF_SIZE		4096
+
+/* The following macro assist in sharing code between the Server and Mom */
+#define LOG_EVENT log_event
+
+/*
+** Set up a debug print macro.
+*/
+#ifdef	DEBUG
+#define	DBPRT(x)	printf x;
+#else
+#define	DBPRT(x)
+#endif
+
+extern long *log_event_mask;
+
+extern void log_close(int close_msg);
+extern void log_err(int err, char *func, char *text);
+extern void log_event(int type, int class_int, char *id, char *text);
+extern int  log_open(char *name, char *directory);
+extern void log_record(int type, int class_int, char *id, char *text);
+extern char log_buffer[LOG_BUF_SIZE];
+extern int  setup_env(char *filename);
+
+/* HvB: Bas van der Vlies 
+ * Must be chk_file_sec
+	extern int  chk_path_sec(char *path, int dir, int sticky, int bad, int);
+*/
+extern int  chk_file_sec(char *file, int dir, int sticky, int bad, int);
+
+/* Event types */
+
+#define PBSEVENT_ERROR		0x0001		/* internal errors	      */
+#define PBSEVENT_SYSTEM		0x0002		/* system (server) events     */
+#define PBSEVENT_ADMIN		0x0004		/* admin events		      */
+#define PBSEVENT_JOB		0x0008		/* job related events	      */
+#define PBSEVENT_JOB_USAGE	0x0010		/* End of Job accounting      */
+#define PBSEVENT_SECURITY	0x0020		/* security violation events  */
+#define PBSEVENT_SCHED		0x0040		/* scheduler events	      */
+#define PBSEVENT_DEBUG		0x0080		/* common debug messages      */
+#define PBSEVENT_DEBUG2		0x0100		/* less needed debug messages */
+#define PBSEVENT_FORCE		0x8000		/* set to force a messag      */
+
+/* Event Object Classes, see array class_names[] in ../lib/Liblog/pbs_log.c   */
+
+#define PBS_EVENTCLASS_SERVER	1	/* The server itself	*/
+#define PBS_EVENTCLASS_QUEUE	2	/* Queues		*/
+#define PBS_EVENTCLASS_JOB	3	/* Jobs			*/
+#define PBS_EVENTCLASS_REQUEST	4	/* Batch Requests	*/
+#define PBS_EVENTCLASS_FILE	5	/* A Job related File	*/
+#define PBS_EVENTCLASS_ACCT	6	/* Accounting info	*/
+#define PBS_EVENTCLASS_NODE	7	/* Nodes          	*/
+
+/* Logging Masks */
+
+#define PBSEVENT_MASK 	0x01ff
+
+/* HvB: 
+ *   msg_daemonname is extern declared in liblog.a. So define it here
+*/
+char *msg_daemonname = "pbs_python";
Index: tags/2.8.2/src/pbs.py
===================================================================
--- tags/2.8.2/src/pbs.py	(revision 117)
+++ tags/2.8.2/src/pbs.py	(revision 117)
@@ -0,0 +1,650 @@
+# This file was created automatically by SWIG.
+# Don't modify this file, modify the SWIG interface instead.
+# This file is compatible with both classic and new-style classes.
+
+import _pbs
+
+def _swig_setattr(self,class_type,name,value):
+    if (name == "this"):
+        if isinstance(value, class_type):
+            self.__dict__[name] = value.this
+            if hasattr(value,"thisown"): self.__dict__["thisown"] = value.thisown
+            del value.thisown
+            return
+    method = class_type.__swig_setmethods__.get(name,None)
+    if method: return method(self,value)
+    self.__dict__[name] = value
+
+def _swig_getattr(self,class_type,name):
+    method = class_type.__swig_getmethods__.get(name,None)
+    if method: return method(self)
+    raise AttributeError,name
+
+import types
+try:
+    _object = types.ObjectType
+    _newclass = 1
+except AttributeError:
+    class _object : pass
+    _newclass = 0
+del types
+
+
+
+new_attrl = _pbs.new_attrl
+
+new_attropl = _pbs.new_attropl
+
+new_batch_status = _pbs.new_batch_status
+
+get_error = _pbs.get_error
+ATTR_a = _pbs.ATTR_a
+ATTR_c = _pbs.ATTR_c
+ATTR_e = _pbs.ATTR_e
+ATTR_g = _pbs.ATTR_g
+ATTR_h = _pbs.ATTR_h
+ATTR_j = _pbs.ATTR_j
+ATTR_k = _pbs.ATTR_k
+ATTR_l = _pbs.ATTR_l
+ATTR_m = _pbs.ATTR_m
+ATTR_o = _pbs.ATTR_o
+ATTR_p = _pbs.ATTR_p
+ATTR_q = _pbs.ATTR_q
+ATTR_r = _pbs.ATTR_r
+ATTR_u = _pbs.ATTR_u
+ATTR_v = _pbs.ATTR_v
+ATTR_A = _pbs.ATTR_A
+ATTR_M = _pbs.ATTR_M
+ATTR_N = _pbs.ATTR_N
+ATTR_S = _pbs.ATTR_S
+ATTR_depend = _pbs.ATTR_depend
+ATTR_inter = _pbs.ATTR_inter
+ATTR_stagein = _pbs.ATTR_stagein
+ATTR_stageout = _pbs.ATTR_stageout
+ATTR_ctime = _pbs.ATTR_ctime
+ATTR_exechost = _pbs.ATTR_exechost
+ATTR_mtime = _pbs.ATTR_mtime
+ATTR_qtime = _pbs.ATTR_qtime
+ATTR_session = _pbs.ATTR_session
+ATTR_euser = _pbs.ATTR_euser
+ATTR_egroup = _pbs.ATTR_egroup
+ATTR_hashname = _pbs.ATTR_hashname
+ATTR_hopcount = _pbs.ATTR_hopcount
+ATTR_security = _pbs.ATTR_security
+ATTR_sched_hint = _pbs.ATTR_sched_hint
+ATTR_substate = _pbs.ATTR_substate
+ATTR_name = _pbs.ATTR_name
+ATTR_owner = _pbs.ATTR_owner
+ATTR_used = _pbs.ATTR_used
+ATTR_state = _pbs.ATTR_state
+ATTR_queue = _pbs.ATTR_queue
+ATTR_server = _pbs.ATTR_server
+ATTR_maxrun = _pbs.ATTR_maxrun
+ATTR_total = _pbs.ATTR_total
+ATTR_comment = _pbs.ATTR_comment
+ATTR_cookie = _pbs.ATTR_cookie
+ATTR_qrank = _pbs.ATTR_qrank
+ATTR_altid = _pbs.ATTR_altid
+ATTR_etime = _pbs.ATTR_etime
+ATTR_aclgren = _pbs.ATTR_aclgren
+ATTR_aclgroup = _pbs.ATTR_aclgroup
+ATTR_aclhten = _pbs.ATTR_aclhten
+ATTR_aclhost = _pbs.ATTR_aclhost
+ATTR_acluren = _pbs.ATTR_acluren
+ATTR_acluser = _pbs.ATTR_acluser
+ATTR_altrouter = _pbs.ATTR_altrouter
+ATTR_chkptmin = _pbs.ATTR_chkptmin
+ATTR_enable = _pbs.ATTR_enable
+ATTR_fromroute = _pbs.ATTR_fromroute
+ATTR_killdelay = _pbs.ATTR_killdelay
+ATTR_maxgrprun = _pbs.ATTR_maxgrprun
+ATTR_maxque = _pbs.ATTR_maxque
+ATTR_maxuserrun = _pbs.ATTR_maxuserrun
+ATTR_qtype = _pbs.ATTR_qtype
+ATTR_rescassn = _pbs.ATTR_rescassn
+ATTR_rescdflt = _pbs.ATTR_rescdflt
+ATTR_rescmax = _pbs.ATTR_rescmax
+ATTR_rescmin = _pbs.ATTR_rescmin
+ATTR_rndzretry = _pbs.ATTR_rndzretry
+ATTR_routedest = _pbs.ATTR_routedest
+ATTR_routeheld = _pbs.ATTR_routeheld
+ATTR_routewait = _pbs.ATTR_routewait
+ATTR_routeretry = _pbs.ATTR_routeretry
+ATTR_routelife = _pbs.ATTR_routelife
+ATTR_rsvexpdt = _pbs.ATTR_rsvexpdt
+ATTR_rsvsync = _pbs.ATTR_rsvsync
+ATTR_start = _pbs.ATTR_start
+ATTR_count = _pbs.ATTR_count
+ATTR_number = _pbs.ATTR_number
+ATTR_reqprop = _pbs.ATTR_reqprop
+ATTR_aclroot = _pbs.ATTR_aclroot
+ATTR_managers = _pbs.ATTR_managers
+ATTR_dfltque = _pbs.ATTR_dfltque
+ATTR_defnode = _pbs.ATTR_defnode
+ATTR_locsvrs = _pbs.ATTR_locsvrs
+ATTR_logevents = _pbs.ATTR_logevents
+ATTR_logfile = _pbs.ATTR_logfile
+ATTR_mailfrom = _pbs.ATTR_mailfrom
+ATTR_nodepack = _pbs.ATTR_nodepack
+ATTR_operators = _pbs.ATTR_operators
+ATTR_queryother = _pbs.ATTR_queryother
+ATTR_resccost = _pbs.ATTR_resccost
+ATTR_rescavail = _pbs.ATTR_rescavail
+ATTR_schedit = _pbs.ATTR_schedit
+ATTR_scheduling = _pbs.ATTR_scheduling
+ATTR_status = _pbs.ATTR_status
+ATTR_syscost = _pbs.ATTR_syscost
+ATTR_pingrate = _pbs.ATTR_pingrate
+ATTR_ndchkrate = _pbs.ATTR_ndchkrate
+ATTR_procpack = _pbs.ATTR_procpack
+ATTR_NODE_state = _pbs.ATTR_NODE_state
+ATTR_NODE_np = _pbs.ATTR_NODE_np
+ATTR_NODE_properties = _pbs.ATTR_NODE_properties
+ATTR_NODE_ntype = _pbs.ATTR_NODE_ntype
+ATTR_NODE_jobs = _pbs.ATTR_NODE_jobs
+CHECKPOINT_UNSPECIFIED = _pbs.CHECKPOINT_UNSPECIFIED
+NO_HOLD = _pbs.NO_HOLD
+NO_JOIN = _pbs.NO_JOIN
+NO_KEEP = _pbs.NO_KEEP
+MAIL_AT_ABORT = _pbs.MAIL_AT_ABORT
+DELDELAY = _pbs.DELDELAY
+USER_HOLD = _pbs.USER_HOLD
+OTHER_HOLD = _pbs.OTHER_HOLD
+SYSTEM_HOLD = _pbs.SYSTEM_HOLD
+ND_free = _pbs.ND_free
+ND_offline = _pbs.ND_offline
+ND_down = _pbs.ND_down
+ND_reserve = _pbs.ND_reserve
+ND_job_exclusive = _pbs.ND_job_exclusive
+ND_job_sharing = _pbs.ND_job_sharing
+ND_busy = _pbs.ND_busy
+ND_state_unknown = _pbs.ND_state_unknown
+ND_timeshared = _pbs.ND_timeshared
+ND_cluster = _pbs.ND_cluster
+MAX_ENCODE_BFR = _pbs.MAX_ENCODE_BFR
+MGR_CMD_CREATE = _pbs.MGR_CMD_CREATE
+MGR_CMD_DELETE = _pbs.MGR_CMD_DELETE
+MGR_CMD_SET = _pbs.MGR_CMD_SET
+MGR_CMD_UNSET = _pbs.MGR_CMD_UNSET
+MGR_CMD_LIST = _pbs.MGR_CMD_LIST
+MGR_CMD_PRINT = _pbs.MGR_CMD_PRINT
+MGR_CMD_ACTIVE = _pbs.MGR_CMD_ACTIVE
+MGR_OBJ_NONE = _pbs.MGR_OBJ_NONE
+MGR_OBJ_SERVER = _pbs.MGR_OBJ_SERVER
+MGR_OBJ_QUEUE = _pbs.MGR_OBJ_QUEUE
+MGR_OBJ_JOB = _pbs.MGR_OBJ_JOB
+MGR_OBJ_NODE = _pbs.MGR_OBJ_NODE
+MSG_OUT = _pbs.MSG_OUT
+MSG_ERR = _pbs.MSG_ERR
+SHUT_SIG = _pbs.SHUT_SIG
+SHUT_IMMEDIATE = _pbs.SHUT_IMMEDIATE
+SHUT_DELAY = _pbs.SHUT_DELAY
+SHUT_QUICK = _pbs.SHUT_QUICK
+SIG_RESUME = _pbs.SIG_RESUME
+SIG_SUSPEND = _pbs.SIG_SUSPEND
+PBS_MAXHOSTNAME = _pbs.PBS_MAXHOSTNAME
+MAXPATHLEN = _pbs.MAXPATHLEN
+MAXNAMLEN = _pbs.MAXNAMLEN
+PBS_MAXUSER = _pbs.PBS_MAXUSER
+PBS_MAXGRPN = _pbs.PBS_MAXGRPN
+PBS_MAXQUEUENAME = _pbs.PBS_MAXQUEUENAME
+PBS_MAXSERVERNAME = _pbs.PBS_MAXSERVERNAME
+PBS_MAXSEQNUM = _pbs.PBS_MAXSEQNUM
+PBS_MAXPORTNUM = _pbs.PBS_MAXPORTNUM
+PBS_MAXSVRJOBID = _pbs.PBS_MAXSVRJOBID
+PBS_MAXCLTJOBID = _pbs.PBS_MAXCLTJOBID
+PBS_MAXDEST = _pbs.PBS_MAXDEST
+PBS_MAXROUTEDEST = _pbs.PBS_MAXROUTEDEST
+PBS_USE_IFF = _pbs.PBS_USE_IFF
+PBS_INTERACTIVE = _pbs.PBS_INTERACTIVE
+PBS_TERM_BUF_SZ = _pbs.PBS_TERM_BUF_SZ
+PBS_TERM_CCA = _pbs.PBS_TERM_CCA
+PBS_BATCH_SERVICE_NAME = _pbs.PBS_BATCH_SERVICE_NAME
+PBS_BATCH_SERVICE_PORT = _pbs.PBS_BATCH_SERVICE_PORT
+PBS_BATCH_SERVICE_NAME_DIS = _pbs.PBS_BATCH_SERVICE_NAME_DIS
+PBS_BATCH_SERVICE_PORT_DIS = _pbs.PBS_BATCH_SERVICE_PORT_DIS
+PBS_MOM_SERVICE_NAME = _pbs.PBS_MOM_SERVICE_NAME
+PBS_MOM_SERVICE_PORT = _pbs.PBS_MOM_SERVICE_PORT
+PBS_MANAGER_SERVICE_NAME = _pbs.PBS_MANAGER_SERVICE_NAME
+PBS_MANAGER_SERVICE_PORT = _pbs.PBS_MANAGER_SERVICE_PORT
+PBS_SCHEDULER_SERVICE_NAME = _pbs.PBS_SCHEDULER_SERVICE_NAME
+PBS_SCHEDULER_SERVICE_PORT = _pbs.PBS_SCHEDULER_SERVICE_PORT
+SET = _pbs.SET
+UNSET = _pbs.UNSET
+INCR = _pbs.INCR
+DECR = _pbs.DECR
+EQ = _pbs.EQ
+NE = _pbs.NE
+GE = _pbs.GE
+GT = _pbs.GT
+LE = _pbs.LE
+LT = _pbs.LT
+DFLT = _pbs.DFLT
+class attrl(_object):
+    __swig_setmethods__ = {}
+    __setattr__ = lambda self, name, value: _swig_setattr(self, attrl, name, value)
+    __swig_getmethods__ = {}
+    __getattr__ = lambda self, name: _swig_getattr(self, attrl, name)
+    def __init__(self): raise RuntimeError, "No constructor defined"
+    def __repr__(self):
+        return "<C attrl instance at %s>" % (self.this,)
+    __swig_setmethods__["name"] = _pbs.attrl_name_set
+    __swig_getmethods__["name"] = _pbs.attrl_name_get
+    if _newclass:name = property(_pbs.attrl_name_get, _pbs.attrl_name_set)
+    __swig_setmethods__["resource"] = _pbs.attrl_resource_set
+    __swig_getmethods__["resource"] = _pbs.attrl_resource_get
+    if _newclass:resource = property(_pbs.attrl_resource_get, _pbs.attrl_resource_set)
+    __swig_setmethods__["value"] = _pbs.attrl_value_set
+    __swig_getmethods__["value"] = _pbs.attrl_value_get
+    if _newclass:value = property(_pbs.attrl_value_get, _pbs.attrl_value_set)
+    __swig_setmethods__["op"] = _pbs.attrl_op_set
+    __swig_getmethods__["op"] = _pbs.attrl_op_get
+    if _newclass:op = property(_pbs.attrl_op_get, _pbs.attrl_op_set)
+    def __str__(*args): return _pbs.attrl___str__(*args)
+
+class attrlPtr(attrl):
+    def __init__(self, this):
+        _swig_setattr(self, attrl, 'this', this)
+        if not hasattr(self,"thisown"): _swig_setattr(self, attrl, 'thisown', 0)
+        _swig_setattr(self, attrl,self.__class__,attrl)
+_pbs.attrl_swigregister(attrlPtr)
+
+class attropl(_object):
+    __swig_setmethods__ = {}
+    __setattr__ = lambda self, name, value: _swig_setattr(self, attropl, name, value)
+    __swig_getmethods__ = {}
+    __getattr__ = lambda self, name: _swig_getattr(self, attropl, name)
+    def __init__(self): raise RuntimeError, "No constructor defined"
+    def __repr__(self):
+        return "<C attropl instance at %s>" % (self.this,)
+    __swig_setmethods__["name"] = _pbs.attropl_name_set
+    __swig_getmethods__["name"] = _pbs.attropl_name_get
+    if _newclass:name = property(_pbs.attropl_name_get, _pbs.attropl_name_set)
+    __swig_setmethods__["resource"] = _pbs.attropl_resource_set
+    __swig_getmethods__["resource"] = _pbs.attropl_resource_get
+    if _newclass:resource = property(_pbs.attropl_resource_get, _pbs.attropl_resource_set)
+    __swig_setmethods__["value"] = _pbs.attropl_value_set
+    __swig_getmethods__["value"] = _pbs.attropl_value_get
+    if _newclass:value = property(_pbs.attropl_value_get, _pbs.attropl_value_set)
+    __swig_setmethods__["op"] = _pbs.attropl_op_set
+    __swig_getmethods__["op"] = _pbs.attropl_op_get
+    if _newclass:op = property(_pbs.attropl_op_get, _pbs.attropl_op_set)
+    def __str__(*args): return _pbs.attropl___str__(*args)
+
+class attroplPtr(attropl):
+    def __init__(self, this):
+        _swig_setattr(self, attropl, 'this', this)
+        if not hasattr(self,"thisown"): _swig_setattr(self, attropl, 'thisown', 0)
+        _swig_setattr(self, attropl,self.__class__,attropl)
+_pbs.attropl_swigregister(attroplPtr)
+
+class batch_status(_object):
+    __swig_setmethods__ = {}
+    __setattr__ = lambda self, name, value: _swig_setattr(self, batch_status, name, value)
+    __swig_getmethods__ = {}
+    __getattr__ = lambda self, name: _swig_getattr(self, batch_status, name)
+    def __init__(self): raise RuntimeError, "No constructor defined"
+    def __repr__(self):
+        return "<C batch_status instance at %s>" % (self.this,)
+    __swig_setmethods__["name"] = _pbs.batch_status_name_set
+    __swig_getmethods__["name"] = _pbs.batch_status_name_get
+    if _newclass:name = property(_pbs.batch_status_name_get, _pbs.batch_status_name_set)
+    __swig_setmethods__["attribs"] = _pbs.batch_status_attribs_set
+    __swig_getmethods__["attribs"] = _pbs.batch_status_attribs_get
+    if _newclass:attribs = property(_pbs.batch_status_attribs_get, _pbs.batch_status_attribs_set)
+    __swig_setmethods__["text"] = _pbs.batch_status_text_set
+    __swig_getmethods__["text"] = _pbs.batch_status_text_get
+    if _newclass:text = property(_pbs.batch_status_text_get, _pbs.batch_status_text_set)
+
+class batch_statusPtr(batch_status):
+    def __init__(self, this):
+        _swig_setattr(self, batch_status, 'this', this)
+        if not hasattr(self,"thisown"): _swig_setattr(self, batch_status, 'thisown', 0)
+        _swig_setattr(self, batch_status,self.__class__,batch_status)
+_pbs.batch_status_swigregister(batch_statusPtr)
+
+
+avail = _pbs.avail
+
+pbs_asyrunjob = _pbs.pbs_asyrunjob
+
+pbs_alterjob = _pbs.pbs_alterjob
+
+pbs_connect = _pbs.pbs_connect
+
+pbs_query_max_connections = _pbs.pbs_query_max_connections
+
+pbs_default = _pbs.pbs_default
+
+pbs_deljob = _pbs.pbs_deljob
+
+pbs_disconnect = _pbs.pbs_disconnect
+
+pbs_geterrmsg = _pbs.pbs_geterrmsg
+
+pbs_holdjob = _pbs.pbs_holdjob
+
+pbs_locjob = _pbs.pbs_locjob
+
+pbs_manager = _pbs.pbs_manager
+
+pbs_movejob = _pbs.pbs_movejob
+
+pbs_msgjob = _pbs.pbs_msgjob
+
+pbs_orderjob = _pbs.pbs_orderjob
+
+pbs_rescquery = _pbs.pbs_rescquery
+
+pbs_rescreserve = _pbs.pbs_rescreserve
+
+pbs_rescrelease = _pbs.pbs_rescrelease
+
+pbs_rerunjob = _pbs.pbs_rerunjob
+
+pbs_rlsjob = _pbs.pbs_rlsjob
+
+pbs_runjob = _pbs.pbs_runjob
+
+pbs_selectjob = _pbs.pbs_selectjob
+
+pbs_sigjob = _pbs.pbs_sigjob
+
+pbs_statfree = _pbs.pbs_statfree
+
+pbs_statjob = _pbs.pbs_statjob
+
+pbs_selstat = _pbs.pbs_selstat
+
+pbs_statque = _pbs.pbs_statque
+
+pbs_statserver = _pbs.pbs_statserver
+
+pbs_statnode = _pbs.pbs_statnode
+
+pbs_submit = _pbs.pbs_submit
+
+pbs_terminate = _pbs.pbs_terminate
+
+totpool = _pbs.totpool
+
+usepool = _pbs.usepool
+
+openrm = _pbs.openrm
+
+closerm = _pbs.closerm
+
+downrm = _pbs.downrm
+
+configrm = _pbs.configrm
+
+addreq = _pbs.addreq
+
+allreq = _pbs.allreq
+
+flushreq = _pbs.flushreq
+
+activereq = _pbs.activereq
+
+fullresp = _pbs.fullresp
+
+getreq = _pbs.getreq
+LOG_BUF_SIZE = _pbs.LOG_BUF_SIZE
+
+log_close = _pbs.log_close
+
+log_err = _pbs.log_err
+
+log_event = _pbs.log_event
+
+log_open = _pbs.log_open
+
+log_record = _pbs.log_record
+
+setup_env = _pbs.setup_env
+
+chk_file_sec = _pbs.chk_file_sec
+PBSEVENT_ERROR = _pbs.PBSEVENT_ERROR
+PBSEVENT_SYSTEM = _pbs.PBSEVENT_SYSTEM
+PBSEVENT_ADMIN = _pbs.PBSEVENT_ADMIN
+PBSEVENT_JOB = _pbs.PBSEVENT_JOB
+PBSEVENT_JOB_USAGE = _pbs.PBSEVENT_JOB_USAGE
+PBSEVENT_SECURITY = _pbs.PBSEVENT_SECURITY
+PBSEVENT_SCHED = _pbs.PBSEVENT_SCHED
+PBSEVENT_DEBUG = _pbs.PBSEVENT_DEBUG
+PBSEVENT_DEBUG2 = _pbs.PBSEVENT_DEBUG2
+PBSEVENT_FORCE = _pbs.PBSEVENT_FORCE
+PBS_EVENTCLASS_SERVER = _pbs.PBS_EVENTCLASS_SERVER
+PBS_EVENTCLASS_QUEUE = _pbs.PBS_EVENTCLASS_QUEUE
+PBS_EVENTCLASS_JOB = _pbs.PBS_EVENTCLASS_JOB
+PBS_EVENTCLASS_REQUEST = _pbs.PBS_EVENTCLASS_REQUEST
+PBS_EVENTCLASS_FILE = _pbs.PBS_EVENTCLASS_FILE
+PBS_EVENTCLASS_ACCT = _pbs.PBS_EVENTCLASS_ACCT
+PBS_EVENTCLASS_NODE = _pbs.PBS_EVENTCLASS_NODE
+PBSEVENT_MASK = _pbs.PBSEVENT_MASK
+#  PBS python interface
+#  Author: Bas van der Vlies <basv@sara.nl>
+#  Date  : 27 Feb 2002
+#  Desc. : This is python wrapper class for getting the resource
+#          mom values.
+#
+# CVS info
+# $Id$
+# $Date: 2002/10/21 14:14:47 $
+# $Revision: 1.6 $
+#
+import string
+import types
+
+# Default linux resources to get from the mom
+#
+default_linux_res = [   
+	"availmem",	# available memory size in KB
+	"ideal_load",	# static ideal_load value
+	"loadave",      # the current load average
+	"max_load",	# static max_load value
+	"ncpus",        # number of cpus
+	"physmem",      # physical memory size in KB
+	"resi",		# resident memory size for a pid or session in KB
+	"totmem",	# total memory size in KB
+	"walltime",	# wall clock time for a pid
+]
+
+# Default irix6 resources to get from the mom
+#
+default_irix6_res = [   
+	"availmem",	# available memory size in KB
+	"loadave",      # the current load average
+	"ncpus",        # number of cpus
+	"physmem",      # physical memory size in KB
+	"resi",		# resident memory size for a pid or session in KB
+	"walltime",	# wall clock time for a pid
+	"quota",	# quota information (sizes in KB)
+]
+
+default_mom_res = [   
+	"arch",		# the architecture of the machine
+	"uname",	# the architecture of the machine
+        "cput",		# cpu time for a pid or session
+	"idletime",	# seconds of idle time
+	"mem",		# memory size for a pid or session in KB
+	"sessions",	# list of sessions in the system
+	"pids",         # list of pids in a session
+	"nsessions",	# number of sessions in the system
+	"nusers",	# number of users in the system
+	"size",		# size of a file or filesystem
+]
+
+def check_resp(dict, str):
+  """
+  Check the daemon response. If we have no permission to
+  query the values then we got a 'None' response. Else
+  if we supplied a keyword that does not exits we get a
+  '?' response
+  """
+  if not str:
+    return
+      
+  key, val = string.split(str, '=')
+  key = string.strip(key)
+  val = string.strip(val)
+
+  # Did we got a valid response
+  #
+  if not val[0] == '?':
+    dict[key] = val
+
+def use_default_keywords(id, d):
+  """
+  Get the default values from the mom daemon
+  """
+  for res in default_mom_res:
+    addreq(id, res)
+    resp = getreq(id)
+    check_resp(d, resp)
+
+  # Do not proceed if we have an empty dictionary
+  #
+  if not d:
+    return
+
+  if d['arch' ] == 'linux':
+    for res in default_linux_res:
+      addreq(id, res)
+      resp = getreq(id)
+      check_resp(d, resp)
+
+def use_user_keywords(id, d, l):
+  for res in l:
+    if type(res) is types.StringType:
+      addreq(id, res)
+      resp = getreq(id)
+      check_resp(d, resp)
+    else:
+      raise TypeError, 'Expected a string got %s :%s' %(type(res), res) 
+
+def get_mom_values(id, list = None):
+  """
+  This function will query the mom with a default resmon keywords
+  and 'arch' depended keywords. Supported archs are:
+    linux
+    irix6
+  User can also supply their own list of keywords as second parameter.
+  arguments:
+    id   : connection number with mom daemon on a node
+    list : optional parameter. If supplied then use this. A list
+           of mom keywords.
+  """
+
+  d = {}
+  if not list:
+    use_default_keywords(id, d)
+  else:
+    use_user_keywords(id, d , list)
+     
+  return d
+
+def version():
+  """
+  Returns the pbs python interface version as a string. 
+  """
+  return '2.8.0'
+
+# A useful dict with error codes to text
+#
+# SVN Info:
+#	$Id$
+#
+errors_txt = { 
+	0 : 'no error',
+	15001 :	 'Unknown Job Identifier',
+	15002 : 'Undefined Attribute',
+	15003 : 'attempt to set READ ONLY attribute',
+	15004 : 'Invalid request',
+	15005 : 'Unknown batch request',
+	15006 : 'Too many submit retries',
+	15007 : 'No permission',
+	15008 : 'access from host not allowed',
+	15009 : 'job already exists',
+	15010 : 'system error occurred',
+	15011 : 'internal server error occurred',
+	15012 : 'parent job of dependent in rte que',
+	15013 : 'unknown signal name',
+	15014 : 'bad attribute value',
+	15015 : 'Cannot modify attrib in run state',
+	15016 : 'request invalid for job state',
+	15018 : 'Unknown queue name',
+	15019 : 'Invalid Credential in request',
+	15020 : 'Expired Credential in request',
+	15021 : 'Queue not enabled',
+	15022 : 'No access permission for queue',
+	15023 : 'Bad user - no password entry',
+	15024 : 'Max hop count exceeded',
+	15025 : 'Queue already exists',
+	15026 : 'incompatable queue attribute type',
+	15027 : 'Queue Busy (not empty)',
+	15028 : 'Queue name too long',
+	15029 : 'Feature',
+	15030 : 'Cannot enable queue,needs add def',
+	15031 : 'Protocol (ASN.1) error',
+	15032 : 'Bad attribute list structure',
+	15033 : 'No free connections',
+	15034 : 'No server to connect to',
+	15035 : 'Unknown resource',
+	15036 : 'Job exceeds Queue resource limits',
+	15037 : 'No Default Queue Defined',
+	15038 : 'Job Not Rerunnable',
+	15039 : 'Route rejected by all destinations',
+	15040 : 'Time in Route Queue Expired',
+	15041 : 'Request to MOM failed',
+	15042 : '(qsub) cannot access script file',
+	15043 : 'Stage In of files failed',
+	15044 : 'Resources temporarily unavailable',
+	15045 : 'Bad Group specified',
+	15046 : 'Max number of jobs in queue',
+	15047 : 'Checkpoint Busy, may be retries',
+	15048 : 'Limit exceeds allowable',
+	15049 : 'Bad Account attribute value',
+	15050 : 'Job already in exit state',
+	15051 : 'Job files not copied',
+	15052 : 'unknown job id after clean init',
+	15053 : 'No Master in Sync Set',
+	15054 : 'Invalid dependency',
+	15055 : 'Duplicate entry in List',
+	15056 : 'Bad DIS based Request Protocol',
+	15057 : 'cannot execute there',
+	15058 : 'sister rejected',
+	15059 : 'sister could not communicate',
+	15060 : 'req rejected -server shutting down',
+	15061 : 'not all tasks could checkpoint',
+	15062 : 'Named node is not in the list',
+	15063 : 'node-attribute not recognized',
+	15064 : 'Server has no node list',
+	15065 : 'Node name is too big',
+	15066 : 'Node name already exists',
+	15067 : 'Bad node-attribute value',
+	15068 : 'State values are mutually exclusive',
+	15069 : 'Error(s) during global modification of nodes',
+	15070 : 'could not contact Mom',
+	15071 : 'no time-shared nodes',
+	15201 : 'resource unknown',
+	15202 : 'parameter could not be used',
+	15203 : 'a parameter needed did not exist',
+	15204 : "something specified didn't exist",
+	15205 : 'a system error occured',
+	15206 : 'only part of reservation made'
+}
+
+def error():
+  """
+  Check if there is an error, if so fetch the error message string. 
+  It says more then a number!
+  """
+  e = get_error()
+  if errors_txt.has_key(e):
+     return (e, errors_txt[e])
+  else:
+     return (e, "Could not find a text for this error, uhhh")
+
+cvar = _pbs.cvar
+
Index: tags/2.8.2/src/pbs_error.h
===================================================================
--- tags/2.8.2/src/pbs_error.h	(revision 117)
+++ tags/2.8.2/src/pbs_error.h	(revision 117)
@@ -0,0 +1,210 @@
+/*
+*         OpenPBS (Portable Batch System) v2.3 Software License
+* 
+* Copyright (c) 1999-2002 Veridian Information Solutions, Inc.
+* All rights reserved.
+* 
+* ---------------------------------------------------------------------------
+* For a license to use or redistribute the OpenPBS software under conditions
+* other than those described below, or to purchase support for this software,
+* please contact Veridian Systems, PBS Products Department ("Licensor") at:
+* 
+*    www.OpenPBS.org  +1 650 967-4675                  sales@OpenPBS.org
+*                        877 902-4PBS (US toll-free)
+* ---------------------------------------------------------------------------
+* 
+* This license covers use of the OpenPBS v2.3 software (the "Software") at
+* your site or location, and, for certain users, redistribution of the
+* Software to other sites and locations.  Use and redistribution of
+* OpenPBS v2.3 in source and binary forms, with or without modification,
+* are permitted provided that all of the following conditions are met.
+* After December 31, 2003, only conditions 3-6 must be met:
+* 
+* 1. Commercial and/or non-commercial use of the Software is permitted
+*    provided a current software registration is on file at www.OpenPBS.org.
+*    If use of this software contributes to a publication, product, or
+*    service, proper attribution must be given; see www.OpenPBS.org/credit.html
+* 
+* 2. Redistribution in any form is only permitted for non-commercial,
+*    non-profit purposes.  There can be no charge for the Software or any
+*    software incorporating the Software.  Further, there can be no
+*    expectation of revenue generated as a consequence of redistributing
+*    the Software.
+* 
+* 3. Any Redistribution of source code must retain the above copyright notice
+*    and the acknowledgment contained in paragraph 6, this list of conditions
+*    and the disclaimer contained in paragraph 7.
+* 
+* 4. Any Redistribution in binary form must reproduce the above copyright
+*    notice and the acknowledgment contained in paragraph 6, this list of
+*    conditions and the disclaimer contained in paragraph 7 in the
+*    documentation and/or other materials provided with the distribution.
+* 
+* 5. Redistributions in any form must be accompanied by information on how to
+*    obtain complete source code for the OpenPBS software and any
+*    modifications and/or additions to the OpenPBS software.  The source code
+*    must either be included in the distribution or be available for no more
+*    than the cost of distribution plus a nominal fee, and all modifications
+*    and additions to the Software must be freely redistributable by any party
+*    (including Licensor) without restriction.
+* 
+* 6. All advertising materials mentioning features or use of the Software must
+*    display the following acknowledgment:
+* 
+*     "This product includes software developed by NASA Ames Research Center,
+*     Lawrence Livermore National Laboratory, and Veridian Information 
+*     Solutions, Inc.
+*     Visit www.OpenPBS.org for OpenPBS software support,
+*     products, and information."
+* 
+* 7. DISCLAIMER OF WARRANTY
+* 
+* THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. ANY EXPRESS
+* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT
+* ARE EXPRESSLY DISCLAIMED.
+* 
+* IN NO EVENT SHALL VERIDIAN CORPORATION, ITS AFFILIATED COMPANIES, OR THE
+* U.S. GOVERNMENT OR ANY OF ITS AGENCIES BE LIABLE FOR ANY DIRECT OR INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
+* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+* This license will be governed by the laws of the Commonwealth of Virginia,
+* without reference to its choice of law rules.
+*/
+
+/*
+ * @(#) $Id$
+ */
+
+/*
+ * The error returns possible to a Batch Request
+ *
+ * Each error is prefixed with the string PBSE_ for Portable (Posix)
+ * Batch System Error.  The numeric values start with 15000 since the
+ * POSIX Batch Extensions Working group is 1003.15
+ */
+/*
+ * The error returns possible to a Batch Request
+ *
+ * Each error is prefixed with the string PBSE_ for Portable (Posix)
+ * Batch System Error.  The numeric values start with 15000 since the
+ * POSIX Batch Extensions Working group is 1003.15
+ */
+#ifndef PBSE_
+
+#define PBSE_	15000
+
+#define PBSE_NONE       0		/* no error */
+#define PBSE_UNKJOBID	15001		/* Unknown Job Identifier */
+#define PBSE_NOATTR	15002		/* Undefined Attribute */
+#define PBSE_ATTRRO	15003		/* attempt to set READ ONLY attribute */
+#define PBSE_IVALREQ	15004		/* Invalid request */
+#define PBSE_UNKREQ	15005		/* Unknown batch request */
+#define PBSE_TOOMANY	15006		/* Too many submit retries */
+#define PBSE_PERM	15007		/* No permission */
+#define PBSE_BADHOST	15008		/* access from host not allowed */
+#define PBSE_JOBEXIST	15009		/* job already exists */
+#define PBSE_SYSTEM	15010		/* system error occurred */
+#define PBSE_INTERNAL	15011		/* internal server error occurred */
+#define PBSE_REGROUTE	15012		/* parent job of dependent in rte que */
+#define PBSE_UNKSIG	15013		/* unknown signal name */
+#define PBSE_BADATVAL	15014		/* bad attribute value */
+#define PBSE_MODATRRUN	15015		/* Cannot modify attrib in run state */
+#define PBSE_BADSTATE	15016		/* request invalid for job state */
+#define PBSE_UNKQUE	15018		/* Unknown queue name */
+#define PBSE_BADCRED	15019		/* Invalid Credential in request */
+#define PBSE_EXPIRED	15020		/* Expired Credential in request */
+#define PBSE_QUNOENB	15021		/* Queue not enabled */
+#define PBSE_QACESS	15022		/* No access permission for queue */
+#define PBSE_BADUSER	15023		/* Bad user - no password entry */
+#define PBSE_HOPCOUNT	15024		/* Max hop count exceeded */
+#define PBSE_QUEEXIST	15025		/* Queue already exists */
+#define PBSE_ATTRTYPE	15026		/* incompatable queue attribute type */
+#define PBSE_QUEBUSY	15027		/* Queue Busy (not empty) */
+#define PBSE_QUENBIG	15028		/* Queue name too long */
+#define PBSE_NOSUP	15029		/* Feature/function not supported */
+#define PBSE_QUENOEN	15030		/* Cannot enable queue,needs add def */
+#define PBSE_PROTOCOL	15031		/* Protocol (ASN.1) error */
+#define PBSE_BADATLST	15032		/* Bad attribute list structure */
+#define PBSE_NOCONNECTS	15033		/* No free connections */
+#define PBSE_NOSERVER	15034		/* No server to connect to */
+#define PBSE_UNKRESC	15035		/* Unknown resource */
+#define PBSE_EXCQRESC	15036		/* Job exceeds Queue resource limits */
+#define PBSE_QUENODFLT	15037		/* No Default Queue Defined */
+#define PBSE_NORERUN	15038		/* Job Not Rerunnable */
+#define PBSE_ROUTEREJ	15039		/* Route rejected by all destinations */
+#define PBSE_ROUTEEXPD	15040		/* Time in Route Queue Expired */
+#define PBSE_MOMREJECT  15041		/* Request to MOM failed */
+#define PBSE_BADSCRIPT	15042		/* (qsub) cannot access script file */
+#define PBSE_STAGEIN	15043		/* Stage In of files failed */
+#define PBSE_RESCUNAV	15044		/* Resources temporarily unavailable */
+#define PBSE_BADGRP	15045		/* Bad Group specified */
+#define PBSE_MAXQUED	15046		/* Max number of jobs in queue */
+#define PBSE_CKPBSY	15047		/* Checkpoint Busy, may be retries */
+#define PBSE_EXLIMIT	15048		/* Limit exceeds allowable */
+#define PBSE_BADACCT	15049		/* Bad Account attribute value */
+#define PBSE_ALRDYEXIT	15050		/* Job already in exit state */
+#define PBSE_NOCOPYFILE	15051		/* Job files not copied */
+#define PBSE_CLEANEDOUT	15052		/* unknown job id after clean init */
+#define PBSE_NOSYNCMSTR	15053		/* No Master in Sync Set */
+#define PBSE_BADDEPEND	15054		/* Invalid dependency */
+#define PBSE_DUPLIST	15055		/* Duplicate entry in List */
+#define PBSE_DISPROTO	15056		/* Bad DIS based Request Protocol */
+#define PBSE_EXECTHERE	15057		/* cannot execute there */
+#define PBSE_SISREJECT	15058		/* sister rejected */
+#define PBSE_SISCOMM	15059		/* sister could not communicate */
+#define PBSE_SVRDOWN	15060		/* req rejected -server shutting down */
+#define PBSE_CKPSHORT	15061		/* not all tasks could checkpoint */
+#define PBSE_UNKNODE	15062		/* Named node is not in the list */
+#define PBSE_UNKNODEATR	15063		/* node-attribute not recognized */
+#define PBSE_NONODES	15064		/* Server has no node list */
+#define PBSE_NODENBIG	15065		/* Node name is too big */
+#define PBSE_NODEEXIST	15066		/* Node name already exists */
+#define PBSE_BADNDATVAL	15067		/* Bad node-attribute value */
+#define PBSE_MUTUALEX	15068		/* State values are mutually exclusive */
+#define PBSE_GMODERR	15069		/* Error(s) during global modification of nodes */
+#define PBSE_NORELYMOM	15070		/* could not contact Mom */
+#define PBSE_NOTSNODE	15071		/* no time-shared nodes */
+
+/*
+** 	Resource monitor specific
+*/
+#define PBSE_RMUNKNOWN	15201		/* resource unknown */
+#define PBSE_RMBADPARAM	15202		/* parameter could not be used */
+#define PBSE_RMNOPARAM	15203		/* a parameter needed did not exist */
+#define PBSE_RMEXIST	15204		/* something specified didn't exist */
+#define PBSE_RMSYSTEM	15205		/* a system error occured */
+#define PBSE_RMPART	15206		/* only part of reservation made */
+#define RM_ERR_UNKNOWN	PBSE_RMUNKNOWN
+#define RM_ERR_BADPARAM	PBSE_RMBADPARAM
+#define RM_ERR_NOPARAM	PBSE_RMNOPARAM
+#define RM_ERR_EXIST	PBSE_RMEXIST
+#define RM_ERR_SYSTEM	PBSE_RMSYSTEM
+
+/* HvB 
+ * TORQUE addition
+*/
+#ifndef NULL
+#define NULL (char *)0
+#endif /* NULL */
+
+/* the following structure is used to tie error number      */
+/* with text to be returned to a client, see svr_messages.c */
+
+struct pbs_err_to_txt {
+	int    err_no;
+	char **err_txt;
+};
+
+extern char *pbse_to_txt();
+
+/*
+ * HvB Torque addition
+*/
+extern int pbs_errno;
+#endif
Index: tags/2.8.2/src/pbs_ifl.h
===================================================================
--- tags/2.8.2/src/pbs_ifl.h	(revision 117)
+++ tags/2.8.2/src/pbs_ifl.h	(revision 117)
@@ -0,0 +1,427 @@
+/*
+ * $Id$
+ *
+*         Portable Batch System (PBS) Software License
+* 
+* Copyright (c) 1999, MRJ Technology Solutions.
+* All rights reserved.
+* 
+* Acknowledgment: The Portable Batch System Software was originally developed
+* as a joint project between the Numerical Aerospace Simulation (NAS) Systems
+* Division of NASA Ames Research Center and the National Energy Research
+* Supercomputer Center (NERSC) of Lawrence Livermore National Laboratory.
+* 
+* Redistribution of the Portable Batch System Software and use in source
+* and binary forms, with or without modification, are permitted provided
+* that the following conditions are met:
+* 
+* - Redistributions of source code must retain the above copyright and
+*   acknowledgment notices, this list of conditions and the following
+*   disclaimer.
+* 
+* - Redistributions in binary form must reproduce the above copyright and 
+*   acknowledgment notices, this list of conditions and the following
+*   disclaimer in the documentation and/or other materials provided with the
+*   distribution.
+* 
+* - All advertising materials mentioning features or use of this software must
+*   display the following acknowledgment:
+* 
+*   This product includes software developed by NASA Ames Research Center,
+*   Lawrence Livermore National Laboratory, and MRJ Technology Solutions.
+* 
+*         DISCLAIMER OF WARRANTY
+* 
+* THIS SOFTWARE IS PROVIDED BY MRJ TECHNOLOGY SOLUTIONS ("MRJ") "AS IS" WITHOUT 
+* WARRANTY OF ANY KIND, AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
+* FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT ARE EXPRESSLY DISCLAIMED.
+* 
+* IN NO EVENT, UNLESS REQUIRED BY APPLICABLE LAW, SHALL MRJ, NASA, NOR
+* THE U.S. GOVERNMENT BE LIABLE FOR ANY DIRECT DAMAGES WHATSOEVER,
+* NOR ANY INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+* This license will be governed by the laws of the Commonwealth of Virginia,
+* without reference to its choice of law rules.
+*/
+
+/*
+ * @(#) $Id$
+ */
+
+/*    
+ *
+ *  pbs_ifl.h   
+ *
+ */
+
+/*
+ *  Changed by: Bas van der Vlies <basv@sara.nl>. 
+ *  Desc.     : removed the macro definitions so that SWIG can understand 
+ *              the header file syntax
+*/
+
+#ifndef _PBS_IFL_DEF
+#define _PBS_IFL_DEF
+
+/* Attribute Names used by user commands */
+
+#define ATTR_a "Execution_Time"
+#define ATTR_c "Checkpoint"
+#define ATTR_e "Error_Path"
+#define ATTR_g	"group_list"
+#define ATTR_h "Hold_Types"
+#define ATTR_j "Join_Path"
+#define ATTR_k "Keep_Files"
+#define ATTR_l "Resource_List"
+#define ATTR_m "Mail_Points"
+#define ATTR_o "Output_Path"
+#define ATTR_p "Priority"
+#define ATTR_q "destination"
+#define ATTR_r "Rerunable"
+#define ATTR_u "User_List"
+#define ATTR_v "Variable_List"
+#define ATTR_A "Account_Name"
+#define ATTR_M "Mail_Users"
+#define ATTR_N "Job_Name"
+#define ATTR_S "Shell_Path_List"
+#define ATTR_depend   "depend"
+#define ATTR_inter    "interactive"
+#define ATTR_stagein  "stagein"
+#define ATTR_stageout "stageout"
+
+/* additional job and general attribute names */
+
+#define ATTR_ctime	"ctime"
+#define ATTR_exechost	"exec_host"
+#define ATTR_mtime	"mtime"
+#define ATTR_qtime	"qtime"
+#define ATTR_session	"session_id"
+#define ATTR_euser	"euser"
+#define ATTR_egroup	"egroup"
+#define ATTR_hashname	"hashname"
+#define ATTR_hopcount	"hop_count"
+#define ATTR_security	"security"
+#define ATTR_sched_hint	"sched_hint"
+#define ATTR_substate	"substate"
+#define ATTR_name	"Job_Name"
+#define ATTR_owner	"Job_Owner"
+#define ATTR_used	"resources_used"
+#define ATTR_state	"job_state"
+#define ATTR_queue	"queue"
+#define ATTR_server	"server"
+#define ATTR_maxrun	"max_running"
+#define ATTR_total	"total_jobs"
+#define ATTR_comment	"comment"
+#define ATTR_cookie	"cookie"
+#define ATTR_qrank	"queue_rank"
+#define ATTR_altid	"alt_id"
+#define ATTR_etime	"etime"
+
+/* additional queue attributes names */
+
+#define ATTR_aclgren	"acl_group_enable"
+#define ATTR_aclgroup	"acl_groups"
+#define ATTR_aclhten	"acl_host_enable"
+#define ATTR_aclhost	"acl_hosts"
+#define ATTR_acluren	"acl_user_enable"
+#define ATTR_acluser	"acl_users"
+#define ATTR_altrouter	"alt_router"
+#define ATTR_chkptmin	"checkpoint_min"
+#define ATTR_enable	"enabled"
+#define ATTR_fromroute	"from_route_only"
+#define ATTR_killdelay	"kill_delay"
+#define ATTR_maxgrprun  "max_group_run"
+#define ATTR_maxque	"max_queuable"
+#define ATTR_maxuserrun "max_user_run"
+#define ATTR_qtype	"queue_type"
+#define ATTR_rescassn	"resources_assigned"
+#define ATTR_rescdflt	"resources_default"
+#define ATTR_rescmax	"resources_max"
+#define ATTR_rescmin	"resources_min"
+#define ATTR_rndzretry  "rendezvous_retry"
+#define ATTR_routedest	"route_destinations"
+#define ATTR_routeheld	"route_held_jobs"
+#define ATTR_routewait	"route_waiting_jobs"
+#define ATTR_routeretry	"route_retry_time"
+#define ATTR_routelife	"route_lifetime"
+#define ATTR_rsvexpdt   "reserved_expedite"
+#define ATTR_rsvsync    "reserved_sync"
+#define ATTR_start	"started"
+#define ATTR_count	"state_count"
+#define ATTR_number	"number_jobs"
+
+/* HvB
+ * Used by fifo_improv.patch
+*/
+#define ATTR_reqprop    "required_property"
+
+/* additional server attributes names */
+
+#define ATTR_aclroot	"acl_roots"
+#define ATTR_managers	"managers"
+#define ATTR_dfltque	"default_queue"
+#define ATTR_defnode	"default_node"
+#define ATTR_locsvrs	"location_servers"
+#define ATTR_logevents	"log_events"
+#define ATTR_logfile	"log_file"
+#define ATTR_mailfrom	"mail_from"
+#define ATTR_nodepack	"node_pack"
+#define ATTR_operators	"operators"
+#define ATTR_queryother	"query_other_jobs"
+#define ATTR_resccost	"resources_cost"
+#define ATTR_rescavail	"resources_available"
+#define ATTR_schedit	"scheduler_iteration"
+#define ATTR_scheduling	"scheduling"
+#define ATTR_status	"server_state"
+#define ATTR_syscost	"system_cost"
+
+/* HvB
+ * Used by TORQUE 
+*/
+#define ATTR_pingrate	"node_ping_rate"
+#define ATTR_ndchkrate	"node_check_rate"
+
+/* HvB
+ * Used by fifo_improv.patch
+*/
+#define ATTR_procpack	"proc_pack"
+
+
+/* additional node "attributes" names */
+
+#define ATTR_NODE_state		"state"
+#define ATTR_NODE_np		"np"
+#define ATTR_NODE_properties	"properties"
+#define ATTR_NODE_ntype         "ntype"
+#define ATTR_NODE_jobs          "jobs"
+
+/* various attribute values */
+
+#define CHECKPOINT_UNSPECIFIED "u"
+#define NO_HOLD "n"
+#define NO_JOIN	"n"
+#define NO_KEEP "n"
+#define MAIL_AT_ABORT "a"
+
+
+#define DELDELAY  "deldelay="	/* see qdel.c */
+#define USER_HOLD "u"
+#define OTHER_HOLD "o"
+#define SYSTEM_HOLD "s"
+
+/* node-attribute values (state,ntype) */
+
+#define	ND_free			"free"
+#define ND_offline		"offline"
+#define ND_down			"down"
+#define ND_reserve		"reserve"
+#define ND_job_exclusive	"job-exclusive"
+#define ND_job_sharing		"job-sharing"
+#define ND_busy			"busy"
+#define ND_state_unknown	"state-unknown"
+#define ND_timeshared		"time-shared"
+#define ND_cluster		"cluster"
+
+/*constant related to sum of string lengths for above strings*/
+#define	MAX_ENCODE_BFR		100
+
+#define MGR_CMD_CREATE	0
+#define MGR_CMD_DELETE	1
+#define MGR_CMD_SET	2
+#define MGR_CMD_UNSET	3
+#define MGR_CMD_LIST	4
+#define MGR_CMD_PRINT	5
+#define MGR_CMD_ACTIVE	6
+
+#define MGR_OBJ_NONE	-1
+#define MGR_OBJ_SERVER  0
+#define MGR_OBJ_QUEUE   1
+#define MGR_OBJ_JOB	2
+#define MGR_OBJ_NODE	3
+
+/* Misc defines for various requests */
+
+#define MSG_OUT 1
+#define MSG_ERR 2
+
+#define SHUT_SIG	-1
+#define SHUT_IMMEDIATE	0
+#define SHUT_DELAY	1
+#define SHUT_QUICK	2
+
+#define SIG_RESUME	"resume"
+#define SIG_SUSPEND	"suspend"
+
+#define PBS_MAXHOSTNAME		64	/* max host name length */
+#ifndef MAXPATHLEN
+#define MAXPATHLEN		1024	/* max path name length */
+#endif
+#ifndef MAXNAMLEN
+#define MAXNAMLEN		255
+#endif
+
+#define PBS_MAXUSER		16	/* max user name length */
+#define PBS_MAXGRPN		16	/* max group name length */
+#define PBS_MAXQUEUENAME	15	/* max queue name length */
+#define PBS_MAXSERVERNAME	PBS_MAXHOSTNAME	/* max server name length */
+#define PBS_MAXSEQNUM		6	/* max sequence number length */
+#define PBS_MAXPORTNUM		5	/* udp/tcp port numbers max=16 bits */
+#define PBS_MAXSVRJOBID		(PBS_MAXSEQNUM + PBS_MAXSERVERNAME + PBS_MAXPORTNUM + 2) /* server job id size */
+#define PBS_MAXCLTJOBID		(PBS_MAXSVRJOBID + PBS_MAXSERVERNAME + PBS_MAXPORTNUM + 2) /* client job id size */
+
+/* HvB
+ * TORQUE change used to be 256
+*/
+#define PBS_MAXDEST           1024	/* destination size -- increased from 256*/
+
+#define PBS_MAXROUTEDEST	(PBS_MAXQUEUENAME + PBS_MAXSERVERNAME + PBS_MAXPORTNUM + 2) /* destination size */
+#define PBS_USE_IFF		1	/* pbs_connect() to call pbs_iff */
+#define PBS_INTERACTIVE		1	/* Support of Interactive jobs */
+#define PBS_TERM_BUF_SZ		80	/* Interactive term buffer size */
+#define PBS_TERM_CCA		6	/* Interactive term cntl char array */
+
+
+/* someday the PBS_*_PORT definition will go away and only the	*/
+/* PBS_*_SERVICE_NAME form will be used, maybe			*/
+
+#define PBS_BATCH_SERVICE_NAME		"pbs"
+#define PBS_BATCH_SERVICE_PORT		15001
+#define PBS_BATCH_SERVICE_NAME_DIS	"pbs_dis"	/* new DIS port   */
+#define PBS_BATCH_SERVICE_PORT_DIS	15001		/* new DIS port   */
+#define PBS_MOM_SERVICE_NAME		"pbs_mom"
+#define PBS_MOM_SERVICE_PORT		15002
+#define PBS_MANAGER_SERVICE_NAME	"pbs_resmon"
+#define PBS_MANAGER_SERVICE_PORT	15003
+#define PBS_SCHEDULER_SERVICE_NAME	"pbs_sched"
+#define PBS_SCHEDULER_SERVICE_PORT	15004
+
+enum batch_op {	SET, UNSET, INCR, DECR,
+		EQ, NE, GE, GT, LE, LT, DFLT
+};
+
+/*
+** This structure is identical to attropl so they can be used
+** interchangably.  The op field is not used.
+*/
+struct attrl {
+	struct attrl *next;
+	char	     *name;
+	char	     *resource;
+	char	     *value;
+	enum batch_op 	 op;	/* not used */
+};
+
+struct attropl {
+	struct attropl	*next;
+	char		*name;
+	char		*resource;
+	char		*value;
+	enum batch_op 	 op;
+};
+
+struct batch_status {
+	struct batch_status *next;
+	char		    *name;
+	struct attrl	    *attribs;
+	char		    *text;
+};
+
+/* Resource Reservation Information */
+typedef int	resource_t;	/* resource reservation handle */
+
+#define RESOURCE_T_NULL		(resource_t)0
+#define RESOURCE_T_ALL		(resource_t)-1
+
+extern int
+pbs_errno;		/* error number */
+
+extern char *
+pbs_server;		/* server attempted to connect | connected to */
+			/* see pbs_connect(3B)			      */
+
+extern char avail(int connect, char *resc);
+
+extern int pbs_asyrunjob(int c, char *jobid, char *location, char *extend);
+
+extern int pbs_alterjob(int connect, char *job_id, struct attrl *attrib, 
+		        char *extend);
+
+extern int pbs_connect(char *server);
+
+extern int pbs_query_max_connections();
+
+extern char * pbs_default(void);
+
+extern int pbs_deljob(int connect, char *job_id, char *extend);
+
+extern int pbs_disconnect(int connect);
+
+extern char * pbs_geterrmsg(int connect);
+
+extern int pbs_holdjob(int connect, char *job_id, char *hold_type, 
+		       char *extend);
+
+extern char * pbs_locjob(int connect, char *job_id, char *extend);
+
+extern int pbs_manager(int connect, int command, int obj_type, char *obj_name,
+	struct attropl *attrib, char *extend);
+	
+extern int pbs_movejob(int connect, char *job_id, char *destination, 
+		       char *extend);
+	
+extern int pbs_msgjob(int connect, char *job_id, int file, char *message, 
+	char *extend);
+
+extern int pbs_orderjob (int connect, char *job1, char *job2, char *extend);
+
+extern int pbs_rescquery(int connect, char **rlist, int nresc, int *avail,
+	int *alloc, int *resv, int *down);
+
+extern int pbs_rescreserve(int connect, char **rlist, int nresc, resource_t *phandle);
+
+extern int pbs_rescrelease(int connect, resource_t rhandle);
+
+extern int pbs_rerunjob(int connect, char *job_id, char *extend);
+
+extern int pbs_rlsjob(int connect, char *job_id, char *hold_type, char *extend);
+
+extern int pbs_runjob(int connect, char *jobid, char *loc, char *extend);
+
+extern char **pbs_selectjob(int connect, struct attropl *select_list, char *extend);
+
+extern int pbs_sigjob(int connect, char *job_id, char *signal, char *extend);
+
+extern void pbs_statfree(struct batch_status *stat);
+
+// Function does not exitst Bas van der Vlies
+// 
+// extern struct batch_status *pbs_statdest(int connect, char *id, char *extend);
+
+extern struct batch_status *pbs_statjob(int connect, char *id, struct attrl *attrib, char *extend);
+
+extern struct batch_status *pbs_selstat(int connect, struct attropl *select_list, char *extend);
+
+extern struct batch_status *pbs_statque(int connect, char *id, struct attrl *attrib, char *extend); 
+
+extern struct batch_status *pbs_statserver(int connect, struct attrl *attrib, char *extend);
+
+extern struct batch_status *pbs_statnode(int connect, char *id, struct attrl *attrib, char *extend);
+
+extern char *pbs_submit(int connect, struct attropl *attrib, char *script,
+	char *destination, char *extend);
+	
+extern int pbs_terminate(int connect, int manner, char *extend);
+
+extern int totpool(int connect, int update);
+
+extern int usepool(int connect, int update);
+
+#endif	/* _PBS_IFL_DEF */
+
+/*  end of pbs_ifl.h  */
Index: tags/2.8.2/src/pbs_python.h
===================================================================
--- tags/2.8.2/src/pbs_python.h	(revision 117)
+++ tags/2.8.2/src/pbs_python.h	(revision 117)
@@ -0,0 +1,378 @@
+/*
+ * @(#) $Id$
+ */
+
+/*
+ *  Changed by: Bas van der Vlies <basv@sara.nl>. 
+ *  Desc.     : removed the macro definitions so that SWIG can understand 
+ *              the header file syntax
+ *              Made some other improvements so that the python shadow
+ *              classe are created with the right fields and automatic
+ *              conversion of C-lists and Python-lists.
+*/
+
+#ifndef _PBS_IFL_DEF
+#define _PBS_IFL_DEF
+
+/* Attribute Names used by user commands */
+
+#define ATTR_a "Execution_Time"
+#define ATTR_c "Checkpoint"
+#define ATTR_e "Error_Path"
+#define ATTR_g	"group_list"
+#define ATTR_h "Hold_Types"
+#define ATTR_j "Join_Path"
+#define ATTR_k "Keep_Files"
+#define ATTR_l "Resource_List"
+#define ATTR_m "Mail_Points"
+#define ATTR_o "Output_Path"
+#define ATTR_p "Priority"
+#define ATTR_q "destination"
+#define ATTR_r "Rerunable"
+#define ATTR_u "User_List"
+#define ATTR_v "Variable_List"
+#define ATTR_A "Account_Name"
+#define ATTR_M "Mail_Users"
+#define ATTR_N "Job_Name"
+#define ATTR_S "Shell_Path_List"
+#define ATTR_depend   "depend"
+#define ATTR_inter    "interactive"
+#define ATTR_stagein  "stagein"
+#define ATTR_stageout "stageout"
+
+/* additional job and general attribute names */
+
+#define ATTR_ctime	"ctime"
+#define ATTR_exechost	"exec_host"
+#define ATTR_mtime	"mtime"
+#define ATTR_qtime	"qtime"
+#define ATTR_session	"session_id"
+#define ATTR_euser	"euser"
+#define ATTR_egroup	"egroup"
+#define ATTR_hashname	"hashname"
+#define ATTR_hopcount	"hop_count"
+#define ATTR_security	"security"
+#define ATTR_sched_hint	"sched_hint"
+#define ATTR_substate	"substate"
+#define ATTR_name	"Job_Name"
+#define ATTR_owner	"Job_Owner"
+#define ATTR_used	"resources_used"
+#define ATTR_state	"job_state"
+#define ATTR_queue	"queue"
+#define ATTR_server	"server"
+#define ATTR_maxrun	"max_running"
+#define ATTR_total	"total_jobs"
+#define ATTR_comment	"comment"
+#define ATTR_cookie	"cookie"
+#define ATTR_qrank	"queue_rank"
+#define ATTR_altid	"alt_id"
+#define ATTR_etime	"etime"
+
+/* additional queue attributes names */
+
+#define ATTR_aclgren	"acl_group_enable"
+#define ATTR_aclgroup	"acl_groups"
+#define ATTR_aclhten	"acl_host_enable"
+#define ATTR_aclhost	"acl_hosts"
+#define ATTR_acluren	"acl_user_enable"
+#define ATTR_acluser	"acl_users"
+#define ATTR_altrouter	"alt_router"
+#define ATTR_chkptmin	"checkpoint_min"
+#define ATTR_enable	"enabled"
+#define ATTR_fromroute	"from_route_only"
+#define ATTR_killdelay	"kill_delay"
+#define ATTR_maxgrprun  "max_group_run"
+#define ATTR_maxque	"max_queuable"
+#define ATTR_maxuserrun "max_user_run"
+#define ATTR_qtype	"queue_type"
+#define ATTR_rescassn	"resources_assigned"
+#define ATTR_rescdflt	"resources_default"
+#define ATTR_rescmax	"resources_max"
+#define ATTR_rescmin	"resources_min"
+#define ATTR_rndzretry  "rendezvous_retry"
+#define ATTR_routedest	"route_destinations"
+#define ATTR_routeheld	"route_held_jobs"
+#define ATTR_routewait	"route_waiting_jobs"
+#define ATTR_routeretry	"route_retry_time"
+#define ATTR_routelife	"route_lifetime"
+#define ATTR_rsvexpdt   "reserved_expedite"
+#define ATTR_rsvsync    "reserved_sync"
+#define ATTR_start	"started"
+#define ATTR_count	"state_count"
+#define ATTR_number	"number_jobs"
+
+/* HvB
+ * Used by fifo_improv.patch
+*/
+#define ATTR_reqprop    "required_property"
+
+
+/* additional server attributes names */
+
+#define ATTR_aclroot	"acl_roots"
+#define ATTR_managers	"managers"
+#define ATTR_dfltque	"default_queue"
+#define ATTR_defnode	"default_node"
+#define ATTR_locsvrs	"location_servers"
+#define ATTR_logevents	"log_events"
+#define ATTR_logfile	"log_file"
+#define ATTR_mailfrom	"mail_from"
+#define ATTR_nodepack	"node_pack"
+#define ATTR_operators	"operators"
+#define ATTR_queryother	"query_other_jobs"
+#define ATTR_resccost	"resources_cost"
+#define ATTR_rescavail	"resources_available"
+#define ATTR_schedit	"scheduler_iteration"
+#define ATTR_scheduling	"scheduling"
+#define ATTR_status	"server_state"
+#define ATTR_syscost	"system_cost"
+
+/* HvB
+ * Used by TORQUE
+*/
+#define ATTR_pingrate	"node_ping_rate"
+#define ATTR_ndchkrate	"node_check_rate"
+
+/* HvB
+ * Used by fifo_improv.patch
+*/
+#define ATTR_procpack	"proc_pack"
+
+
+
+/* additional node "attributes" names */
+
+#define ATTR_NODE_state		"state"
+#define ATTR_NODE_np		"np"
+#define ATTR_NODE_properties	"properties"
+#define ATTR_NODE_ntype         "ntype"
+#define ATTR_NODE_jobs          "jobs"
+
+/* various attribute values */
+
+#define CHECKPOINT_UNSPECIFIED "u"
+#define NO_HOLD "n"
+#define NO_JOIN	"n"
+#define NO_KEEP "n"
+#define MAIL_AT_ABORT "a"
+
+
+#define DELDELAY  "deldelay="	/* see qdel.c */
+#define USER_HOLD "u"
+#define OTHER_HOLD "o"
+#define SYSTEM_HOLD "s"
+
+/* node-attribute values (state,ntype) */
+
+#define	ND_free			"free"
+#define ND_offline		"offline"
+#define ND_down			"down"
+#define ND_reserve		"reserve"
+#define ND_job_exclusive	"job-exclusive"
+#define ND_job_sharing		"job-sharing"
+#define ND_busy			"busy"
+#define ND_state_unknown	"state-unknown"
+#define ND_timeshared		"time-shared"
+#define ND_cluster		"cluster"
+
+/*constant related to sum of string lengths for above strings*/
+#define	MAX_ENCODE_BFR		100
+
+#define MGR_CMD_CREATE	0
+#define MGR_CMD_DELETE	1
+#define MGR_CMD_SET	2
+#define MGR_CMD_UNSET	3
+#define MGR_CMD_LIST	4
+#define MGR_CMD_PRINT	5
+#define MGR_CMD_ACTIVE	6
+
+#define MGR_OBJ_NONE	-1
+#define MGR_OBJ_SERVER  0
+#define MGR_OBJ_QUEUE   1
+#define MGR_OBJ_JOB	2
+#define MGR_OBJ_NODE	3
+
+/* Misc defines for various requests */
+
+#define MSG_OUT 1
+#define MSG_ERR 2
+
+#define SHUT_SIG	-1
+#define SHUT_IMMEDIATE	0
+#define SHUT_DELAY	1
+#define SHUT_QUICK	2
+
+#define SIG_RESUME	"resume"
+#define SIG_SUSPEND	"suspend"
+
+#define PBS_MAXHOSTNAME		64	/* max host name length */
+#ifndef MAXPATHLEN
+#define MAXPATHLEN		1024	/* max path name length */
+#endif
+#ifndef MAXNAMLEN
+#define MAXNAMLEN		255
+#endif
+
+#define PBS_MAXUSER		16	/* max user name length */
+#define PBS_MAXGRPN		16	/* max group name length */
+#define PBS_MAXQUEUENAME	15	/* max queue name length */
+#define PBS_MAXSERVERNAME	PBS_MAXHOSTNAME	/* max server name length */
+#define PBS_MAXSEQNUM		6	/* max sequence number length */
+#define PBS_MAXPORTNUM		5	/* udp/tcp port numbers max=16 bits */
+#define PBS_MAXSVRJOBID		(PBS_MAXSEQNUM + PBS_MAXSERVERNAME + PBS_MAXPORTNUM + 2) /* server job id size */
+#define PBS_MAXCLTJOBID		(PBS_MAXSVRJOBID + PBS_MAXSERVERNAME + PBS_MAXPORTNUM + 2) /* client job id size */
+
+/* HvB
+ * TORQUE change used to be 256
+*/
+#define PBS_MAXDEST		1024	/* destination size -- increased from 256*/
+
+#define PBS_MAXROUTEDEST	(PBS_MAXQUEUENAME + PBS_MAXSERVERNAME + PBS_MAXPORTNUM + 2) /* destination size */
+#define PBS_USE_IFF		1	/* pbs_connect() to call pbs_iff */
+#define PBS_INTERACTIVE		1	/* Support of Interactive jobs */
+#define PBS_TERM_BUF_SZ		80	/* Interactive term buffer size */
+#define PBS_TERM_CCA		6	/* Interactive term cntl char array */
+
+
+/* someday the PBS_*_PORT definition will go away and only the	*/
+/* PBS_*_SERVICE_NAME form will be used, maybe			*/
+
+#define PBS_BATCH_SERVICE_NAME		"pbs"
+#define PBS_BATCH_SERVICE_PORT		15001
+#define PBS_BATCH_SERVICE_NAME_DIS	"pbs_dis"	/* new DIS port   */
+#define PBS_BATCH_SERVICE_PORT_DIS	15001		/* new DIS port   */
+#define PBS_MOM_SERVICE_NAME		"pbs_mom"
+#define PBS_MOM_SERVICE_PORT		15002
+#define PBS_MANAGER_SERVICE_NAME	"pbs_resmon"
+#define PBS_MANAGER_SERVICE_PORT	15003
+#define PBS_SCHEDULER_SERVICE_NAME	"pbs_sched"
+#define PBS_SCHEDULER_SERVICE_PORT	15004
+
+enum batch_op {	SET, UNSET, INCR, DECR,
+		EQ, NE, GE, GT, LE, LT, DFLT
+};
+
+/*
+** This structure is identical to attropl so they can be used
+** interchangably.  The op field is not used.
+** Bas van der Vlies <basv@sara.nl>:
+**   Remove the next field so Python does not wrap this field.
+*/
+struct attrl {
+	char	     *name;
+	char	     *resource;
+	char	     *value;
+	enum batch_op 	 op;	/* not used */
+};
+
+struct attropl {
+	char		*name;
+	char		*resource;
+	char		*value;
+	enum batch_op 	 op;
+};
+
+struct batch_status {
+	char		    *name;
+	struct attrl	    *attribs;
+	char		    *text;
+};
+
+/* Resource Reservation Information */
+typedef int	resource_t;	/* resource reservation handle */
+
+#define RESOURCE_T_NULL		(resource_t)0
+#define RESOURCE_T_ALL		(resource_t)-1
+
+extern int
+pbs_errno;		/* error number */
+
+extern char *
+pbs_server;		/* server attempted to connect | connected to */
+			/* see pbs_connect(3B)			      */
+
+extern char avail(int connect, char *resc);
+
+extern int pbs_asyrunjob(int c, char *jobid, char *location, char *extend);
+
+extern int pbs_alterjob(int connect, char *job_id, 
+    struct attrl *IN, char *extend);
+
+extern int pbs_connect(char *server);
+
+extern int pbs_query_max_connections();
+
+extern char * pbs_default(void);
+
+extern int pbs_deljob(int connect, char *job_id, char *extend);
+
+extern int pbs_disconnect(int connect);
+
+extern char * pbs_geterrmsg(int connect);
+
+extern int pbs_holdjob(int connect, char *job_id, char *hold_type, 
+		       char *extend);
+
+extern char * pbs_locjob(int connect, char *job_id, char *extend);
+
+extern int pbs_manager(int connect, int command, int obj_type, char *obj_name,
+	struct attropl *IN, char *extend);
+	
+extern int pbs_movejob(int connect, char *job_id, char *destination, 
+		       char *extend);
+	
+extern int pbs_msgjob(int connect, char *job_id, int file, char *message, 
+	char *extend);
+
+extern int pbs_orderjob (int connect, char *job1, char *job2, char *extend);
+
+extern int pbs_rescquery(int connect, char **IN, int nresc, int *avail,
+	int *alloc, int *resv, int *down);
+
+extern int pbs_rescreserve(int connect, char **IN, int nresc, resource_t *phandle);
+
+extern int pbs_rescrelease(int connect, resource_t rhandle);
+
+extern int pbs_rerunjob(int connect, char *job_id, char *extend);
+
+extern int pbs_rlsjob(int connect, char *job_id, char *hold_type, char *extend);
+
+extern int pbs_runjob(int connect, char *jobid, char *loc, char *extend);
+
+extern char **pbs_selectjob(int connect, struct attropl *IN, char *extend);
+
+extern int pbs_sigjob(int connect, char *job_id, char *signal, char *extend);
+
+extern void pbs_statfree(struct batch_status *IN);
+
+// Function does not exitst Bas van der Vlies
+// 
+// extern struct batch_status *pbs_statdest(int connect, char *id, char *extend);
+
+extern struct batch_status *pbs_statjob(int connect, char *id, 
+    struct attrl *IN, char *extend);
+
+extern struct batch_status *pbs_selstat(int connect, 
+    struct attropl *IN, char *extend);
+
+extern struct batch_status *pbs_statque(int connect, char *id, 
+    struct attrl *IN, char *extend); 
+
+extern struct batch_status *pbs_statserver(int connect, struct attrl *IN, 
+    char *extend);
+
+extern struct batch_status *pbs_statnode(int connect, char *id, 
+    struct attrl *IN, char *extend);
+
+extern char *pbs_submit(int connect, struct attropl *IN, char *script,
+	char *destination, char *extend);
+	
+extern int pbs_terminate(int connect, int manner, char *extend);
+
+extern int totpool(int connect, int update);
+
+extern int usepool(int connect, int update);
+
+#endif	/* _PBS_IFL_DEF */
+
+/*  end of pbs_ifl.h  */
Index: tags/2.8.2/src/pbs_wrap.c
===================================================================
--- tags/2.8.2/src/pbs_wrap.c	(revision 117)
+++ tags/2.8.2/src/pbs_wrap.c	(revision 117)
@@ -0,0 +1,4595 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 1.3.22
+ * 
+ * This file is not intended to be easily readable and contains a number of 
+ * coding conventions designed to improve portability and efficiency. Do not make
+ * changes to this file unless you know what you are doing--modify the SWIG 
+ * interface file instead. 
+ * ----------------------------------------------------------------------------- */
+
+#define SWIGPYTHON
+
+#include "Python.h"
+
+/*************************************************************** -*- c -*-
+ * python/precommon.swg
+ *
+ * Rename all exported symbols from common.swg, to avoid symbol
+ * clashes if multiple interpreters are included
+ *
+ ************************************************************************/
+
+#define SWIG_TypeRegister    SWIG_Python_TypeRegister
+#define SWIG_TypeCheck       SWIG_Python_TypeCheck
+#define SWIG_TypeCast        SWIG_Python_TypeCast
+#define SWIG_TypeDynamicCast SWIG_Python_TypeDynamicCast
+#define SWIG_TypeName        SWIG_Python_TypeName
+#define SWIG_TypePrettyName  SWIG_Python_TypePrettyName
+#define SWIG_TypeQuery       SWIG_Python_TypeQuery
+#define SWIG_TypeClientData  SWIG_Python_TypeClientData
+#define SWIG_PackData        SWIG_Python_PackData 
+#define SWIG_UnpackData      SWIG_Python_UnpackData 
+
+
+/***********************************************************************
+ * common.swg
+ *
+ *     This file contains generic SWIG runtime support for pointer
+ *     type checking as well as a few commonly used macros to control
+ *     external linkage.
+ *
+ * Author : David Beazley (beazley@cs.uchicago.edu)
+ *
+ * Copyright (c) 1999-2000, The University of Chicago
+ * 
+ * This file may be freely redistributed without license or fee provided
+ * this copyright message remains intact.
+ ************************************************************************/
+
+#include <string.h>
+
+#if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
+#  if defined(_MSC_VER) || defined(__GNUC__)
+#    if defined(STATIC_LINKED)
+#      define SWIGEXPORT(a) a
+#      define SWIGIMPORT(a) extern a
+#    else
+#      define SWIGEXPORT(a) __declspec(dllexport) a
+#      define SWIGIMPORT(a) extern a
+#    endif
+#  else
+#    if defined(__BORLANDC__)
+#      define SWIGEXPORT(a) a _export
+#      define SWIGIMPORT(a) a _export
+#    else
+#      define SWIGEXPORT(a) a
+#      define SWIGIMPORT(a) a
+#    endif
+#  endif
+#else
+#  define SWIGEXPORT(a) a
+#  define SWIGIMPORT(a) a
+#endif
+
+#ifdef SWIG_GLOBAL
+#  define SWIGRUNTIME(a) SWIGEXPORT(a)
+#else
+#  define SWIGRUNTIME(a) static a
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef void *(*swig_converter_func)(void *);
+typedef struct swig_type_info *(*swig_dycast_func)(void **);
+
+typedef struct swig_type_info {
+  const char             *name;
+  swig_converter_func     converter;
+  const char             *str;
+  void                   *clientdata;
+  swig_dycast_func        dcast;
+  struct swig_type_info  *next;
+  struct swig_type_info  *prev;
+} swig_type_info;
+
+#ifdef SWIG_NOINCLUDE
+
+SWIGIMPORT(swig_type_info *) SWIG_TypeRegister(swig_type_info *);
+SWIGIMPORT(swig_type_info *) SWIG_TypeCheck(char *c, swig_type_info *);
+SWIGIMPORT(void *)           SWIG_TypeCast(swig_type_info *, void *);
+SWIGIMPORT(swig_type_info *) SWIG_TypeDynamicCast(swig_type_info *, void **);
+SWIGIMPORT(const char *)     SWIG_TypeName(const swig_type_info *);
+SWIGIMPORT(const char *)     SWIG_TypePrettyName(const swig_type_info *);
+SWIGIMPORT(swig_type_info *) SWIG_TypeQuery(const char *);
+SWIGIMPORT(void)             SWIG_TypeClientData(swig_type_info *, void *);
+SWIGIMPORT(char *)           SWIG_PackData(char *, void *, int);
+SWIGIMPORT(char *)           SWIG_UnpackData(char *, void *, int);
+
+#else
+
+static swig_type_info *swig_type_list = 0;
+static swig_type_info **swig_type_list_handle = &swig_type_list;
+
+/* Register a type mapping with the type-checking */
+SWIGRUNTIME(swig_type_info *)
+SWIG_TypeRegister(swig_type_info *ti) {
+  swig_type_info *tc, *head, *ret, *next;
+  /* Check to see if this type has already been registered */
+  tc = *swig_type_list_handle;
+  while (tc) {
+    if (strcmp(tc->name, ti->name) == 0) {
+      /* Already exists in the table.  Just add additional types to the list */
+      if (tc->clientdata) ti->clientdata = tc->clientdata;
+      head = tc;
+      next = tc->next;
+      goto l1;
+    }
+    tc = tc->prev;
+  }
+  head = ti;
+  next = 0;
+
+  /* Place in list */
+  ti->prev = *swig_type_list_handle;
+  *swig_type_list_handle = ti;
+
+  /* Build linked lists */
+  l1:
+  ret = head;
+  tc = ti + 1;
+  /* Patch up the rest of the links */
+  while (tc->name) {
+    head->next = tc;
+    tc->prev = head;
+    head = tc;
+    tc++;
+  }
+  if (next) next->prev = head;
+  head->next = next;
+  return ret;
+}
+
+/* Check the typename */
+SWIGRUNTIME(swig_type_info *) 
+SWIG_TypeCheck(char *c, swig_type_info *ty) {
+  swig_type_info *s;
+  if (!ty) return 0;        /* Void pointer */
+  s = ty->next;             /* First element always just a name */
+  do {
+    if (strcmp(s->name,c) == 0) {
+      if (s == ty->next) return s;
+      /* Move s to the top of the linked list */
+      s->prev->next = s->next;
+      if (s->next) {
+        s->next->prev = s->prev;
+      }
+      /* Insert s as second element in the list */
+      s->next = ty->next;
+      if (ty->next) ty->next->prev = s;
+      ty->next = s;
+      s->prev = ty;
+      return s;
+    }
+    s = s->next;
+  } while (s && (s != ty->next));
+  return 0;
+}
+
+/* Cast a pointer up an inheritance hierarchy */
+SWIGRUNTIME(void *) 
+SWIG_TypeCast(swig_type_info *ty, void *ptr) {
+  if ((!ty) || (!ty->converter)) return ptr;
+  return (*ty->converter)(ptr);
+}
+
+/* Dynamic pointer casting. Down an inheritance hierarchy */
+SWIGRUNTIME(swig_type_info *) 
+SWIG_TypeDynamicCast(swig_type_info *ty, void **ptr) {
+  swig_type_info *lastty = ty;
+  if (!ty || !ty->dcast) return ty;
+  while (ty && (ty->dcast)) {
+    ty = (*ty->dcast)(ptr);
+    if (ty) lastty = ty;
+  }
+  return lastty;
+}
+
+/* Return the name associated with this type */
+SWIGRUNTIME(const char *)
+SWIG_TypeName(const swig_type_info *ty) {
+  return ty->name;
+}
+
+/* Return the pretty name associated with this type,
+   that is an unmangled type name in a form presentable to the user.
+*/
+SWIGRUNTIME(const char *)
+SWIG_TypePrettyName(const swig_type_info *type) {
+  /* The "str" field contains the equivalent pretty names of the
+     type, separated by vertical-bar characters.  We choose
+     to print the last name, as it is often (?) the most
+     specific. */
+  if (type->str != NULL) {
+    const char *last_name = type->str;
+    const char *s;
+    for (s = type->str; *s; s++)
+      if (*s == '|') last_name = s+1;
+    return last_name;
+  }
+  else
+    return type->name;
+}
+
+/* 
+   Compare two type names skipping the space characters, therefore
+   "char*" == "char *" and "Class<int>" == "Class<int >", etc.
+
+   Return 0 when the two name types are equivalent, as in
+   strncmp, but skipping ' '.
+*/
+static int
+SWIG_TypeNameComp(const char *f1, const char *l1,
+		  const char *f2, const char *l2) {
+  for (;(f1 != l1) && (f2 != l2); ++f1, ++f2) {
+    while ((*f1 == ' ') && (f1 != l1)) ++f1;
+    while ((*f2 == ' ') && (f2 != l2)) ++f2;
+    if (*f1 != *f2) return *f1 - *f2;
+  }
+  return (l1 - f1) - (l2 - f2);
+}
+
+/*
+  Check type equivalence in a name list like <name1>|<name2>|...
+*/
+static int
+SWIG_TypeEquiv(const char *nb, const char *tb) {
+  int equiv = 0;
+  const char* te = tb + strlen(tb);
+  const char* ne = nb;
+  while (!equiv && *ne) {
+    for (nb = ne; *ne; ++ne) {
+      if (*ne == '|') break;
+    }
+    equiv = SWIG_TypeNameComp(nb, ne, tb, te) == 0;
+    if (*ne) ++ne;
+  }
+  return equiv;
+}
+  
+
+/* Search for a swig_type_info structure */
+SWIGRUNTIME(swig_type_info *)
+SWIG_TypeQuery(const char *name) {
+  swig_type_info *ty = *swig_type_list_handle;
+  while (ty) {
+    if (ty->str && (SWIG_TypeEquiv(ty->str,name))) return ty;
+    if (ty->name && (strcmp(name,ty->name) == 0)) return ty;
+    ty = ty->prev;
+  }
+  return 0;
+}
+
+/* Set the clientdata field for a type */
+SWIGRUNTIME(void)
+SWIG_TypeClientData(swig_type_info *ti, void *clientdata) {
+  swig_type_info *tc, *equiv;
+  if (ti->clientdata == clientdata) return;
+  ti->clientdata = clientdata;
+  equiv = ti->next;
+  while (equiv) {
+    if (!equiv->converter) {
+      tc = *swig_type_list_handle;
+      while (tc) {
+        if ((strcmp(tc->name, equiv->name) == 0))
+          SWIG_TypeClientData(tc,clientdata);
+        tc = tc->prev;
+      }
+    }
+    equiv = equiv->next;
+  }
+}
+
+/* Pack binary data into a string */
+SWIGRUNTIME(char *)
+SWIG_PackData(char *c, void *ptr, int sz) {
+  static char hex[17] = "0123456789abcdef";
+  unsigned char *u = (unsigned char *) ptr;
+  const unsigned char *eu =  u + sz;
+  register unsigned char uu;
+  for (; u != eu; ++u) {
+    uu = *u;
+    *(c++) = hex[(uu & 0xf0) >> 4];
+    *(c++) = hex[uu & 0xf];
+  }
+  return c;
+}
+
+/* Unpack binary data from a string */
+SWIGRUNTIME(char *)
+SWIG_UnpackData(char *c, void *ptr, int sz) {
+  register unsigned char uu = 0;
+  register int d;
+  unsigned char *u = (unsigned char *) ptr;
+  const unsigned char *eu =  u + sz;
+  for (; u != eu; ++u) {
+    d = *(c++);
+    if ((d >= '0') && (d <= '9'))
+      uu = ((d - '0') << 4);
+    else if ((d >= 'a') && (d <= 'f'))
+      uu = ((d - ('a'-10)) << 4);
+    d = *(c++);
+    if ((d >= '0') && (d <= '9'))
+      uu |= (d - '0');
+    else if ((d >= 'a') && (d <= 'f'))
+      uu |= (d - ('a'-10));
+    *u = uu;
+  }
+  return c;
+}
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+/***********************************************************************
+ * pyrun.swg
+ *
+ *     This file contains the runtime support for Python modules
+ *     and includes code for managing global variables and pointer
+ *     type checking.
+ *
+ * Author : David Beazley (beazley@cs.uchicago.edu)
+ ************************************************************************/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define SWIG_PY_INT     1
+#define SWIG_PY_FLOAT   2
+#define SWIG_PY_STRING  3
+#define SWIG_PY_POINTER 4
+#define SWIG_PY_BINARY  5
+
+/* Flags for pointer conversion */
+
+#define SWIG_POINTER_EXCEPTION     0x1
+#define SWIG_POINTER_DISOWN        0x2
+
+/* Exception handling in wrappers */
+#define SWIG_fail   goto fail
+
+/* Constant information structure */
+typedef struct swig_const_info {
+    int type;
+    char *name;
+    long lvalue;
+    double dvalue;
+    void   *pvalue;
+    swig_type_info **ptype;
+} swig_const_info;
+
+/* Common SWIG API */
+#define SWIG_ConvertPtr(obj, pp, type, flags) \
+  SWIG_Python_ConvertPtr(obj, pp, type, flags)
+#define SWIG_NewPointerObj(p, type, flags) \
+  SWIG_Python_NewPointerObj(p, type, flags)
+#define SWIG_MustGetPtr(p, type, argnum, flags) \
+  SWIG_Python_MustGetPtr(p, type, argnum, flags)
+ 
+/* Python-specific SWIG API */
+#define SWIG_newvarlink() \
+  SWIG_Python_newvarlink()
+#define SWIG_addvarlink(p, name, get_attr, set_attr) \
+  SWIG_Python_addvarlink(p, name, get_attr, set_attr)
+#define SWIG_ConvertPacked(obj, ptr, sz, ty, flags) \
+  SWIG_Python_ConvertPacked(obj, ptr, sz, ty, flags)
+#define SWIG_NewPackedObj(ptr, sz, type) \
+  SWIG_Python_NewPackedObj(ptr, sz, type)
+#define SWIG_InstallConstants(d, constants) \
+  SWIG_Python_InstallConstants(d, constants)
+
+typedef double (*py_objasdbl_conv)(PyObject *obj);
+
+#ifdef SWIG_NOINCLUDE
+
+SWIGIMPORT(int)               SWIG_Python_ConvertPtr(PyObject *, void **, swig_type_info *, int);
+SWIGIMPORT(PyObject *)        SWIG_Python_NewPointerObj(void *, swig_type_info *,int own);
+SWIGIMPORT(void *)            SWIG_Python_MustGetPtr(PyObject *, swig_type_info *, int, int);
+SWIGIMPORT(PyObject *)        SWIG_Python_newvarlink(void);
+SWIGIMPORT(void)              SWIG_Python_addvarlink(PyObject *, char *, PyObject *(*)(void), int (*)(PyObject *));
+SWIGIMPORT(int)               SWIG_Python_ConvertPacked(PyObject *, void *, int sz, swig_type_info *, int);
+SWIGIMPORT(PyObject *)        SWIG_Python_NewPackedObj(void *, int sz, swig_type_info *);
+SWIGIMPORT(void)              SWIG_Python_InstallConstants(PyObject *d, swig_const_info constants[]);
+
+
+#else
+
+
+/* -----------------------------------------------------------------------------
+ * global variable support code.
+ * ----------------------------------------------------------------------------- */
+
+typedef struct swig_globalvar {   
+  char       *name;                  /* Name of global variable */
+  PyObject *(*get_attr)(void);       /* Return the current value */
+  int       (*set_attr)(PyObject *); /* Set the value */
+  struct swig_globalvar *next;
+} swig_globalvar;
+
+typedef struct swig_varlinkobject {
+  PyObject_HEAD
+  swig_globalvar *vars;
+} swig_varlinkobject;
+
+static PyObject *
+swig_varlink_repr(swig_varlinkobject *v) {
+  v = v;
+  return PyString_FromString("<Global variables>");
+}
+
+static int
+swig_varlink_print(swig_varlinkobject *v, FILE *fp, int flags) {
+  swig_globalvar  *var;
+  flags = flags;
+  fprintf(fp,"Global variables { ");
+  for (var = v->vars; var; var=var->next) {
+    fprintf(fp,"%s", var->name);
+    if (var->next) fprintf(fp,", ");
+  }
+  fprintf(fp," }\n");
+  return 0;
+}
+
+static PyObject *
+swig_varlink_getattr(swig_varlinkobject *v, char *n) {
+  swig_globalvar *var = v->vars;
+  while (var) {
+    if (strcmp(var->name,n) == 0) {
+      return (*var->get_attr)();
+    }
+    var = var->next;
+  }
+  PyErr_SetString(PyExc_NameError,"Unknown C global variable");
+  return NULL;
+}
+
+static int
+swig_varlink_setattr(swig_varlinkobject *v, char *n, PyObject *p) {
+  swig_globalvar *var = v->vars;
+  while (var) {
+    if (strcmp(var->name,n) == 0) {
+      return (*var->set_attr)(p);
+    }
+    var = var->next;
+  }
+  PyErr_SetString(PyExc_NameError,"Unknown C global variable");
+  return 1;
+}
+
+statichere PyTypeObject varlinktype = {
+  PyObject_HEAD_INIT(0)              
+  0,                                  /* Number of items in variable part (ob_size) */
+  (char *)"swigvarlink",              /* Type name (tp_name) */
+  sizeof(swig_varlinkobject),         /* Basic size (tp_basicsize) */
+  0,                                  /* Itemsize (tp_itemsize) */
+  0,                                  /* Deallocator (tp_dealloc) */ 
+  (printfunc) swig_varlink_print,     /* Print (tp_print) */
+  (getattrfunc) swig_varlink_getattr, /* get attr (tp_getattr) */
+  (setattrfunc) swig_varlink_setattr, /* Set attr (tp_setattr) */
+  0,                                  /* tp_compare */
+  (reprfunc) swig_varlink_repr,       /* tp_repr */
+  0,                                  /* tp_as_number */
+  0,                                  /* tp_as_sequence */
+  0,                                  /* tp_as_mapping */
+  0,                                  /* tp_hash */
+  0,                                  /* tp_call */
+  0,                                  /* tp_str */
+  0,                                  /* tp_getattro */
+  0,                                  /* tp_setattro */
+  0,                                  /* tp_as_buffer */
+  0,                                  /* tp_flags */
+  0,                                  /* tp_doc */
+  0,                                  /* tp_traverse */
+  0,                                  /* tp_clear */
+  0,                                  /* tp_richcompare */
+  0,                                  /* tp_weaklistoffset */
+#if PY_VERSION_HEX >= 0x02020000
+  0,                                  /* tp_iter */
+  0,                                  /* tp_iternext */
+  0,                                  /* tp_methods */
+  0,                                  /* tp_members */
+  0,                                  /* tp_getset */
+  0,                                  /* tp_base */
+  0,                                  /* tp_dict */
+  0,                                  /* tp_descr_get */
+  0,                                  /* tp_descr_set */
+  0,                                  /* tp_dictoffset */
+  0,                                  /* tp_init */
+  0,                                  /* tp_alloc */
+  0,                                  /* tp_new */
+  0,                                  /* tp_free */
+  0,                                  /* tp_is_gc */
+  0,                                  /* tp_bases */
+  0,                                  /* tp_mro */
+  0,                                  /* tp_cache */
+  0,                                  /* tp_subclasses */
+  0,                                  /* tp_weaklist */
+#endif
+#if PY_VERSION_HEX >= 0x02030200
+  0,                                  /* tp_del */
+#endif
+#ifdef COUNT_ALLOCS
+  /* these must be last */
+  0,                                  /* tp_alloc */
+  0,                                  /* tp_free */
+  0,                                  /* tp_maxalloc */
+  0,                                  /*  tp_next */
+#endif
+};
+
+/* Create a variable linking object for use later */
+SWIGRUNTIME(PyObject *)
+SWIG_Python_newvarlink(void) {
+  swig_varlinkobject *result = 0;
+  result = PyMem_NEW(swig_varlinkobject,1);
+  varlinktype.ob_type = &PyType_Type;    /* Patch varlinktype into a PyType */
+  result->ob_type = &varlinktype;
+  result->vars = 0;
+  result->ob_refcnt = 0;
+  Py_XINCREF((PyObject *) result);
+  return ((PyObject*) result);
+}
+
+SWIGRUNTIME(void)
+SWIG_Python_addvarlink(PyObject *p, char *name, PyObject *(*get_attr)(void), int (*set_attr)(PyObject *p)) {
+  swig_varlinkobject *v;
+  swig_globalvar *gv;
+  v= (swig_varlinkobject *) p;
+  gv = (swig_globalvar *) malloc(sizeof(swig_globalvar));
+  gv->name = (char *) malloc(strlen(name)+1);
+  strcpy(gv->name,name);
+  gv->get_attr = get_attr;
+  gv->set_attr = set_attr;
+  gv->next = v->vars;
+  v->vars = gv;
+}
+
+/* Convert a pointer value */
+SWIGRUNTIME(int)
+SWIG_Python_ConvertPtr(PyObject *obj, void **ptr, swig_type_info *ty, int flags) {
+  swig_type_info *tc;
+  char  *c = 0;
+  static PyObject *SWIG_this = 0;
+  int    newref = 0;
+  PyObject  *pyobj = 0;
+
+  if (!obj) return 0;
+  if (obj == Py_None) {
+    *ptr = 0;
+    return 0;
+  }
+#ifdef SWIG_COBJECT_TYPES
+  if (!(PyCObject_Check(obj))) {
+    if (!SWIG_this)
+      SWIG_this = PyString_FromString("this");
+    pyobj = obj;
+    obj = PyObject_GetAttr(obj,SWIG_this);
+    newref = 1;
+    if (!obj) goto type_error;
+    if (!PyCObject_Check(obj)) {
+      Py_DECREF(obj);
+      goto type_error;
+    }
+  }  
+  *ptr = PyCObject_AsVoidPtr(obj);
+  c = (char *) PyCObject_GetDesc(obj);
+  if (newref) Py_DECREF(obj);
+  goto cobject;
+#else
+  if (!(PyString_Check(obj))) {
+    if (!SWIG_this)
+      SWIG_this = PyString_FromString("this");
+    pyobj = obj;
+    obj = PyObject_GetAttr(obj,SWIG_this);
+    newref = 1;
+    if (!obj) goto type_error;
+    if (!PyString_Check(obj)) {
+      Py_DECREF(obj);
+      goto type_error;
+    }
+  } 
+  c = PyString_AS_STRING(obj);
+  /* Pointer values must start with leading underscore */
+  if (*c != '_') {
+    *ptr = (void *) 0;
+    if (strcmp(c,"NULL") == 0) {
+      if (newref) { Py_DECREF(obj); }
+      return 0;
+    } else {
+      if (newref) { Py_DECREF(obj); }
+      goto type_error;
+    }
+  }
+  c++;
+  c = SWIG_UnpackData(c,ptr,sizeof(void *));
+  if (newref) { Py_DECREF(obj); }
+#endif
+
+#ifdef SWIG_COBJECT_TYPES
+cobject:
+#endif
+
+  if (ty) {
+    tc = SWIG_TypeCheck(c,ty);
+    if (!tc) goto type_error;
+    *ptr = SWIG_TypeCast(tc,(void*) *ptr);
+  }
+
+  if ((pyobj) && (flags & SWIG_POINTER_DISOWN)) {
+    PyObject_SetAttrString(pyobj,(char*)"thisown",Py_False);
+  }
+  return 0;
+
+type_error:
+  PyErr_Clear();
+  if (flags & SWIG_POINTER_EXCEPTION) {
+    if (ty && c) {
+      PyErr_Format(PyExc_TypeError, 
+		   "Type error. Got %s, expected %s",
+		   c, ty->name);
+    } else {
+      PyErr_SetString(PyExc_TypeError,"Expected a pointer");
+    }
+  }
+  return -1;
+}
+
+/* Convert a pointer value, signal an exception on a type mismatch */
+SWIGRUNTIME(void *)
+SWIG_Python_MustGetPtr(PyObject *obj, swig_type_info *ty, int argnum, int flags) {
+  void *result;
+  SWIG_Python_ConvertPtr(obj, &result, ty, flags | SWIG_POINTER_EXCEPTION);
+  return result;
+}
+
+/* Convert a packed value value */
+SWIGRUNTIME(int)
+SWIG_Python_ConvertPacked(PyObject *obj, void *ptr, int sz, swig_type_info *ty, int flags) {
+  swig_type_info *tc;
+  char  *c = 0;
+
+  if ((!obj) || (!PyString_Check(obj))) goto type_error;
+  c = PyString_AS_STRING(obj);
+  /* Pointer values must start with leading underscore */
+  if (*c != '_') goto type_error;
+  c++;
+  c = SWIG_UnpackData(c,ptr,sz);
+  if (ty) {
+    tc = SWIG_TypeCheck(c,ty);
+    if (!tc) goto type_error;
+  }
+  return 0;
+
+type_error:
+
+  if (flags) {
+    if (ty && c) {
+      PyErr_Format(PyExc_TypeError, 
+		   "Type error. Got %s, expected %s",
+		   c, ty->name);
+    } else {
+      PyErr_SetString(PyExc_TypeError,"Expected a pointer");
+    }
+  }
+  return -1;
+}
+
+/* Create a new pointer object */
+SWIGRUNTIME(PyObject *)
+SWIG_Python_NewPointerObj(void *ptr, swig_type_info *type, int own) {
+  PyObject *robj;
+  if (!ptr) {
+    Py_INCREF(Py_None);
+    return Py_None;
+  }
+#ifdef SWIG_COBJECT_TYPES
+  robj = PyCObject_FromVoidPtrAndDesc((void *) ptr, (char *) type->name, NULL);
+#else
+  {
+    char result[1024];
+    char *r = result;
+    *(r++) = '_';
+    r = SWIG_PackData(r,&ptr,sizeof(void *));
+    strcpy(r,type->name);
+    robj = PyString_FromString(result);
+  }
+#endif
+  if (!robj || (robj == Py_None)) return robj;
+  if (type->clientdata) {
+    PyObject *inst;
+    PyObject *args = Py_BuildValue((char*)"(O)", robj);
+    Py_DECREF(robj);
+    inst = PyObject_CallObject((PyObject *) type->clientdata, args);
+    Py_DECREF(args);
+    if (inst) {
+      if (own) {
+        PyObject_SetAttrString(inst,(char*)"thisown",Py_True);
+      }
+      robj = inst;
+    }
+  }
+  return robj;
+}
+
+SWIGRUNTIME(PyObject *)
+SWIG_Python_NewPackedObj(void *ptr, int sz, swig_type_info *type) {
+  char result[1024];
+  char *r = result;
+  if ((2*sz + 1 + strlen(type->name)) > 1000) return 0;
+  *(r++) = '_';
+  r = SWIG_PackData(r,ptr,sz);
+  strcpy(r,type->name);
+  return PyString_FromString(result);
+}
+
+/* Install Constants */
+SWIGRUNTIME(void)
+SWIG_Python_InstallConstants(PyObject *d, swig_const_info constants[]) {
+  int i;
+  PyObject *obj;
+  for (i = 0; constants[i].type; i++) {
+    switch(constants[i].type) {
+    case SWIG_PY_INT:
+      obj = PyInt_FromLong(constants[i].lvalue);
+      break;
+    case SWIG_PY_FLOAT:
+      obj = PyFloat_FromDouble(constants[i].dvalue);
+      break;
+    case SWIG_PY_STRING:
+      if (constants[i].pvalue) {
+	obj = PyString_FromString((char *) constants[i].pvalue);
+      } else {
+	Py_INCREF(Py_None);
+	obj = Py_None;
+      }
+      break;
+    case SWIG_PY_POINTER:
+      obj = SWIG_NewPointerObj(constants[i].pvalue, *(constants[i]).ptype,0);
+      break;
+    case SWIG_PY_BINARY:
+      obj = SWIG_NewPackedObj(constants[i].pvalue, constants[i].lvalue, *(constants[i].ptype));
+      break;
+    default:
+      obj = 0;
+      break;
+    }
+    if (obj) {
+      PyDict_SetItemString(d,constants[i].name,obj);
+      Py_DECREF(obj);
+    }
+  }
+}
+
+#endif
+
+/* Contract support */
+
+#define SWIG_contract_assert(expr, msg) if (!(expr)) { PyErr_SetString(PyExc_RuntimeError, (char *) msg ); goto fail; } else
+
+#ifdef __cplusplus
+}
+#endif
+
+
+/* -------- TYPES TABLE (BEGIN) -------- */
+
+#define  SWIGTYPE_p_batch_status swig_types[0] 
+#define  SWIGTYPE_p_resource_t swig_types[1] 
+#define  SWIGTYPE_p_char swig_types[2] 
+#define  SWIGTYPE_p_attropl swig_types[3] 
+#define  SWIGTYPE_p_p_char swig_types[4] 
+#define  SWIGTYPE_p_attrl swig_types[5] 
+#define  SWIGTYPE_p_long swig_types[6] 
+#define  SWIGTYPE_p_int swig_types[7] 
+static swig_type_info *swig_types[9];
+
+/* -------- TYPES TABLE (END) -------- */
+
+
+/*-----------------------------------------------
+              @(target):= _pbs.so
+  ------------------------------------------------*/
+#define SWIG_init    init_pbs
+
+#define SWIG_name    "_pbs"
+
+/* Auxiliar swig  macros that appear in the header */
+
+#define SWIG_OLDOBJ  1
+#define SWIG_NEWOBJ  SWIG_OLDOBJ + 1
+#define SWIG_PYSTR   SWIG_NEWOBJ + 1
+
+#ifdef __cplusplus
+#define SWIGSTATICINLINE(a) static inline a
+#define SWIGSTATIC(a) static a
+#define swig_new_array(size,Type) (new Type[(size)])
+#define swig_delete(cptr) delete cptr
+#define swig_delete_array(cptr) delete[] cptr
+#define swig_const_cast(a,Type) const_cast<Type >(a)
+#define swig_static_cast(a,Type) static_cast<Type >(a)
+#define swig_reinterpret_cast(a,Type) reinterpret_cast<Type >(a)
+#define swig_new_copy(ptr,Type) (new Type(*ptr))
+#define swig_numeric_cast(a,Type) static_cast<Type >(a)
+
+#else /* C case */
+
+#define SWIGSTATICINLINE(a) static a
+#define SWIGSTATIC(a) static a
+#define swig_new_array(size,Type) ((Type*) malloc((size)*sizeof(Type)))
+#define swig_delete(cptr) free((char*)cptr)
+#define swig_delete_array(cptr) free((char*)cptr)
+#define swig_const_cast(a,Type) (Type)(a)
+#define swig_static_cast(a,Type) (Type)(a)
+#define swig_reinterpret_cast(a,Type) (Type)(a)
+#define swig_numeric_cast(a,Type) (Type)(a)
+#define swig_new_copy(ptr,Type)  ((Type*)memcpy(malloc(sizeof(Type)),ptr,sizeof(Type)))
+
+#endif /* __cplusplus */
+
+
+/*@/usr/share/swig1.3/python/pymacros.swg,63,SWIG_define@*/
+#define SWIG_From_signed_SS_char PyInt_FromLong
+/*@@*/
+/*@/usr/share/swig1.3/python/pymacros.swg,63,SWIG_define@*/
+#define SWIG_From_unsigned_SS_char PyInt_FromLong
+/*@@*/
+/*@/usr/share/swig1.3/python/pymacros.swg,63,SWIG_define@*/
+#define SWIG_From_short PyInt_FromLong
+/*@@*/
+/*@/usr/share/swig1.3/python/pymacros.swg,63,SWIG_define@*/
+#define SWIG_From_unsigned_SS_short PyInt_FromLong
+/*@@*/
+/*@/usr/share/swig1.3/python/pymacros.swg,63,SWIG_define@*/
+#define SWIG_From_int PyInt_FromLong
+/*@@*/
+/*@/usr/share/swig1.3/python/pymacros.swg,63,SWIG_define@*/
+#define SWIG_From_long PyInt_FromLong
+/*@@*/
+/*@/usr/share/swig1.3/python/pymacros.swg,63,SWIG_define@*/
+#define SWIG_From_float PyFloat_FromDouble
+/*@@*/
+/*@/usr/share/swig1.3/python/pymacros.swg,63,SWIG_define@*/
+#define SWIG_From_double PyFloat_FromDouble
+/*@@*/
+
+
+
+#include "pbs_ifl.h"
+#include "pbs_error.h"
+#include "rm.h"
+#include "log.h"
+
+#define SARA_DEBUG 0
+
+//extern int pbs_errno;
+
+
+
+int Get_List_Size(PyObject *src)
+{
+  if (PyList_Check(src))
+    return(PyList_Size(src));
+  else {
+
+    /* check if valid NULL pointer */
+    if ( PyString_Check(src) ) {
+      if ( ! strcmp(PyString_AsString(src), "NULL") )
+        return(0);
+    }
+    else
+      return(-1);
+
+  } // end else
+} // end Get_List_Size()
+
+
+
+
+// The default constructor for struct attrl
+//
+struct attrl *new_attrl(int number)
+{
+  struct attrl *ptr;
+  struct attrl *prev, *current;
+  int i;
+
+  /* 
+    allocate memory as a one block is handy for Python scripts 
+    and fill in the next fields so it also works for the C-library
+  */
+  ptr = (struct attrl *) malloc(number * sizeof(struct attrl));
+
+  prev = NULL;
+  current = ptr + (number - 1);
+  for (i=0; i < number; i++)
+  { 
+    // printf("constructor called\n");
+    current->name     = (char *) malloc(MAXNAMLEN * sizeof(char));
+    current->resource = (char *) malloc(MAXNAMLEN * sizeof(char));
+    current->value    = (char *) malloc(MAXNAMLEN * sizeof(char));
+
+    bzero( (void*) current->name, sizeof(current->name));
+    bzero( (void*) current->resource, sizeof(current->resource));
+    bzero( (void*) current->value, sizeof(current->value));
+
+    current->next     = prev;
+    prev = current;
+    current--;
+  }
+  return (struct attrl *)ptr;
+
+} // end new_attrl()
+
+
+// The default constructor for struct attropl
+//
+struct attropl *new_attropl(int number)
+{
+  struct attropl *ptr;
+  struct attropl *prev, *current;
+  int i;
+
+  /* 
+    allocate memory as a one block is handy for Python scripts 
+    and fill in the next fields so it also works for the C-library
+  */
+  ptr = (struct attropl *) malloc(number * sizeof(struct attropl));
+
+  prev = NULL;
+  current = ptr + (number - 1);
+  for (i=0; i < number; i++)
+  { 
+    // printf("constructor called\n");
+    current->name     = (char *) malloc(MAXNAMLEN * sizeof(char));
+    current->resource = (char *) malloc(MAXNAMLEN * sizeof(char));
+    current->value    = (char *) malloc(MAXNAMLEN * sizeof(char));
+
+    bzero( (void*) current->name, sizeof(current->name));
+    bzero( (void*) current->resource, sizeof(current->resource));
+    bzero( (void*) current->value, sizeof(current->value));
+    current->op = 0;
+
+    current->next     = prev;
+    prev = current;
+    current--;
+  }
+  return (struct attropl *)ptr;
+
+} // end new_attropl()
+
+/* Not used only returned */
+struct batch_status *new_batch_status()
+{
+   struct batch_status *ptr;
+
+   ptr = (struct batch_status *) malloc(sizeof(struct batch_status));
+   return (struct batch_status *)ptr;
+} // end new struct batch_status
+
+int get_error()
+{
+   char *errmsg;
+
+   errmsg = pbse_to_txt();
+   if (SARA_DEBUG)
+   {
+      printf("Bas = %d\n", pbs_errno);
+      printf("Bas = %d, text = %s\n", pbs_errno, errmsg);
+   }
+   return (pbs_errno);
+}
+
+
+
+
+#include <limits.h>
+
+
+SWIGSTATICINLINE(int)
+  SWIG_CheckLongInRange(long value, long min_value, long max_value,
+			const char *errmsg)
+{
+  if (value < min_value) {
+    if (errmsg) {
+      PyErr_Format(PyExc_OverflowError, 
+		   "value %ld is less than '%s' minimum %ld", 
+		   value, errmsg, min_value);
+    }
+    return 0;    
+  } else if (value > max_value) {
+    if (errmsg) {
+      PyErr_Format(PyExc_OverflowError,
+		   "value %ld is greater than '%s' maximum %ld", 
+		   value, errmsg, max_value);
+    }
+    return 0;
+  }
+  return 1;
+}
+
+
+SWIGSTATICINLINE(int)
+  SWIG_AsVal_long(PyObject * obj, long* val)
+{
+  if (PyInt_Check(obj)) {
+    if (val) *val = PyInt_AS_LONG(obj);
+    return 1;
+  }
+  if (PyLong_Check(obj)) {
+    long v = PyLong_AsLong(obj);
+    if (!PyErr_Occurred()) {
+      if (val) *val = v;
+      return 1;
+    } else {
+      if (!val) PyErr_Clear();
+      return 0;
+    }
+  }
+  if (val) {
+    PyErr_SetString(PyExc_TypeError, "a long is expected");
+  }
+  return 0;
+ }
+
+
+#if INT_MAX != LONG_MAX
+SWIGSTATICINLINE(int)
+  SWIG_AsVal_int(PyObject *obj, int *val)
+{ 
+  const char* errmsg = val ? "int" : 0;
+  long v;
+  if (SWIG_AsVal_long(obj, &v)) {
+    if (SWIG_CheckLongInRange(v, INT_MIN,INT_MAX, errmsg)) {
+      if (val) *val = swig_numeric_cast(v, int);
+      return 1;
+    } else {
+      return 0;
+    }
+  } else {
+    PyErr_Clear();
+  }
+  if (val) {
+    PyErr_SetString(PyExc_TypeError, "an int is expected");
+  }
+  return 0;    
+}
+#else
+SWIGSTATICINLINE(int)
+  SWIG_AsVal_int(PyObject *obj, int *val)
+{
+  return SWIG_AsVal_long(obj,(long*)val);
+}
+#endif
+
+
+SWIGSTATICINLINE(int)
+SWIG_As_int(PyObject* obj)
+{
+  int v;
+  if (!SWIG_AsVal_int(obj, &v)) {
+    /*
+      this is needed to make valgrind/purify happier.  the other
+      solution is throw an exception, but since this code should work
+      with plain C ....
+     */
+    memset((void*)&v, 0, sizeof(int));
+  }
+  return v;
+}
+
+  
+SWIGSTATICINLINE(int)
+SWIG_Check_int(PyObject* obj)
+{
+  return SWIG_AsVal_int(obj, (int*)0);
+}
+
+
+SWIGSTATICINLINE(PyObject *)
+SWIG_FromCharPtr(const char* cptr)
+{ 
+  if (cptr) {
+    size_t size = strlen(cptr);
+    if (size > INT_MAX) {
+      return SWIG_NewPointerObj(swig_const_cast(cptr,char*), 
+				SWIG_TypeQuery("char *"), 0);
+    } else {
+      if (size != 0) {
+	return PyString_FromStringAndSize(cptr, size);
+      } else {
+	return PyString_FromString(cptr);
+      }
+    }
+  }
+  Py_INCREF(Py_None);
+  return Py_None;
+}
+
+
+/* returns SWIG_OLDOBJ if the input is a raw char*, SWIG_PYSTR if is a PyString */
+SWIGSTATIC(int)
+SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize)
+{
+  static swig_type_info* pchar_info = 0;
+  char* vptr = 0;
+  if (!pchar_info) pchar_info = SWIG_TypeQuery("char *");
+  if (SWIG_ConvertPtr(obj, (void**)&vptr, pchar_info, 0) != -1) {
+    if (cptr) *cptr = vptr;
+    if (psize) *psize = vptr ? (strlen(vptr) + 1) : 0;
+    return SWIG_OLDOBJ;
+  } else {
+    if (PyString_Check(obj)) {
+      if (cptr) {
+	*cptr = PyString_AS_STRING(obj);
+	if (psize) {
+	  *psize = PyString_GET_SIZE(obj) + 1;
+	}
+      }
+      return SWIG_PYSTR;
+    }
+  }
+  if (cptr) {
+    PyErr_SetString(PyExc_TypeError, "a string is expected");
+  }
+  return 0;
+}
+
+
+SWIGSTATICINLINE(int)
+SWIG_AsCharPtr(PyObject *obj, char **val)
+{
+  char* cptr = 0;
+  if (SWIG_AsCharPtrAndSize(obj, &cptr, (size_t*)(0))) {
+    if (val) *val = cptr;
+    return 1;
+  }
+  if (val) {
+    PyErr_SetString(PyExc_TypeError, "a char* is expected");
+  }
+  return 0;
+}
+
+char *attrl___str__(struct attrl *self){
+    static char temp[4 * 255] ;
+    snprintf(temp, sizeof(temp), "(%s,%s,%s)", 
+      self->name, self->resource, self->value);
+    
+    return &temp[0];
+  }
+char *attropl___str__(struct attropl *self){
+    static char temp[4 * 255] ;
+    snprintf(temp, sizeof(temp), "(%s,%s,%s)", 
+      self->name, self->resource, self->value);
+    
+    return &temp[0];
+  }
+extern int pbs_errno;
+extern char *pbs_server;
+
+SWIGSTATIC(int)
+SWIG_AsNewCharPtr(PyObject *obj, char **val)
+{
+  char* cptr = 0; size_t csize = 0;
+  int res = SWIG_AsCharPtrAndSize(obj, &cptr, &csize);
+  if (res) {
+    if (val) {
+      if (csize) {
+	*val = swig_new_array(csize, char);
+	memcpy(*val, cptr, --csize);
+	(*val)[csize] = 0;
+      } else if (cptr) {
+	*val = swig_new_array(1, char);
+	(*val)[0] = 0;
+      } else {
+	*val = 0;
+      }
+    }
+    return SWIG_NEWOBJ;
+  } 
+  if (val) {
+    PyErr_SetString(PyExc_TypeError, "a char* is expected");
+  }
+  return 0;
+}
+
+extern char avail(int,char *);
+
+SWIGSTATICINLINE(PyObject*)
+  SWIG_From_char(char c) 
+{ 
+  return PyString_FromStringAndSize(&c,1);
+}
+
+extern int pbs_asyrunjob(int,char *,char *,char *);
+extern int pbs_alterjob(int,char *,struct attrl *,char *);
+extern int pbs_connect(char *);
+extern int pbs_query_max_connections();
+extern char *pbs_default(void);
+extern int pbs_deljob(int,char *,char *);
+extern int pbs_disconnect(int);
+extern char *pbs_geterrmsg(int);
+extern int pbs_holdjob(int,char *,char *,char *);
+extern char *pbs_locjob(int,char *,char *);
+extern int pbs_manager(int,int,int,char *,struct attropl *,char *);
+extern int pbs_movejob(int,char *,char *,char *);
+extern int pbs_msgjob(int,char *,int,char *,char *);
+extern int pbs_orderjob(int,char *,char *,char *);
+extern int pbs_rescquery(int,char **,int,int *,int *,int *,int *);
+extern int pbs_rescreserve(int,char **,int,resource_t *);
+extern int pbs_rescrelease(int,resource_t);
+extern int pbs_rerunjob(int,char *,char *);
+extern int pbs_rlsjob(int,char *,char *,char *);
+extern int pbs_runjob(int,char *,char *,char *);
+extern char **pbs_selectjob(int,struct attropl *,char *);
+extern int pbs_sigjob(int,char *,char *,char *);
+extern void pbs_statfree(struct batch_status *);
+extern struct batch_status *pbs_statjob(int,char *,struct attrl *,char *);
+extern struct batch_status *pbs_selstat(int,struct attropl *,char *);
+extern struct batch_status *pbs_statque(int,char *,struct attrl *,char *);
+extern struct batch_status *pbs_statserver(int,struct attrl *,char *);
+extern struct batch_status *pbs_statnode(int,char *,struct attrl *,char *);
+extern char *pbs_submit(int,struct attropl *,char *,char *,char *);
+extern int pbs_terminate(int,int,char *);
+extern int totpool(int,int);
+extern int usepool(int,int);
+
+SWIGSTATICINLINE(int)
+  SWIG_CheckUnsignedLongInRange(unsigned long value,
+				unsigned long max_value,
+				const char *errmsg) 
+{
+  if (value > max_value) {
+    if (errmsg) {
+      PyErr_Format(PyExc_OverflowError,
+		   "value %ld is greater than '%s' minimum %ld",
+		   value, errmsg, max_value);
+    }
+    return 0;
+  }
+  return 1;
+ }
+
+
+SWIGSTATICINLINE(int)
+  SWIG_AsVal_unsigned_SS_long(PyObject * obj, unsigned long *val) 
+{
+  if (PyInt_Check(obj)) {
+    long v = PyInt_AS_LONG(obj);
+    if (v >= 0) {
+      if (val) *val = v;
+      return 1;
+    }   
+  }
+  if (PyLong_Check(obj)) {
+    unsigned long v = PyLong_AsUnsignedLong(obj);
+    if (!PyErr_Occurred()) {
+      if (val) *val = v;
+      return 1;
+    } else {
+      if (!val) PyErr_Clear();
+      return 0;
+    }
+  } 
+  if (val) {
+    PyErr_SetString(PyExc_TypeError, "an unsigned long is expected");
+  }
+  return 0;
+}
+
+
+#if UINT_MAX != ULONG_MAX
+SWIGSTATICINLINE(int)
+  SWIG_AsVal_unsigned_SS_int(PyObject *obj, unsigned int *val)
+{ 
+  const char* errmsg = val ? "unsigned int" : 0;
+  unsigned long v;
+  if (SWIG_AsVal_unsigned_SS_long(obj, &v)) {
+    if (SWIG_CheckUnsignedLongInRange(v, INT_MAX, errmsg)) {
+      if (val) *val = swig_numeric_cast(v, unsigned int);
+      return 1;
+    }
+  } else {
+    PyErr_Clear();
+  }
+  if (val) {
+    PyErr_SetString(PyExc_TypeError, "an unsigned int is expected");
+  }
+  return 0;    
+}
+#else
+SWIGSTATICINLINE(unsigned int)
+  SWIG_AsVal_unsigned_SS_int(PyObject *obj, unsigned int *val)
+{
+  return SWIG_AsVal_unsigned_SS_long(obj,(unsigned long *)val);
+}
+#endif
+
+
+SWIGSTATICINLINE(unsigned int)
+SWIG_As_unsigned_SS_int(PyObject* obj)
+{
+  unsigned int v;
+  if (!SWIG_AsVal_unsigned_SS_int(obj, &v)) {
+    /*
+      this is needed to make valgrind/purify happier.  the other
+      solution is throw an exception, but since this code should work
+      with plain C ....
+     */
+    memset((void*)&v, 0, sizeof(unsigned int));
+  }
+  return v;
+}
+
+  
+SWIGSTATICINLINE(int)
+SWIG_Check_unsigned_SS_int(PyObject* obj)
+{
+  return SWIG_AsVal_unsigned_SS_int(obj, (unsigned int*)0);
+}
+
+extern long *log_event_mask;
+extern void log_close(int);
+extern void log_err(int,char *,char *);
+extern void log_event(int,int,char *,char *);
+extern int log_open(char *,char *);
+extern void log_record(int,int,char *,char *);
+extern char log_buffer[4096];
+
+SWIGSTATIC(int)
+SWIG_AsCharArray(PyObject *obj, char *val, size_t size)
+{ 
+  char* cptr; size_t csize;  
+  if (SWIG_AsCharPtrAndSize(obj, &cptr, &csize)) {
+    /* in C you can do:        
+
+         char x[5] = "hello"; 
+
+        ie, assing the array using an extra '0' char.
+    */
+    if ((csize == size + 1) && !(cptr[csize-1])) --csize;
+    if (csize <= size) {
+      if (val) {
+	if (csize) memcpy(val, cptr, csize);
+	if (csize < size) memset(val + csize, 0, size - csize);
+      }
+      return 1;
+    }
+  }
+  if (val) {
+    PyErr_Format(PyExc_TypeError, 
+		 "a char array of maximum size %ld is expected", 
+		 size);
+  }
+  return 0;
+}
+
+
+SWIGSTATICINLINE(PyObject *)
+SWIG_FromCharArray(const char* carray, size_t size)
+{
+  if (size > INT_MAX) {
+    SWIG_NewPointerObj(swig_const_cast(carray,char*), SWIG_TypeQuery("char *"), 0);
+    return Py_None;    
+  } else {
+    return PyString_FromStringAndSize(carray, swig_numeric_cast(size,int));
+  }
+}
+
+extern int setup_env(char *);
+extern int chk_file_sec(char *,int,int,int,int);
+#ifdef __cplusplus
+extern "C" {
+#endif
+static PyObject *_wrap_new_attrl(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    struct attrl *result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:new_attrl",&obj0)) goto fail;
+    arg1 = (int)SWIG_As_int(obj0); 
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (struct attrl *)new_attrl(arg1);
+    
+    {
+        PyObject	*obj_batch;
+        struct attrl	*ptr;
+        int		i=0, len=0;
+        
+        if (SARA_DEBUG) printf("Converteren c (struct attrl *) -> python:\n");
+        
+        ptr = result;
+        while (ptr != NULL) {
+            len++;
+            ptr = ptr->next;
+        }
+        resultobj = PyList_New(len);
+        
+        if (SARA_DEBUG) printf("\tSize of List: %d\n", len);
+        
+        if (SARA_DEBUG) printf("\t<Contents>\n");
+        ptr = result;
+        for (i=0; i < len; i++) {
+            obj_batch = SWIG_NewPointerObj((void *)ptr, SWIGTYPE_p_attrl,1); 
+            PyList_SetItem(resultobj, i, obj_batch);  	
+            if (SARA_DEBUG) printf("\t\t- %s\n", ptr->name);
+            ptr = ptr->next;
+        }
+        if (SARA_DEBUG) printf("\t</Contents>\n");
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_new_attropl(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    struct attropl *result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:new_attropl",&obj0)) goto fail;
+    arg1 = (int)SWIG_As_int(obj0); 
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (struct attropl *)new_attropl(arg1);
+    
+    {
+        PyObject		*obj_batch;
+        struct attropl	*ptr;
+        int			i=0, len=0;
+        
+        if (SARA_DEBUG) printf("Converteren c (struct attropl *) -> python:\n");
+        
+        ptr = result;
+        while (ptr != NULL) {
+            len++;
+            ptr = ptr->next;
+        }
+        resultobj = PyList_New(len);
+        if (SARA_DEBUG) printf("\tSize of List: %d\n", len);
+        
+        if (SARA_DEBUG) printf("\t<Contents>\n");
+        ptr = result;
+        for (i=0; i < len; i++) {
+            obj_batch = SWIG_NewPointerObj((void *)ptr, SWIGTYPE_p_attropl,1); 
+            PyList_SetItem(resultobj, i, obj_batch);  	
+            ptr = ptr->next;
+        }
+        if (SARA_DEBUG) printf("\t</Contents>\n");
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_new_batch_status(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct batch_status *result;
+    
+    if(!PyArg_ParseTuple(args,(char *)":new_batch_status")) goto fail;
+    result = (struct batch_status *)new_batch_status();
+    
+    {
+        PyObject *obj_batch;
+        struct batch_status *ptr;
+        int i=0, len=0;
+        
+        // printf("Ja we are in bussniss\n");
+        if (SARA_DEBUG) printf("Converteren c (struct batch_status *) -> python:\n");
+        
+        // Deterime length of list
+        //
+        ptr = result;
+        while (ptr != NULL) {
+            len++;
+            ptr = ptr->next;
+        }
+        resultobj = PyList_New(len);
+        
+        if (SARA_DEBUG) printf("\tSize of List: %d\n", len);
+        
+        // Make a list of batch_status pointers
+        //
+        if (SARA_DEBUG) printf("\t<Contents>\n");
+        ptr = result;
+        for (i=0; i < len; i++) {
+            obj_batch = SWIG_NewPointerObj((void *)ptr, SWIGTYPE_p_batch_status,0); 
+            PyList_SetItem(resultobj, i, obj_batch);  	
+            if (SARA_DEBUG)  {
+                printf("\t\t- %s\n", ptr->name);
+            }
+            ptr = ptr->next;
+        }
+        if (SARA_DEBUG) printf("\t</Contents>\n");
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_get_error(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int result;
+    
+    if(!PyArg_ParseTuple(args,(char *)":get_error")) goto fail;
+    result = (int)get_error();
+    
+    resultobj = SWIG_From_int((int)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_attrl_name_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct attrl *arg1 = (struct attrl *) 0 ;
+    char *arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:attrl_name_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **)(&arg1),SWIGTYPE_p_attrl,
+    SWIG_POINTER_EXCEPTION | 0)) == -1) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj1, (char**)&arg2)) SWIG_fail;
+    {
+        if (arg1->name) free((char*)arg1->name);
+        if (arg2) {
+            arg1->name = (char *) malloc(strlen(arg2)+1);
+            strcpy((char*)arg1->name,arg2);
+        } else {
+            arg1->name = 0;
+        }
+    }
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_attrl_name_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct attrl *arg1 = (struct attrl *) 0 ;
+    char *result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:attrl_name_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **)(&arg1),SWIGTYPE_p_attrl,
+    SWIG_POINTER_EXCEPTION | 0)) == -1) SWIG_fail;
+    result = (char *) ((arg1)->name);
+    
+    resultobj = SWIG_FromCharPtr(result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_attrl_resource_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct attrl *arg1 = (struct attrl *) 0 ;
+    char *arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:attrl_resource_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **)(&arg1),SWIGTYPE_p_attrl,
+    SWIG_POINTER_EXCEPTION | 0)) == -1) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj1, (char**)&arg2)) SWIG_fail;
+    {
+        if (arg1->resource) free((char*)arg1->resource);
+        if (arg2) {
+            arg1->resource = (char *) malloc(strlen(arg2)+1);
+            strcpy((char*)arg1->resource,arg2);
+        } else {
+            arg1->resource = 0;
+        }
+    }
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_attrl_resource_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct attrl *arg1 = (struct attrl *) 0 ;
+    char *result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:attrl_resource_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **)(&arg1),SWIGTYPE_p_attrl,
+    SWIG_POINTER_EXCEPTION | 0)) == -1) SWIG_fail;
+    result = (char *) ((arg1)->resource);
+    
+    resultobj = SWIG_FromCharPtr(result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_attrl_value_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct attrl *arg1 = (struct attrl *) 0 ;
+    char *arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:attrl_value_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **)(&arg1),SWIGTYPE_p_attrl,
+    SWIG_POINTER_EXCEPTION | 0)) == -1) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj1, (char**)&arg2)) SWIG_fail;
+    {
+        if (arg1->value) free((char*)arg1->value);
+        if (arg2) {
+            arg1->value = (char *) malloc(strlen(arg2)+1);
+            strcpy((char*)arg1->value,arg2);
+        } else {
+            arg1->value = 0;
+        }
+    }
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_attrl_value_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct attrl *arg1 = (struct attrl *) 0 ;
+    char *result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:attrl_value_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **)(&arg1),SWIGTYPE_p_attrl,
+    SWIG_POINTER_EXCEPTION | 0)) == -1) SWIG_fail;
+    result = (char *) ((arg1)->value);
+    
+    resultobj = SWIG_FromCharPtr(result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_attrl_op_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct attrl *arg1 = (struct attrl *) 0 ;
+    int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:attrl_op_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **)(&arg1),SWIGTYPE_p_attrl,
+    SWIG_POINTER_EXCEPTION | 0)) == -1) SWIG_fail;
+    arg2 = (int)SWIG_As_int(obj1); 
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->op = (enum batch_op)arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_attrl_op_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct attrl *arg1 = (struct attrl *) 0 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:attrl_op_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **)(&arg1),SWIGTYPE_p_attrl,
+    SWIG_POINTER_EXCEPTION | 0)) == -1) SWIG_fail;
+    result = (int) ((arg1)->op);
+    
+    resultobj = SWIG_From_int((int)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_attrl___str__(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct attrl *arg1 = (struct attrl *) 0 ;
+    char *result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:attrl___str__",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **)(&arg1),SWIGTYPE_p_attrl,
+    SWIG_POINTER_EXCEPTION | 0)) == -1) SWIG_fail;
+    result = (char *)attrl___str__(arg1);
+    
+    resultobj = SWIG_FromCharPtr(result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject * attrl_swigregister(PyObject *self, PyObject *args) {
+    PyObject *obj;
+    if (!PyArg_ParseTuple(args,(char*)"O", &obj)) return NULL;
+    SWIG_TypeClientData(SWIGTYPE_p_attrl, obj);
+    Py_INCREF(obj);
+    return Py_BuildValue((char *)"");
+}
+static PyObject *_wrap_attropl_name_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct attropl *arg1 = (struct attropl *) 0 ;
+    char *arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:attropl_name_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **)(&arg1),SWIGTYPE_p_attropl,
+    SWIG_POINTER_EXCEPTION | 0)) == -1) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj1, (char**)&arg2)) SWIG_fail;
+    {
+        if (arg1->name) free((char*)arg1->name);
+        if (arg2) {
+            arg1->name = (char *) malloc(strlen(arg2)+1);
+            strcpy((char*)arg1->name,arg2);
+        } else {
+            arg1->name = 0;
+        }
+    }
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_attropl_name_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct attropl *arg1 = (struct attropl *) 0 ;
+    char *result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:attropl_name_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **)(&arg1),SWIGTYPE_p_attropl,
+    SWIG_POINTER_EXCEPTION | 0)) == -1) SWIG_fail;
+    result = (char *) ((arg1)->name);
+    
+    resultobj = SWIG_FromCharPtr(result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_attropl_resource_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct attropl *arg1 = (struct attropl *) 0 ;
+    char *arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:attropl_resource_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **)(&arg1),SWIGTYPE_p_attropl,
+    SWIG_POINTER_EXCEPTION | 0)) == -1) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj1, (char**)&arg2)) SWIG_fail;
+    {
+        if (arg1->resource) free((char*)arg1->resource);
+        if (arg2) {
+            arg1->resource = (char *) malloc(strlen(arg2)+1);
+            strcpy((char*)arg1->resource,arg2);
+        } else {
+            arg1->resource = 0;
+        }
+    }
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_attropl_resource_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct attropl *arg1 = (struct attropl *) 0 ;
+    char *result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:attropl_resource_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **)(&arg1),SWIGTYPE_p_attropl,
+    SWIG_POINTER_EXCEPTION | 0)) == -1) SWIG_fail;
+    result = (char *) ((arg1)->resource);
+    
+    resultobj = SWIG_FromCharPtr(result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_attropl_value_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct attropl *arg1 = (struct attropl *) 0 ;
+    char *arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:attropl_value_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **)(&arg1),SWIGTYPE_p_attropl,
+    SWIG_POINTER_EXCEPTION | 0)) == -1) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj1, (char**)&arg2)) SWIG_fail;
+    {
+        if (arg1->value) free((char*)arg1->value);
+        if (arg2) {
+            arg1->value = (char *) malloc(strlen(arg2)+1);
+            strcpy((char*)arg1->value,arg2);
+        } else {
+            arg1->value = 0;
+        }
+    }
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_attropl_value_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct attropl *arg1 = (struct attropl *) 0 ;
+    char *result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:attropl_value_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **)(&arg1),SWIGTYPE_p_attropl,
+    SWIG_POINTER_EXCEPTION | 0)) == -1) SWIG_fail;
+    result = (char *) ((arg1)->value);
+    
+    resultobj = SWIG_FromCharPtr(result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_attropl_op_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct attropl *arg1 = (struct attropl *) 0 ;
+    int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:attropl_op_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **)(&arg1),SWIGTYPE_p_attropl,
+    SWIG_POINTER_EXCEPTION | 0)) == -1) SWIG_fail;
+    arg2 = (int)SWIG_As_int(obj1); 
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->op = (enum batch_op)arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_attropl_op_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct attropl *arg1 = (struct attropl *) 0 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:attropl_op_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **)(&arg1),SWIGTYPE_p_attropl,
+    SWIG_POINTER_EXCEPTION | 0)) == -1) SWIG_fail;
+    result = (int) ((arg1)->op);
+    
+    resultobj = SWIG_From_int((int)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_attropl___str__(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct attropl *arg1 = (struct attropl *) 0 ;
+    char *result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:attropl___str__",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **)(&arg1),SWIGTYPE_p_attropl,
+    SWIG_POINTER_EXCEPTION | 0)) == -1) SWIG_fail;
+    result = (char *)attropl___str__(arg1);
+    
+    resultobj = SWIG_FromCharPtr(result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject * attropl_swigregister(PyObject *self, PyObject *args) {
+    PyObject *obj;
+    if (!PyArg_ParseTuple(args,(char*)"O", &obj)) return NULL;
+    SWIG_TypeClientData(SWIGTYPE_p_attropl, obj);
+    Py_INCREF(obj);
+    return Py_BuildValue((char *)"");
+}
+static PyObject *_wrap_batch_status_name_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct batch_status *arg1 = (struct batch_status *) 0 ;
+    char *arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:batch_status_name_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **)(&arg1),SWIGTYPE_p_batch_status,
+    SWIG_POINTER_EXCEPTION | 0)) == -1) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj1, (char**)&arg2)) SWIG_fail;
+    {
+        if (arg1->name) free((char*)arg1->name);
+        if (arg2) {
+            arg1->name = (char *) malloc(strlen(arg2)+1);
+            strcpy((char*)arg1->name,arg2);
+        } else {
+            arg1->name = 0;
+        }
+    }
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_batch_status_name_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct batch_status *arg1 = (struct batch_status *) 0 ;
+    char *result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:batch_status_name_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **)(&arg1),SWIGTYPE_p_batch_status,
+    SWIG_POINTER_EXCEPTION | 0)) == -1) SWIG_fail;
+    result = (char *) ((arg1)->name);
+    
+    resultobj = SWIG_FromCharPtr(result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_batch_status_attribs_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct batch_status *arg1 = (struct batch_status *) 0 ;
+    struct attrl *arg2 = (struct attrl *) 0 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:batch_status_attribs_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **)(&arg1),SWIGTYPE_p_batch_status,
+    SWIG_POINTER_EXCEPTION | 0)) == -1) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj1,(void **)(&arg2),SWIGTYPE_p_attrl,
+    SWIG_POINTER_EXCEPTION | SWIG_POINTER_DISOWN)) == -1) SWIG_fail;
+    if (arg1) (arg1)->attribs = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_batch_status_attribs_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct batch_status *arg1 = (struct batch_status *) 0 ;
+    struct attrl *result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:batch_status_attribs_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **)(&arg1),SWIGTYPE_p_batch_status,
+    SWIG_POINTER_EXCEPTION | 0)) == -1) SWIG_fail;
+    result = (struct attrl *) ((arg1)->attribs);
+    
+    {
+        PyObject	*obj_batch;
+        struct attrl	*ptr;
+        int		i=0, len=0;
+        
+        if (SARA_DEBUG) printf("Converteren c (struct attrl *) -> python:\n");
+        
+        ptr = result;
+        while (ptr != NULL) {
+            len++;
+            ptr = ptr->next;
+        }
+        resultobj = PyList_New(len);
+        
+        if (SARA_DEBUG) printf("\tSize of List: %d\n", len);
+        
+        if (SARA_DEBUG) printf("\t<Contents>\n");
+        ptr = result;
+        for (i=0; i < len; i++) {
+            obj_batch = SWIG_NewPointerObj((void *)ptr, SWIGTYPE_p_attrl,1); 
+            PyList_SetItem(resultobj, i, obj_batch);  	
+            if (SARA_DEBUG) printf("\t\t- %s\n", ptr->name);
+            ptr = ptr->next;
+        }
+        if (SARA_DEBUG) printf("\t</Contents>\n");
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_batch_status_text_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct batch_status *arg1 = (struct batch_status *) 0 ;
+    char *arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:batch_status_text_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **)(&arg1),SWIGTYPE_p_batch_status,
+    SWIG_POINTER_EXCEPTION | 0)) == -1) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj1, (char**)&arg2)) SWIG_fail;
+    {
+        if (arg1->text) free((char*)arg1->text);
+        if (arg2) {
+            arg1->text = (char *) malloc(strlen(arg2)+1);
+            strcpy((char*)arg1->text,arg2);
+        } else {
+            arg1->text = 0;
+        }
+    }
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_batch_status_text_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct batch_status *arg1 = (struct batch_status *) 0 ;
+    char *result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:batch_status_text_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **)(&arg1),SWIGTYPE_p_batch_status,
+    SWIG_POINTER_EXCEPTION | 0)) == -1) SWIG_fail;
+    result = (char *) ((arg1)->text);
+    
+    resultobj = SWIG_FromCharPtr(result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject * batch_status_swigregister(PyObject *self, PyObject *args) {
+    PyObject *obj;
+    if (!PyArg_ParseTuple(args,(char*)"O", &obj)) return NULL;
+    SWIG_TypeClientData(SWIGTYPE_p_batch_status, obj);
+    Py_INCREF(obj);
+    return Py_BuildValue((char *)"");
+}
+static int _wrap_pbs_errno_set(PyObject *_val) {
+    {
+        int temp = (int) SWIG_As_int(_val);  
+        if (PyErr_Occurred()) {
+            PyErr_SetString(PyExc_TypeError, "C/C++ variable 'pbs_errno (int)'");
+            return 1;
+        }
+        pbs_errno = temp;
+    }
+    return 0;
+}
+
+
+static PyObject *_wrap_pbs_errno_get() {
+    PyObject *pyobj;
+    
+    pyobj = SWIG_From_int((int)pbs_errno);
+    return pyobj;
+}
+
+
+static int _wrap_pbs_server_set(PyObject *_val) {
+    {
+        char *cptr = 0;
+        if (!SWIG_AsNewCharPtr(_val, &cptr)) {
+            PyErr_Clear();
+            PyErr_SetString(PyExc_TypeError, "C/C++ variable 'pbs_server (char *)'");
+            return 1;
+        }
+        if (pbs_server) swig_delete_array(pbs_server);
+        pbs_server = cptr;
+    }
+    return 0;
+}
+
+
+static PyObject *_wrap_pbs_server_get() {
+    PyObject *pyobj;
+    
+    pyobj = SWIG_FromCharPtr(pbs_server);
+    return pyobj;
+}
+
+
+static PyObject *_wrap_avail(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    char *arg2 ;
+    char result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:avail",&obj0,&obj1)) goto fail;
+    arg1 = (int)SWIG_As_int(obj0); 
+    if (PyErr_Occurred()) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj1, (char**)&arg2)) SWIG_fail;
+    result = (char)avail(arg1,arg2);
+    
+    resultobj = SWIG_From_char((char)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_pbs_asyrunjob(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    char *arg2 ;
+    char *arg3 ;
+    char *arg4 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj3 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOOO:pbs_asyrunjob",&obj0,&obj1,&obj2,&obj3)) goto fail;
+    arg1 = (int)SWIG_As_int(obj0); 
+    if (PyErr_Occurred()) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj1, (char**)&arg2)) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj2, (char**)&arg3)) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj3, (char**)&arg4)) SWIG_fail;
+    result = (int)pbs_asyrunjob(arg1,arg2,arg3,arg4);
+    
+    resultobj = SWIG_From_int((int)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_pbs_alterjob(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    char *arg2 ;
+    struct attrl *arg3 = (struct attrl *) 0 ;
+    char *arg4 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj3 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOOO:pbs_alterjob",&obj0,&obj1,&obj2,&obj3)) goto fail;
+    arg1 = (int)SWIG_As_int(obj0); 
+    if (PyErr_Occurred()) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj1, (char**)&arg2)) SWIG_fail;
+    {
+        PyObject	*py_obj;
+        struct attrl	*ptr, *prev;
+        char 		s[255];
+        int		i=0, size=0;
+        
+        // printf("Python --> C\n");
+        
+        if (SARA_DEBUG) printf("Converteren python -> c (struct attrl *):\n");
+        
+        size = Get_List_Size(obj2);
+        if (SARA_DEBUG) printf("\tSize of List: %d\n", size);
+        
+        if ( size == -1 ) {
+            PyErr_SetString(PyExc_TypeError, "not a list");
+            return NULL; 
+        }
+        
+        if (SARA_DEBUG) printf("\t<Contents>\n");
+        
+        arg3 = prev = NULL;
+        for ( i=0; i < size; i++ ) {
+            py_obj = PyList_GetItem(obj2, i);
+            if (SWIG_ConvertPtr(py_obj, (void **) &ptr, SWIGTYPE_p_attrl, 1)) {
+                sprintf(s,"list item %d has wrong type", i);
+                PyErr_SetString(PyExc_TypeError, s);
+                return NULL;
+                
+                // This will skipp the wrong entry
+                // continue;
+            }
+            
+            /* 
+                 * Make first entry head of C linked list
+                */ 
+            if ( i == 0) {
+                arg3 = ptr;
+                ptr->next = prev;
+            }
+            else {
+                prev->next = ptr;
+                ptr->next = NULL;
+            }
+            if (SARA_DEBUG) printf("\t\t- %s\n", ptr->name);
+            
+            prev = ptr;
+            
+        } // end for
+        if (SARA_DEBUG) printf("\t</Contents>\n");
+    }
+    if (!SWIG_AsCharPtr(obj3, (char**)&arg4)) SWIG_fail;
+    result = (int)pbs_alterjob(arg1,arg2,arg3,arg4);
+    
+    resultobj = SWIG_From_int((int)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_pbs_connect(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    char *arg1 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:pbs_connect",&obj0)) goto fail;
+    if (!SWIG_AsCharPtr(obj0, (char**)&arg1)) SWIG_fail;
+    result = (int)pbs_connect(arg1);
+    
+    resultobj = SWIG_From_int((int)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_pbs_query_max_connections(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int result;
+    
+    if(!PyArg_ParseTuple(args,(char *)":pbs_query_max_connections")) goto fail;
+    result = (int)pbs_query_max_connections();
+    
+    resultobj = SWIG_From_int((int)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_pbs_default(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    char *result;
+    
+    if(!PyArg_ParseTuple(args,(char *)":pbs_default")) goto fail;
+    result = (char *)pbs_default();
+    
+    resultobj = SWIG_FromCharPtr(result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_pbs_deljob(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    char *arg2 ;
+    char *arg3 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOO:pbs_deljob",&obj0,&obj1,&obj2)) goto fail;
+    arg1 = (int)SWIG_As_int(obj0); 
+    if (PyErr_Occurred()) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj1, (char**)&arg2)) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj2, (char**)&arg3)) SWIG_fail;
+    result = (int)pbs_deljob(arg1,arg2,arg3);
+    
+    resultobj = SWIG_From_int((int)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_pbs_disconnect(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:pbs_disconnect",&obj0)) goto fail;
+    arg1 = (int)SWIG_As_int(obj0); 
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (int)pbs_disconnect(arg1);
+    
+    resultobj = SWIG_From_int((int)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_pbs_geterrmsg(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    char *result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:pbs_geterrmsg",&obj0)) goto fail;
+    arg1 = (int)SWIG_As_int(obj0); 
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (char *)pbs_geterrmsg(arg1);
+    
+    resultobj = SWIG_FromCharPtr(result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_pbs_holdjob(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    char *arg2 ;
+    char *arg3 ;
+    char *arg4 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj3 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOOO:pbs_holdjob",&obj0,&obj1,&obj2,&obj3)) goto fail;
+    arg1 = (int)SWIG_As_int(obj0); 
+    if (PyErr_Occurred()) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj1, (char**)&arg2)) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj2, (char**)&arg3)) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj3, (char**)&arg4)) SWIG_fail;
+    result = (int)pbs_holdjob(arg1,arg2,arg3,arg4);
+    
+    resultobj = SWIG_From_int((int)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_pbs_locjob(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    char *arg2 ;
+    char *arg3 ;
+    char *result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOO:pbs_locjob",&obj0,&obj1,&obj2)) goto fail;
+    arg1 = (int)SWIG_As_int(obj0); 
+    if (PyErr_Occurred()) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj1, (char**)&arg2)) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj2, (char**)&arg3)) SWIG_fail;
+    result = (char *)pbs_locjob(arg1,arg2,arg3);
+    
+    resultobj = SWIG_FromCharPtr(result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_pbs_manager(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    int arg2 ;
+    int arg3 ;
+    char *arg4 ;
+    struct attropl *arg5 = (struct attropl *) 0 ;
+    char *arg6 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj3 = 0 ;
+    PyObject * obj4 = 0 ;
+    PyObject * obj5 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOOOOO:pbs_manager",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5)) goto fail;
+    arg1 = (int)SWIG_As_int(obj0); 
+    if (PyErr_Occurred()) SWIG_fail;
+    arg2 = (int)SWIG_As_int(obj1); 
+    if (PyErr_Occurred()) SWIG_fail;
+    arg3 = (int)SWIG_As_int(obj2); 
+    if (PyErr_Occurred()) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj3, (char**)&arg4)) SWIG_fail;
+    {
+        PyObject		*py_obj;
+        struct attropl	*ptr, *prev;
+        char 			s[255];
+        int			i=0, size=0;
+        
+        // printf("Python --> C\n");
+        
+        if (SARA_DEBUG) printf("Converteren python -> c (struct attropl *):\n");
+        
+        size = Get_List_Size(obj4);
+        
+        if (SARA_DEBUG) printf("\tSize of List: %d\n", size);
+        
+        if ( size == -1 ) {
+            PyErr_SetString(PyExc_TypeError, "not a list");
+            return NULL; 
+        }
+        //printf("Size = %d\n", size);
+        
+        if (SARA_DEBUG) printf("\t<Contents>\n");
+        
+        arg5 = prev = NULL;
+        for ( i=0; i < size; i++ ) {
+            py_obj = PyList_GetItem(obj4, i);
+            if (SWIG_ConvertPtr(py_obj, (void **) &ptr, SWIGTYPE_p_attropl, 1)) {
+                sprintf(s,"list item %d has wrong type", i);
+                PyErr_SetString(PyExc_TypeError, s);
+                return NULL;
+                
+                // This will skipp the wrong entry
+                // continue;
+            }
+            
+            /* 
+                 * Make first entry head of C linked list
+                */ 
+            if ( i == 0) {
+                arg5 = ptr;
+                ptr->next = prev;
+            }
+            else {
+                prev->next = ptr;
+                ptr->next = NULL;
+            }
+            prev = ptr;
+            
+        } // end for
+        if (SARA_DEBUG) printf("\t</Contents>\n");
+    }
+    if (!SWIG_AsCharPtr(obj5, (char**)&arg6)) SWIG_fail;
+    result = (int)pbs_manager(arg1,arg2,arg3,arg4,arg5,arg6);
+    
+    resultobj = SWIG_From_int((int)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_pbs_movejob(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    char *arg2 ;
+    char *arg3 ;
+    char *arg4 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj3 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOOO:pbs_movejob",&obj0,&obj1,&obj2,&obj3)) goto fail;
+    arg1 = (int)SWIG_As_int(obj0); 
+    if (PyErr_Occurred()) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj1, (char**)&arg2)) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj2, (char**)&arg3)) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj3, (char**)&arg4)) SWIG_fail;
+    result = (int)pbs_movejob(arg1,arg2,arg3,arg4);
+    
+    resultobj = SWIG_From_int((int)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_pbs_msgjob(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    char *arg2 ;
+    int arg3 ;
+    char *arg4 ;
+    char *arg5 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj3 = 0 ;
+    PyObject * obj4 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOOOO:pbs_msgjob",&obj0,&obj1,&obj2,&obj3,&obj4)) goto fail;
+    arg1 = (int)SWIG_As_int(obj0); 
+    if (PyErr_Occurred()) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj1, (char**)&arg2)) SWIG_fail;
+    arg3 = (int)SWIG_As_int(obj2); 
+    if (PyErr_Occurred()) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj3, (char**)&arg4)) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj4, (char**)&arg5)) SWIG_fail;
+    result = (int)pbs_msgjob(arg1,arg2,arg3,arg4,arg5);
+    
+    resultobj = SWIG_From_int((int)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_pbs_orderjob(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    char *arg2 ;
+    char *arg3 ;
+    char *arg4 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj3 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOOO:pbs_orderjob",&obj0,&obj1,&obj2,&obj3)) goto fail;
+    arg1 = (int)SWIG_As_int(obj0); 
+    if (PyErr_Occurred()) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj1, (char**)&arg2)) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj2, (char**)&arg3)) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj3, (char**)&arg4)) SWIG_fail;
+    result = (int)pbs_orderjob(arg1,arg2,arg3,arg4);
+    
+    resultobj = SWIG_From_int((int)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_pbs_rescquery(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    char **arg2 = (char **) 0 ;
+    int arg3 ;
+    int *arg4 = (int *) 0 ;
+    int *arg5 = (int *) 0 ;
+    int *arg6 = (int *) 0 ;
+    int *arg7 = (int *) 0 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj3 = 0 ;
+    PyObject * obj4 = 0 ;
+    PyObject * obj5 = 0 ;
+    PyObject * obj6 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOOOOOO:pbs_rescquery",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6)) goto fail;
+    arg1 = (int)SWIG_As_int(obj0); 
+    if (PyErr_Occurred()) SWIG_fail;
+    {
+        int		i=0, size=0;
+        PyObject	*py_obj;
+        
+        if (SARA_DEBUG) printf("Convert python -> c (char **):\n");
+        
+        size = Get_List_Size(obj1);
+        
+        if (SARA_DEBUG) printf("\tSize of List: %d\n", size);
+        
+        if ( size == -1 ) {
+            PyErr_SetString(PyExc_TypeError, "not a list");
+            return NULL; 
+        }
+        // printf("Size = %d\n", size);
+        
+        if (SARA_DEBUG) printf("\t<Contents>\n");
+        
+        arg2 = (char **) malloc( (size+1) * sizeof(char *));
+        for (i=0; i < size; i++) {
+            py_obj = PyList_GetItem(obj1, i);
+            if (PyString_Check(py_obj)) {
+                arg2[i] = PyString_AsString(py_obj);
+                if (SARA_DEBUG) printf("%s", arg2[i]);
+            }
+            else {
+                PyErr_SetString(PyExc_TypeError, "not a list of strings");
+                free(arg2);
+                return NULL; 
+            }
+        } // end for
+        arg2[i] = 0;
+        if (SARA_DEBUG) printf("\t</Contents>\n");
+    }
+    arg3 = (int)SWIG_As_int(obj2); 
+    if (PyErr_Occurred()) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj3,(void **)(&arg4),SWIGTYPE_p_int,
+    SWIG_POINTER_EXCEPTION | 0)) == -1) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj4,(void **)(&arg5),SWIGTYPE_p_int,
+    SWIG_POINTER_EXCEPTION | 0)) == -1) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj5,(void **)(&arg6),SWIGTYPE_p_int,
+    SWIG_POINTER_EXCEPTION | 0)) == -1) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj6,(void **)(&arg7),SWIGTYPE_p_int,
+    SWIG_POINTER_EXCEPTION | 0)) == -1) SWIG_fail;
+    result = (int)pbs_rescquery(arg1,arg2,arg3,arg4,arg5,arg6,arg7);
+    
+    resultobj = SWIG_From_int((int)result);
+    {
+        free( (char *) arg2);
+    }
+    return resultobj;
+    fail:
+    {
+        free( (char *) arg2);
+    }
+    return NULL;
+}
+
+
+static PyObject *_wrap_pbs_rescreserve(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    char **arg2 = (char **) 0 ;
+    int arg3 ;
+    resource_t *arg4 = (resource_t *) 0 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj3 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOOO:pbs_rescreserve",&obj0,&obj1,&obj2,&obj3)) goto fail;
+    arg1 = (int)SWIG_As_int(obj0); 
+    if (PyErr_Occurred()) SWIG_fail;
+    {
+        int		i=0, size=0;
+        PyObject	*py_obj;
+        
+        if (SARA_DEBUG) printf("Convert python -> c (char **):\n");
+        
+        size = Get_List_Size(obj1);
+        
+        if (SARA_DEBUG) printf("\tSize of List: %d\n", size);
+        
+        if ( size == -1 ) {
+            PyErr_SetString(PyExc_TypeError, "not a list");
+            return NULL; 
+        }
+        // printf("Size = %d\n", size);
+        
+        if (SARA_DEBUG) printf("\t<Contents>\n");
+        
+        arg2 = (char **) malloc( (size+1) * sizeof(char *));
+        for (i=0; i < size; i++) {
+            py_obj = PyList_GetItem(obj1, i);
+            if (PyString_Check(py_obj)) {
+                arg2[i] = PyString_AsString(py_obj);
+                if (SARA_DEBUG) printf("%s", arg2[i]);
+            }
+            else {
+                PyErr_SetString(PyExc_TypeError, "not a list of strings");
+                free(arg2);
+                return NULL; 
+            }
+        } // end for
+        arg2[i] = 0;
+        if (SARA_DEBUG) printf("\t</Contents>\n");
+    }
+    arg3 = (int)SWIG_As_int(obj2); 
+    if (PyErr_Occurred()) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj3,(void **)(&arg4),SWIGTYPE_p_resource_t,
+    SWIG_POINTER_EXCEPTION | 0)) == -1) SWIG_fail;
+    result = (int)pbs_rescreserve(arg1,arg2,arg3,arg4);
+    
+    resultobj = SWIG_From_int((int)result);
+    {
+        free( (char *) arg2);
+    }
+    return resultobj;
+    fail:
+    {
+        free( (char *) arg2);
+    }
+    return NULL;
+}
+
+
+static PyObject *_wrap_pbs_rescrelease(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    resource_t arg2 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:pbs_rescrelease",&obj0,&obj1)) goto fail;
+    arg1 = (int)SWIG_As_int(obj0); 
+    if (PyErr_Occurred()) SWIG_fail;
+    arg2 = (resource_t)SWIG_As_int(obj1); 
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (int)pbs_rescrelease(arg1,arg2);
+    
+    resultobj = SWIG_From_int((int)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_pbs_rerunjob(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    char *arg2 ;
+    char *arg3 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOO:pbs_rerunjob",&obj0,&obj1,&obj2)) goto fail;
+    arg1 = (int)SWIG_As_int(obj0); 
+    if (PyErr_Occurred()) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj1, (char**)&arg2)) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj2, (char**)&arg3)) SWIG_fail;
+    result = (int)pbs_rerunjob(arg1,arg2,arg3);
+    
+    resultobj = SWIG_From_int((int)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_pbs_rlsjob(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    char *arg2 ;
+    char *arg3 ;
+    char *arg4 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj3 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOOO:pbs_rlsjob",&obj0,&obj1,&obj2,&obj3)) goto fail;
+    arg1 = (int)SWIG_As_int(obj0); 
+    if (PyErr_Occurred()) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj1, (char**)&arg2)) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj2, (char**)&arg3)) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj3, (char**)&arg4)) SWIG_fail;
+    result = (int)pbs_rlsjob(arg1,arg2,arg3,arg4);
+    
+    resultobj = SWIG_From_int((int)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_pbs_runjob(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    char *arg2 ;
+    char *arg3 ;
+    char *arg4 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj3 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOOO:pbs_runjob",&obj0,&obj1,&obj2,&obj3)) goto fail;
+    arg1 = (int)SWIG_As_int(obj0); 
+    if (PyErr_Occurred()) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj1, (char**)&arg2)) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj2, (char**)&arg3)) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj3, (char**)&arg4)) SWIG_fail;
+    result = (int)pbs_runjob(arg1,arg2,arg3,arg4);
+    
+    resultobj = SWIG_From_int((int)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_pbs_selectjob(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    struct attropl *arg2 = (struct attropl *) 0 ;
+    char *arg3 ;
+    char **result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOO:pbs_selectjob",&obj0,&obj1,&obj2)) goto fail;
+    arg1 = (int)SWIG_As_int(obj0); 
+    if (PyErr_Occurred()) SWIG_fail;
+    {
+        PyObject		*py_obj;
+        struct attropl	*ptr, *prev;
+        char 			s[255];
+        int			i=0, size=0;
+        
+        // printf("Python --> C\n");
+        
+        if (SARA_DEBUG) printf("Converteren python -> c (struct attropl *):\n");
+        
+        size = Get_List_Size(obj1);
+        
+        if (SARA_DEBUG) printf("\tSize of List: %d\n", size);
+        
+        if ( size == -1 ) {
+            PyErr_SetString(PyExc_TypeError, "not a list");
+            return NULL; 
+        }
+        //printf("Size = %d\n", size);
+        
+        if (SARA_DEBUG) printf("\t<Contents>\n");
+        
+        arg2 = prev = NULL;
+        for ( i=0; i < size; i++ ) {
+            py_obj = PyList_GetItem(obj1, i);
+            if (SWIG_ConvertPtr(py_obj, (void **) &ptr, SWIGTYPE_p_attropl, 1)) {
+                sprintf(s,"list item %d has wrong type", i);
+                PyErr_SetString(PyExc_TypeError, s);
+                return NULL;
+                
+                // This will skipp the wrong entry
+                // continue;
+            }
+            
+            /* 
+                 * Make first entry head of C linked list
+                */ 
+            if ( i == 0) {
+                arg2 = ptr;
+                ptr->next = prev;
+            }
+            else {
+                prev->next = ptr;
+                ptr->next = NULL;
+            }
+            prev = ptr;
+            
+        } // end for
+        if (SARA_DEBUG) printf("\t</Contents>\n");
+    }
+    if (!SWIG_AsCharPtr(obj2, (char**)&arg3)) SWIG_fail;
+    result = (char **)pbs_selectjob(arg1,arg2,arg3);
+    
+    {
+        int len=0, i;
+        
+        if (result == NULL) 
+        resultobj = PyList_New(0);
+        else {
+            while (result[len]) 
+            len++;
+            
+            resultobj = PyList_New(len);
+            for (i=0; i < len; i++ )
+            PyList_SetItem(resultobj, i , PyString_FromString(result[i])); 
+        }
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_pbs_sigjob(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    char *arg2 ;
+    char *arg3 ;
+    char *arg4 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj3 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOOO:pbs_sigjob",&obj0,&obj1,&obj2,&obj3)) goto fail;
+    arg1 = (int)SWIG_As_int(obj0); 
+    if (PyErr_Occurred()) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj1, (char**)&arg2)) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj2, (char**)&arg3)) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj3, (char**)&arg4)) SWIG_fail;
+    result = (int)pbs_sigjob(arg1,arg2,arg3,arg4);
+    
+    resultobj = SWIG_From_int((int)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_pbs_statfree(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct batch_status *arg1 = (struct batch_status *) 0 ;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:pbs_statfree",&obj0)) goto fail;
+    {
+        PyObject		*py_obj;
+        struct batch_status	*ptr, *prev;
+        char 			s[255];
+        int			i=0, size=0;
+        
+        // printf("Python --> C\n");
+        
+        if (SARA_DEBUG) printf("Converteren python -> c (struct batch_status *):\n");
+        
+        size = Get_List_Size(obj0);
+        if (SARA_DEBUG) printf("\tSize of list: %d\n", size);
+        
+        if ( size == -1 ) {
+            PyErr_SetString(PyExc_TypeError, "not a list");
+            return NULL; 
+        }
+        // printf("Size = %d\n", size);
+        
+        if (SARA_DEBUG) printf("\t<Contents>\n");
+        
+        arg1 = prev = NULL;
+        for ( i=0; i < size; i++ ) {
+            py_obj = PyList_GetItem(obj0, i);
+            if (SWIG_ConvertPtr(py_obj, (void **) &ptr, SWIGTYPE_p_batch_status, 1)) {
+                sprintf(s,"list item %d has wrong type", i);
+                PyErr_SetString(PyExc_TypeError, s);
+                return NULL;
+                
+                // This will skipp the wrong entry
+                // continue;
+            }
+            
+            /* 
+                 * Make first entry head of C linked list
+                */ 
+            if ( i == 0) {
+                arg1 = ptr;
+                ptr->next = prev;
+            }
+            else {
+                prev->next = ptr;
+                ptr->next = NULL;
+            }
+            
+            if (SARA_DEBUG) printf("\t\t- %s\n", ptr->name);
+            prev = ptr;
+            
+        } // end for
+        
+        if (SARA_DEBUG) printf("\t</Contents>\n");
+    }
+    pbs_statfree(arg1);
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_pbs_statjob(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    char *arg2 ;
+    struct attrl *arg3 = (struct attrl *) 0 ;
+    char *arg4 ;
+    struct batch_status *result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj3 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOOO:pbs_statjob",&obj0,&obj1,&obj2,&obj3)) goto fail;
+    arg1 = (int)SWIG_As_int(obj0); 
+    if (PyErr_Occurred()) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj1, (char**)&arg2)) SWIG_fail;
+    {
+        PyObject	*py_obj;
+        struct attrl	*ptr, *prev;
+        char 		s[255];
+        int		i=0, size=0;
+        
+        // printf("Python --> C\n");
+        
+        if (SARA_DEBUG) printf("Converteren python -> c (struct attrl *):\n");
+        
+        size = Get_List_Size(obj2);
+        if (SARA_DEBUG) printf("\tSize of List: %d\n", size);
+        
+        if ( size == -1 ) {
+            PyErr_SetString(PyExc_TypeError, "not a list");
+            return NULL; 
+        }
+        
+        if (SARA_DEBUG) printf("\t<Contents>\n");
+        
+        arg3 = prev = NULL;
+        for ( i=0; i < size; i++ ) {
+            py_obj = PyList_GetItem(obj2, i);
+            if (SWIG_ConvertPtr(py_obj, (void **) &ptr, SWIGTYPE_p_attrl, 1)) {
+                sprintf(s,"list item %d has wrong type", i);
+                PyErr_SetString(PyExc_TypeError, s);
+                return NULL;
+                
+                // This will skipp the wrong entry
+                // continue;
+            }
+            
+            /* 
+                 * Make first entry head of C linked list
+                */ 
+            if ( i == 0) {
+                arg3 = ptr;
+                ptr->next = prev;
+            }
+            else {
+                prev->next = ptr;
+                ptr->next = NULL;
+            }
+            if (SARA_DEBUG) printf("\t\t- %s\n", ptr->name);
+            
+            prev = ptr;
+            
+        } // end for
+        if (SARA_DEBUG) printf("\t</Contents>\n");
+    }
+    if (!SWIG_AsCharPtr(obj3, (char**)&arg4)) SWIG_fail;
+    result = (struct batch_status *)pbs_statjob(arg1,arg2,arg3,arg4);
+    
+    {
+        PyObject *obj_batch;
+        struct batch_status *ptr;
+        int i=0, len=0;
+        
+        // printf("Ja we are in bussniss\n");
+        if (SARA_DEBUG) printf("Converteren c (struct batch_status *) -> python:\n");
+        
+        // Deterime length of list
+        //
+        ptr = result;
+        while (ptr != NULL) {
+            len++;
+            ptr = ptr->next;
+        }
+        resultobj = PyList_New(len);
+        
+        if (SARA_DEBUG) printf("\tSize of List: %d\n", len);
+        
+        // Make a list of batch_status pointers
+        //
+        if (SARA_DEBUG) printf("\t<Contents>\n");
+        ptr = result;
+        for (i=0; i < len; i++) {
+            obj_batch = SWIG_NewPointerObj((void *)ptr, SWIGTYPE_p_batch_status,0); 
+            PyList_SetItem(resultobj, i, obj_batch);  	
+            if (SARA_DEBUG)  {
+                printf("\t\t- %s\n", ptr->name);
+            }
+            ptr = ptr->next;
+        }
+        if (SARA_DEBUG) printf("\t</Contents>\n");
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_pbs_selstat(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    struct attropl *arg2 = (struct attropl *) 0 ;
+    char *arg3 ;
+    struct batch_status *result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOO:pbs_selstat",&obj0,&obj1,&obj2)) goto fail;
+    arg1 = (int)SWIG_As_int(obj0); 
+    if (PyErr_Occurred()) SWIG_fail;
+    {
+        PyObject		*py_obj;
+        struct attropl	*ptr, *prev;
+        char 			s[255];
+        int			i=0, size=0;
+        
+        // printf("Python --> C\n");
+        
+        if (SARA_DEBUG) printf("Converteren python -> c (struct attropl *):\n");
+        
+        size = Get_List_Size(obj1);
+        
+        if (SARA_DEBUG) printf("\tSize of List: %d\n", size);
+        
+        if ( size == -1 ) {
+            PyErr_SetString(PyExc_TypeError, "not a list");
+            return NULL; 
+        }
+        //printf("Size = %d\n", size);
+        
+        if (SARA_DEBUG) printf("\t<Contents>\n");
+        
+        arg2 = prev = NULL;
+        for ( i=0; i < size; i++ ) {
+            py_obj = PyList_GetItem(obj1, i);
+            if (SWIG_ConvertPtr(py_obj, (void **) &ptr, SWIGTYPE_p_attropl, 1)) {
+                sprintf(s,"list item %d has wrong type", i);
+                PyErr_SetString(PyExc_TypeError, s);
+                return NULL;
+                
+                // This will skipp the wrong entry
+                // continue;
+            }
+            
+            /* 
+                 * Make first entry head of C linked list
+                */ 
+            if ( i == 0) {
+                arg2 = ptr;
+                ptr->next = prev;
+            }
+            else {
+                prev->next = ptr;
+                ptr->next = NULL;
+            }
+            prev = ptr;
+            
+        } // end for
+        if (SARA_DEBUG) printf("\t</Contents>\n");
+    }
+    if (!SWIG_AsCharPtr(obj2, (char**)&arg3)) SWIG_fail;
+    result = (struct batch_status *)pbs_selstat(arg1,arg2,arg3);
+    
+    {
+        PyObject *obj_batch;
+        struct batch_status *ptr;
+        int i=0, len=0;
+        
+        // printf("Ja we are in bussniss\n");
+        if (SARA_DEBUG) printf("Converteren c (struct batch_status *) -> python:\n");
+        
+        // Deterime length of list
+        //
+        ptr = result;
+        while (ptr != NULL) {
+            len++;
+            ptr = ptr->next;
+        }
+        resultobj = PyList_New(len);
+        
+        if (SARA_DEBUG) printf("\tSize of List: %d\n", len);
+        
+        // Make a list of batch_status pointers
+        //
+        if (SARA_DEBUG) printf("\t<Contents>\n");
+        ptr = result;
+        for (i=0; i < len; i++) {
+            obj_batch = SWIG_NewPointerObj((void *)ptr, SWIGTYPE_p_batch_status,0); 
+            PyList_SetItem(resultobj, i, obj_batch);  	
+            if (SARA_DEBUG)  {
+                printf("\t\t- %s\n", ptr->name);
+            }
+            ptr = ptr->next;
+        }
+        if (SARA_DEBUG) printf("\t</Contents>\n");
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_pbs_statque(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    char *arg2 ;
+    struct attrl *arg3 = (struct attrl *) 0 ;
+    char *arg4 ;
+    struct batch_status *result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj3 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOOO:pbs_statque",&obj0,&obj1,&obj2,&obj3)) goto fail;
+    arg1 = (int)SWIG_As_int(obj0); 
+    if (PyErr_Occurred()) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj1, (char**)&arg2)) SWIG_fail;
+    {
+        PyObject	*py_obj;
+        struct attrl	*ptr, *prev;
+        char 		s[255];
+        int		i=0, size=0;
+        
+        // printf("Python --> C\n");
+        
+        if (SARA_DEBUG) printf("Converteren python -> c (struct attrl *):\n");
+        
+        size = Get_List_Size(obj2);
+        if (SARA_DEBUG) printf("\tSize of List: %d\n", size);
+        
+        if ( size == -1 ) {
+            PyErr_SetString(PyExc_TypeError, "not a list");
+            return NULL; 
+        }
+        
+        if (SARA_DEBUG) printf("\t<Contents>\n");
+        
+        arg3 = prev = NULL;
+        for ( i=0; i < size; i++ ) {
+            py_obj = PyList_GetItem(obj2, i);
+            if (SWIG_ConvertPtr(py_obj, (void **) &ptr, SWIGTYPE_p_attrl, 1)) {
+                sprintf(s,"list item %d has wrong type", i);
+                PyErr_SetString(PyExc_TypeError, s);
+                return NULL;
+                
+                // This will skipp the wrong entry
+                // continue;
+            }
+            
+            /* 
+                 * Make first entry head of C linked list
+                */ 
+            if ( i == 0) {
+                arg3 = ptr;
+                ptr->next = prev;
+            }
+            else {
+                prev->next = ptr;
+                ptr->next = NULL;
+            }
+            if (SARA_DEBUG) printf("\t\t- %s\n", ptr->name);
+            
+            prev = ptr;
+            
+        } // end for
+        if (SARA_DEBUG) printf("\t</Contents>\n");
+    }
+    if (!SWIG_AsCharPtr(obj3, (char**)&arg4)) SWIG_fail;
+    result = (struct batch_status *)pbs_statque(arg1,arg2,arg3,arg4);
+    
+    {
+        PyObject *obj_batch;
+        struct batch_status *ptr;
+        int i=0, len=0;
+        
+        // printf("Ja we are in bussniss\n");
+        if (SARA_DEBUG) printf("Converteren c (struct batch_status *) -> python:\n");
+        
+        // Deterime length of list
+        //
+        ptr = result;
+        while (ptr != NULL) {
+            len++;
+            ptr = ptr->next;
+        }
+        resultobj = PyList_New(len);
+        
+        if (SARA_DEBUG) printf("\tSize of List: %d\n", len);
+        
+        // Make a list of batch_status pointers
+        //
+        if (SARA_DEBUG) printf("\t<Contents>\n");
+        ptr = result;
+        for (i=0; i < len; i++) {
+            obj_batch = SWIG_NewPointerObj((void *)ptr, SWIGTYPE_p_batch_status,0); 
+            PyList_SetItem(resultobj, i, obj_batch);  	
+            if (SARA_DEBUG)  {
+                printf("\t\t- %s\n", ptr->name);
+            }
+            ptr = ptr->next;
+        }
+        if (SARA_DEBUG) printf("\t</Contents>\n");
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_pbs_statserver(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    struct attrl *arg2 = (struct attrl *) 0 ;
+    char *arg3 ;
+    struct batch_status *result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOO:pbs_statserver",&obj0,&obj1,&obj2)) goto fail;
+    arg1 = (int)SWIG_As_int(obj0); 
+    if (PyErr_Occurred()) SWIG_fail;
+    {
+        PyObject	*py_obj;
+        struct attrl	*ptr, *prev;
+        char 		s[255];
+        int		i=0, size=0;
+        
+        // printf("Python --> C\n");
+        
+        if (SARA_DEBUG) printf("Converteren python -> c (struct attrl *):\n");
+        
+        size = Get_List_Size(obj1);
+        if (SARA_DEBUG) printf("\tSize of List: %d\n", size);
+        
+        if ( size == -1 ) {
+            PyErr_SetString(PyExc_TypeError, "not a list");
+            return NULL; 
+        }
+        
+        if (SARA_DEBUG) printf("\t<Contents>\n");
+        
+        arg2 = prev = NULL;
+        for ( i=0; i < size; i++ ) {
+            py_obj = PyList_GetItem(obj1, i);
+            if (SWIG_ConvertPtr(py_obj, (void **) &ptr, SWIGTYPE_p_attrl, 1)) {
+                sprintf(s,"list item %d has wrong type", i);
+                PyErr_SetString(PyExc_TypeError, s);
+                return NULL;
+                
+                // This will skipp the wrong entry
+                // continue;
+            }
+            
+            /* 
+                 * Make first entry head of C linked list
+                */ 
+            if ( i == 0) {
+                arg2 = ptr;
+                ptr->next = prev;
+            }
+            else {
+                prev->next = ptr;
+                ptr->next = NULL;
+            }
+            if (SARA_DEBUG) printf("\t\t- %s\n", ptr->name);
+            
+            prev = ptr;
+            
+        } // end for
+        if (SARA_DEBUG) printf("\t</Contents>\n");
+    }
+    if (!SWIG_AsCharPtr(obj2, (char**)&arg3)) SWIG_fail;
+    result = (struct batch_status *)pbs_statserver(arg1,arg2,arg3);
+    
+    {
+        PyObject *obj_batch;
+        struct batch_status *ptr;
+        int i=0, len=0;
+        
+        // printf("Ja we are in bussniss\n");
+        if (SARA_DEBUG) printf("Converteren c (struct batch_status *) -> python:\n");
+        
+        // Deterime length of list
+        //
+        ptr = result;
+        while (ptr != NULL) {
+            len++;
+            ptr = ptr->next;
+        }
+        resultobj = PyList_New(len);
+        
+        if (SARA_DEBUG) printf("\tSize of List: %d\n", len);
+        
+        // Make a list of batch_status pointers
+        //
+        if (SARA_DEBUG) printf("\t<Contents>\n");
+        ptr = result;
+        for (i=0; i < len; i++) {
+            obj_batch = SWIG_NewPointerObj((void *)ptr, SWIGTYPE_p_batch_status,0); 
+            PyList_SetItem(resultobj, i, obj_batch);  	
+            if (SARA_DEBUG)  {
+                printf("\t\t- %s\n", ptr->name);
+            }
+            ptr = ptr->next;
+        }
+        if (SARA_DEBUG) printf("\t</Contents>\n");
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_pbs_statnode(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    char *arg2 ;
+    struct attrl *arg3 = (struct attrl *) 0 ;
+    char *arg4 ;
+    struct batch_status *result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj3 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOOO:pbs_statnode",&obj0,&obj1,&obj2,&obj3)) goto fail;
+    arg1 = (int)SWIG_As_int(obj0); 
+    if (PyErr_Occurred()) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj1, (char**)&arg2)) SWIG_fail;
+    {
+        PyObject	*py_obj;
+        struct attrl	*ptr, *prev;
+        char 		s[255];
+        int		i=0, size=0;
+        
+        // printf("Python --> C\n");
+        
+        if (SARA_DEBUG) printf("Converteren python -> c (struct attrl *):\n");
+        
+        size = Get_List_Size(obj2);
+        if (SARA_DEBUG) printf("\tSize of List: %d\n", size);
+        
+        if ( size == -1 ) {
+            PyErr_SetString(PyExc_TypeError, "not a list");
+            return NULL; 
+        }
+        
+        if (SARA_DEBUG) printf("\t<Contents>\n");
+        
+        arg3 = prev = NULL;
+        for ( i=0; i < size; i++ ) {
+            py_obj = PyList_GetItem(obj2, i);
+            if (SWIG_ConvertPtr(py_obj, (void **) &ptr, SWIGTYPE_p_attrl, 1)) {
+                sprintf(s,"list item %d has wrong type", i);
+                PyErr_SetString(PyExc_TypeError, s);
+                return NULL;
+                
+                // This will skipp the wrong entry
+                // continue;
+            }
+            
+            /* 
+                 * Make first entry head of C linked list
+                */ 
+            if ( i == 0) {
+                arg3 = ptr;
+                ptr->next = prev;
+            }
+            else {
+                prev->next = ptr;
+                ptr->next = NULL;
+            }
+            if (SARA_DEBUG) printf("\t\t- %s\n", ptr->name);
+            
+            prev = ptr;
+            
+        } // end for
+        if (SARA_DEBUG) printf("\t</Contents>\n");
+    }
+    if (!SWIG_AsCharPtr(obj3, (char**)&arg4)) SWIG_fail;
+    result = (struct batch_status *)pbs_statnode(arg1,arg2,arg3,arg4);
+    
+    {
+        PyObject *obj_batch;
+        struct batch_status *ptr;
+        int i=0, len=0;
+        
+        // printf("Ja we are in bussniss\n");
+        if (SARA_DEBUG) printf("Converteren c (struct batch_status *) -> python:\n");
+        
+        // Deterime length of list
+        //
+        ptr = result;
+        while (ptr != NULL) {
+            len++;
+            ptr = ptr->next;
+        }
+        resultobj = PyList_New(len);
+        
+        if (SARA_DEBUG) printf("\tSize of List: %d\n", len);
+        
+        // Make a list of batch_status pointers
+        //
+        if (SARA_DEBUG) printf("\t<Contents>\n");
+        ptr = result;
+        for (i=0; i < len; i++) {
+            obj_batch = SWIG_NewPointerObj((void *)ptr, SWIGTYPE_p_batch_status,0); 
+            PyList_SetItem(resultobj, i, obj_batch);  	
+            if (SARA_DEBUG)  {
+                printf("\t\t- %s\n", ptr->name);
+            }
+            ptr = ptr->next;
+        }
+        if (SARA_DEBUG) printf("\t</Contents>\n");
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_pbs_submit(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    struct attropl *arg2 = (struct attropl *) 0 ;
+    char *arg3 ;
+    char *arg4 ;
+    char *arg5 ;
+    char *result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj3 = 0 ;
+    PyObject * obj4 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOOOO:pbs_submit",&obj0,&obj1,&obj2,&obj3,&obj4)) goto fail;
+    arg1 = (int)SWIG_As_int(obj0); 
+    if (PyErr_Occurred()) SWIG_fail;
+    {
+        PyObject		*py_obj;
+        struct attropl	*ptr, *prev;
+        char 			s[255];
+        int			i=0, size=0;
+        
+        // printf("Python --> C\n");
+        
+        if (SARA_DEBUG) printf("Converteren python -> c (struct attropl *):\n");
+        
+        size = Get_List_Size(obj1);
+        
+        if (SARA_DEBUG) printf("\tSize of List: %d\n", size);
+        
+        if ( size == -1 ) {
+            PyErr_SetString(PyExc_TypeError, "not a list");
+            return NULL; 
+        }
+        //printf("Size = %d\n", size);
+        
+        if (SARA_DEBUG) printf("\t<Contents>\n");
+        
+        arg2 = prev = NULL;
+        for ( i=0; i < size; i++ ) {
+            py_obj = PyList_GetItem(obj1, i);
+            if (SWIG_ConvertPtr(py_obj, (void **) &ptr, SWIGTYPE_p_attropl, 1)) {
+                sprintf(s,"list item %d has wrong type", i);
+                PyErr_SetString(PyExc_TypeError, s);
+                return NULL;
+                
+                // This will skipp the wrong entry
+                // continue;
+            }
+            
+            /* 
+                 * Make first entry head of C linked list
+                */ 
+            if ( i == 0) {
+                arg2 = ptr;
+                ptr->next = prev;
+            }
+            else {
+                prev->next = ptr;
+                ptr->next = NULL;
+            }
+            prev = ptr;
+            
+        } // end for
+        if (SARA_DEBUG) printf("\t</Contents>\n");
+    }
+    if (!SWIG_AsCharPtr(obj2, (char**)&arg3)) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj3, (char**)&arg4)) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj4, (char**)&arg5)) SWIG_fail;
+    result = (char *)pbs_submit(arg1,arg2,arg3,arg4,arg5);
+    
+    resultobj = SWIG_FromCharPtr(result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_pbs_terminate(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    int arg2 ;
+    char *arg3 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOO:pbs_terminate",&obj0,&obj1,&obj2)) goto fail;
+    arg1 = (int)SWIG_As_int(obj0); 
+    if (PyErr_Occurred()) SWIG_fail;
+    arg2 = (int)SWIG_As_int(obj1); 
+    if (PyErr_Occurred()) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj2, (char**)&arg3)) SWIG_fail;
+    result = (int)pbs_terminate(arg1,arg2,arg3);
+    
+    resultobj = SWIG_From_int((int)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_totpool(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    int arg2 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:totpool",&obj0,&obj1)) goto fail;
+    arg1 = (int)SWIG_As_int(obj0); 
+    if (PyErr_Occurred()) SWIG_fail;
+    arg2 = (int)SWIG_As_int(obj1); 
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (int)totpool(arg1,arg2);
+    
+    resultobj = SWIG_From_int((int)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_usepool(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    int arg2 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:usepool",&obj0,&obj1)) goto fail;
+    arg1 = (int)SWIG_As_int(obj0); 
+    if (PyErr_Occurred()) SWIG_fail;
+    arg2 = (int)SWIG_As_int(obj1); 
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (int)usepool(arg1,arg2);
+    
+    resultobj = SWIG_From_int((int)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_openrm(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    char *arg1 ;
+    unsigned int arg2 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:openrm",&obj0,&obj1)) goto fail;
+    if (!SWIG_AsCharPtr(obj0, (char**)&arg1)) SWIG_fail;
+    arg2 = (unsigned int)SWIG_As_unsigned_SS_int(obj1); 
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (int)openrm(arg1,arg2);
+    
+    resultobj = SWIG_From_int((int)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_closerm(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:closerm",&obj0)) goto fail;
+    arg1 = (int)SWIG_As_int(obj0); 
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (int)closerm(arg1);
+    
+    resultobj = SWIG_From_int((int)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_downrm(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:downrm",&obj0)) goto fail;
+    arg1 = (int)SWIG_As_int(obj0); 
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (int)downrm(arg1);
+    
+    resultobj = SWIG_From_int((int)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_configrm(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    char *arg2 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:configrm",&obj0,&obj1)) goto fail;
+    arg1 = (int)SWIG_As_int(obj0); 
+    if (PyErr_Occurred()) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj1, (char**)&arg2)) SWIG_fail;
+    result = (int)configrm(arg1,arg2);
+    
+    resultobj = SWIG_From_int((int)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_addreq(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    char *arg2 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:addreq",&obj0,&obj1)) goto fail;
+    arg1 = (int)SWIG_As_int(obj0); 
+    if (PyErr_Occurred()) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj1, (char**)&arg2)) SWIG_fail;
+    result = (int)addreq(arg1,arg2);
+    
+    resultobj = SWIG_From_int((int)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_allreq(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    char *arg1 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:allreq",&obj0)) goto fail;
+    if (!SWIG_AsCharPtr(obj0, (char**)&arg1)) SWIG_fail;
+    result = (int)allreq(arg1);
+    
+    resultobj = SWIG_From_int((int)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_flushreq(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int result;
+    
+    if(!PyArg_ParseTuple(args,(char *)":flushreq")) goto fail;
+    result = (int)flushreq();
+    
+    resultobj = SWIG_From_int((int)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_activereq(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int result;
+    
+    if(!PyArg_ParseTuple(args,(char *)":activereq")) goto fail;
+    result = (int)activereq();
+    
+    resultobj = SWIG_From_int((int)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_fullresp(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:fullresp",&obj0)) goto fail;
+    arg1 = (int)SWIG_As_int(obj0); 
+    if (PyErr_Occurred()) SWIG_fail;
+    fullresp(arg1);
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_getreq(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    char *result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:getreq",&obj0)) goto fail;
+    arg1 = (int)SWIG_As_int(obj0); 
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (char *)getreq(arg1);
+    
+    resultobj = SWIG_FromCharPtr(result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static int _wrap_log_event_mask_set(PyObject *_val) {
+    {
+        void *temp;
+        if ((SWIG_ConvertPtr(_val, &temp, SWIGTYPE_p_long, SWIG_POINTER_EXCEPTION | SWIG_POINTER_DISOWN)) == -1) {
+            PyErr_SetString(PyExc_TypeError, "C/C++ variable 'log_event_mask (long *)'");
+            return 1;
+        }
+        log_event_mask = (long *) temp;
+    }
+    return 0;
+}
+
+
+static PyObject *_wrap_log_event_mask_get() {
+    PyObject *pyobj;
+    
+    pyobj = SWIG_NewPointerObj((void *)(log_event_mask), SWIGTYPE_p_long, 0);
+    return pyobj;
+}
+
+
+static PyObject *_wrap_log_close(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:log_close",&obj0)) goto fail;
+    arg1 = (int)SWIG_As_int(obj0); 
+    if (PyErr_Occurred()) SWIG_fail;
+    log_close(arg1);
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_log_err(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    char *arg2 ;
+    char *arg3 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOO:log_err",&obj0,&obj1,&obj2)) goto fail;
+    arg1 = (int)SWIG_As_int(obj0); 
+    if (PyErr_Occurred()) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj1, (char**)&arg2)) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj2, (char**)&arg3)) SWIG_fail;
+    log_err(arg1,arg2,arg3);
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_log_event(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    int arg2 ;
+    char *arg3 ;
+    char *arg4 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj3 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOOO:log_event",&obj0,&obj1,&obj2,&obj3)) goto fail;
+    arg1 = (int)SWIG_As_int(obj0); 
+    if (PyErr_Occurred()) SWIG_fail;
+    arg2 = (int)SWIG_As_int(obj1); 
+    if (PyErr_Occurred()) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj2, (char**)&arg3)) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj3, (char**)&arg4)) SWIG_fail;
+    log_event(arg1,arg2,arg3,arg4);
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_log_open(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    char *arg1 ;
+    char *arg2 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:log_open",&obj0,&obj1)) goto fail;
+    if (!SWIG_AsCharPtr(obj0, (char**)&arg1)) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj1, (char**)&arg2)) SWIG_fail;
+    result = (int)log_open(arg1,arg2);
+    
+    resultobj = SWIG_From_int((int)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_log_record(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    int arg2 ;
+    char *arg3 ;
+    char *arg4 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj3 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOOO:log_record",&obj0,&obj1,&obj2,&obj3)) goto fail;
+    arg1 = (int)SWIG_As_int(obj0); 
+    if (PyErr_Occurred()) SWIG_fail;
+    arg2 = (int)SWIG_As_int(obj1); 
+    if (PyErr_Occurred()) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj2, (char**)&arg3)) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj3, (char**)&arg4)) SWIG_fail;
+    log_record(arg1,arg2,arg3,arg4);
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static int _wrap_log_buffer_set(PyObject *_val) {
+    {
+        if (!SWIG_AsCharArray(_val, log_buffer, 4096)) {
+            PyErr_Clear();
+            PyErr_SetString(PyExc_TypeError, "C/C++ variable 'log_buffer (char *)'");
+            return 1;
+        }
+    }
+    return 0;
+}
+
+
+static PyObject *_wrap_log_buffer_get() {
+    PyObject *pyobj;
+    
+    {
+        size_t size = 4096;
+        
+        while (size && (log_buffer[size - 1] == '\0')) --size;
+        
+        pyobj = SWIG_FromCharArray(log_buffer, size);
+    }
+    return pyobj;
+}
+
+
+static PyObject *_wrap_setup_env(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    char *arg1 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:setup_env",&obj0)) goto fail;
+    if (!SWIG_AsCharPtr(obj0, (char**)&arg1)) SWIG_fail;
+    result = (int)setup_env(arg1);
+    
+    resultobj = SWIG_From_int((int)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_chk_file_sec(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    char *arg1 ;
+    int arg2 ;
+    int arg3 ;
+    int arg4 ;
+    int arg5 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj3 = 0 ;
+    PyObject * obj4 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOOOO:chk_file_sec",&obj0,&obj1,&obj2,&obj3,&obj4)) goto fail;
+    if (!SWIG_AsCharPtr(obj0, (char**)&arg1)) SWIG_fail;
+    arg2 = (int)SWIG_As_int(obj1); 
+    if (PyErr_Occurred()) SWIG_fail;
+    arg3 = (int)SWIG_As_int(obj2); 
+    if (PyErr_Occurred()) SWIG_fail;
+    arg4 = (int)SWIG_As_int(obj3); 
+    if (PyErr_Occurred()) SWIG_fail;
+    arg5 = (int)SWIG_As_int(obj4); 
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (int)chk_file_sec(arg1,arg2,arg3,arg4,arg5);
+    
+    resultobj = SWIG_From_int((int)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static int _wrap_msg_daemonname_set(PyObject *_val) {
+    {
+        char *cptr = 0;
+        if (!SWIG_AsNewCharPtr(_val, &cptr)) {
+            PyErr_Clear();
+            PyErr_SetString(PyExc_TypeError, "C/C++ variable 'msg_daemonname (char *)'");
+            return 1;
+        }
+        if (msg_daemonname) swig_delete_array(msg_daemonname);
+        msg_daemonname = cptr;
+    }
+    return 0;
+}
+
+
+static PyObject *_wrap_msg_daemonname_get() {
+    PyObject *pyobj;
+    
+    pyobj = SWIG_FromCharPtr(msg_daemonname);
+    return pyobj;
+}
+
+
+static PyMethodDef SwigMethods[] = {
+	 { (char *)"new_attrl", _wrap_new_attrl, METH_VARARGS, NULL },
+	 { (char *)"new_attropl", _wrap_new_attropl, METH_VARARGS, NULL },
+	 { (char *)"new_batch_status", _wrap_new_batch_status, METH_VARARGS, NULL },
+	 { (char *)"get_error", _wrap_get_error, METH_VARARGS, NULL },
+	 { (char *)"attrl_name_set", _wrap_attrl_name_set, METH_VARARGS, NULL },
+	 { (char *)"attrl_name_get", _wrap_attrl_name_get, METH_VARARGS, NULL },
+	 { (char *)"attrl_resource_set", _wrap_attrl_resource_set, METH_VARARGS, NULL },
+	 { (char *)"attrl_resource_get", _wrap_attrl_resource_get, METH_VARARGS, NULL },
+	 { (char *)"attrl_value_set", _wrap_attrl_value_set, METH_VARARGS, NULL },
+	 { (char *)"attrl_value_get", _wrap_attrl_value_get, METH_VARARGS, NULL },
+	 { (char *)"attrl_op_set", _wrap_attrl_op_set, METH_VARARGS, NULL },
+	 { (char *)"attrl_op_get", _wrap_attrl_op_get, METH_VARARGS, NULL },
+	 { (char *)"attrl___str__", _wrap_attrl___str__, METH_VARARGS, NULL },
+	 { (char *)"attrl_swigregister", attrl_swigregister, METH_VARARGS, NULL },
+	 { (char *)"attropl_name_set", _wrap_attropl_name_set, METH_VARARGS, NULL },
+	 { (char *)"attropl_name_get", _wrap_attropl_name_get, METH_VARARGS, NULL },
+	 { (char *)"attropl_resource_set", _wrap_attropl_resource_set, METH_VARARGS, NULL },
+	 { (char *)"attropl_resource_get", _wrap_attropl_resource_get, METH_VARARGS, NULL },
+	 { (char *)"attropl_value_set", _wrap_attropl_value_set, METH_VARARGS, NULL },
+	 { (char *)"attropl_value_get", _wrap_attropl_value_get, METH_VARARGS, NULL },
+	 { (char *)"attropl_op_set", _wrap_attropl_op_set, METH_VARARGS, NULL },
+	 { (char *)"attropl_op_get", _wrap_attropl_op_get, METH_VARARGS, NULL },
+	 { (char *)"attropl___str__", _wrap_attropl___str__, METH_VARARGS, NULL },
+	 { (char *)"attropl_swigregister", attropl_swigregister, METH_VARARGS, NULL },
+	 { (char *)"batch_status_name_set", _wrap_batch_status_name_set, METH_VARARGS, NULL },
+	 { (char *)"batch_status_name_get", _wrap_batch_status_name_get, METH_VARARGS, NULL },
+	 { (char *)"batch_status_attribs_set", _wrap_batch_status_attribs_set, METH_VARARGS, NULL },
+	 { (char *)"batch_status_attribs_get", _wrap_batch_status_attribs_get, METH_VARARGS, NULL },
+	 { (char *)"batch_status_text_set", _wrap_batch_status_text_set, METH_VARARGS, NULL },
+	 { (char *)"batch_status_text_get", _wrap_batch_status_text_get, METH_VARARGS, NULL },
+	 { (char *)"batch_status_swigregister", batch_status_swigregister, METH_VARARGS, NULL },
+	 { (char *)"avail", _wrap_avail, METH_VARARGS, NULL },
+	 { (char *)"pbs_asyrunjob", _wrap_pbs_asyrunjob, METH_VARARGS, NULL },
+	 { (char *)"pbs_alterjob", _wrap_pbs_alterjob, METH_VARARGS, NULL },
+	 { (char *)"pbs_connect", _wrap_pbs_connect, METH_VARARGS, NULL },
+	 { (char *)"pbs_query_max_connections", _wrap_pbs_query_max_connections, METH_VARARGS, NULL },
+	 { (char *)"pbs_default", _wrap_pbs_default, METH_VARARGS, NULL },
+	 { (char *)"pbs_deljob", _wrap_pbs_deljob, METH_VARARGS, NULL },
+	 { (char *)"pbs_disconnect", _wrap_pbs_disconnect, METH_VARARGS, NULL },
+	 { (char *)"pbs_geterrmsg", _wrap_pbs_geterrmsg, METH_VARARGS, NULL },
+	 { (char *)"pbs_holdjob", _wrap_pbs_holdjob, METH_VARARGS, NULL },
+	 { (char *)"pbs_locjob", _wrap_pbs_locjob, METH_VARARGS, NULL },
+	 { (char *)"pbs_manager", _wrap_pbs_manager, METH_VARARGS, NULL },
+	 { (char *)"pbs_movejob", _wrap_pbs_movejob, METH_VARARGS, NULL },
+	 { (char *)"pbs_msgjob", _wrap_pbs_msgjob, METH_VARARGS, NULL },
+	 { (char *)"pbs_orderjob", _wrap_pbs_orderjob, METH_VARARGS, NULL },
+	 { (char *)"pbs_rescquery", _wrap_pbs_rescquery, METH_VARARGS, NULL },
+	 { (char *)"pbs_rescreserve", _wrap_pbs_rescreserve, METH_VARARGS, NULL },
+	 { (char *)"pbs_rescrelease", _wrap_pbs_rescrelease, METH_VARARGS, NULL },
+	 { (char *)"pbs_rerunjob", _wrap_pbs_rerunjob, METH_VARARGS, NULL },
+	 { (char *)"pbs_rlsjob", _wrap_pbs_rlsjob, METH_VARARGS, NULL },
+	 { (char *)"pbs_runjob", _wrap_pbs_runjob, METH_VARARGS, NULL },
+	 { (char *)"pbs_selectjob", _wrap_pbs_selectjob, METH_VARARGS, NULL },
+	 { (char *)"pbs_sigjob", _wrap_pbs_sigjob, METH_VARARGS, NULL },
+	 { (char *)"pbs_statfree", _wrap_pbs_statfree, METH_VARARGS, NULL },
+	 { (char *)"pbs_statjob", _wrap_pbs_statjob, METH_VARARGS, NULL },
+	 { (char *)"pbs_selstat", _wrap_pbs_selstat, METH_VARARGS, NULL },
+	 { (char *)"pbs_statque", _wrap_pbs_statque, METH_VARARGS, NULL },
+	 { (char *)"pbs_statserver", _wrap_pbs_statserver, METH_VARARGS, NULL },
+	 { (char *)"pbs_statnode", _wrap_pbs_statnode, METH_VARARGS, NULL },
+	 { (char *)"pbs_submit", _wrap_pbs_submit, METH_VARARGS, NULL },
+	 { (char *)"pbs_terminate", _wrap_pbs_terminate, METH_VARARGS, NULL },
+	 { (char *)"totpool", _wrap_totpool, METH_VARARGS, NULL },
+	 { (char *)"usepool", _wrap_usepool, METH_VARARGS, NULL },
+	 { (char *)"openrm", _wrap_openrm, METH_VARARGS, NULL },
+	 { (char *)"closerm", _wrap_closerm, METH_VARARGS, NULL },
+	 { (char *)"downrm", _wrap_downrm, METH_VARARGS, NULL },
+	 { (char *)"configrm", _wrap_configrm, METH_VARARGS, NULL },
+	 { (char *)"addreq", _wrap_addreq, METH_VARARGS, NULL },
+	 { (char *)"allreq", _wrap_allreq, METH_VARARGS, NULL },
+	 { (char *)"flushreq", _wrap_flushreq, METH_VARARGS, NULL },
+	 { (char *)"activereq", _wrap_activereq, METH_VARARGS, NULL },
+	 { (char *)"fullresp", _wrap_fullresp, METH_VARARGS, NULL },
+	 { (char *)"getreq", _wrap_getreq, METH_VARARGS, NULL },
+	 { (char *)"log_close", _wrap_log_close, METH_VARARGS, NULL },
+	 { (char *)"log_err", _wrap_log_err, METH_VARARGS, NULL },
+	 { (char *)"log_event", _wrap_log_event, METH_VARARGS, NULL },
+	 { (char *)"log_open", _wrap_log_open, METH_VARARGS, NULL },
+	 { (char *)"log_record", _wrap_log_record, METH_VARARGS, NULL },
+	 { (char *)"setup_env", _wrap_setup_env, METH_VARARGS, NULL },
+	 { (char *)"chk_file_sec", _wrap_chk_file_sec, METH_VARARGS, NULL },
+	 { NULL, NULL, 0, NULL }
+};
+
+
+/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */
+
+static swig_type_info _swigt__p_batch_status[] = {{"_p_batch_status", 0, "struct batch_status *", 0, 0, 0, 0},{"_p_batch_status", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__p_resource_t[] = {{"_p_resource_t", 0, "int *|resource_t *", 0, 0, 0, 0},{"_p_resource_t", 0, 0, 0, 0, 0, 0},{"_p_int", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__p_char[] = {{"_p_char", 0, "char *", 0, 0, 0, 0},{"_p_char", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__p_attropl[] = {{"_p_attropl", 0, "struct attropl *", 0, 0, 0, 0},{"_p_attropl", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__p_p_char[] = {{"_p_p_char", 0, "char **", 0, 0, 0, 0},{"_p_p_char", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__p_attrl[] = {{"_p_attrl", 0, "struct attrl *", 0, 0, 0, 0},{"_p_attrl", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__p_long[] = {{"_p_long", 0, "long *", 0, 0, 0, 0},{"_p_long", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__p_int[] = {{"_p_int", 0, "int *", 0, 0, 0, 0},{"_p_resource_t", 0, 0, 0, 0, 0, 0},{"_p_int", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+
+static swig_type_info *swig_types_initial[] = {
+_swigt__p_batch_status, 
+_swigt__p_resource_t, 
+_swigt__p_char, 
+_swigt__p_attropl, 
+_swigt__p_p_char, 
+_swigt__p_attrl, 
+_swigt__p_long, 
+_swigt__p_int, 
+0
+};
+
+
+/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (END) -------- */
+
+static swig_const_info swig_const_table[] = {
+{ SWIG_PY_POINTER, (char*)"ATTR_a", 0, 0, (void *)"Execution_Time", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_c", 0, 0, (void *)"Checkpoint", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_e", 0, 0, (void *)"Error_Path", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_g", 0, 0, (void *)"group_list", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_h", 0, 0, (void *)"Hold_Types", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_j", 0, 0, (void *)"Join_Path", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_k", 0, 0, (void *)"Keep_Files", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_l", 0, 0, (void *)"Resource_List", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_m", 0, 0, (void *)"Mail_Points", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_o", 0, 0, (void *)"Output_Path", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_p", 0, 0, (void *)"Priority", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_q", 0, 0, (void *)"destination", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_r", 0, 0, (void *)"Rerunable", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_u", 0, 0, (void *)"User_List", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_v", 0, 0, (void *)"Variable_List", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_A", 0, 0, (void *)"Account_Name", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_M", 0, 0, (void *)"Mail_Users", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_N", 0, 0, (void *)"Job_Name", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_S", 0, 0, (void *)"Shell_Path_List", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_depend", 0, 0, (void *)"depend", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_inter", 0, 0, (void *)"interactive", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_stagein", 0, 0, (void *)"stagein", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_stageout", 0, 0, (void *)"stageout", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_ctime", 0, 0, (void *)"ctime", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_exechost", 0, 0, (void *)"exec_host", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_mtime", 0, 0, (void *)"mtime", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_qtime", 0, 0, (void *)"qtime", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_session", 0, 0, (void *)"session_id", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_euser", 0, 0, (void *)"euser", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_egroup", 0, 0, (void *)"egroup", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_hashname", 0, 0, (void *)"hashname", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_hopcount", 0, 0, (void *)"hop_count", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_security", 0, 0, (void *)"security", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_sched_hint", 0, 0, (void *)"sched_hint", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_substate", 0, 0, (void *)"substate", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_name", 0, 0, (void *)"Job_Name", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_owner", 0, 0, (void *)"Job_Owner", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_used", 0, 0, (void *)"resources_used", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_state", 0, 0, (void *)"job_state", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_queue", 0, 0, (void *)"queue", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_server", 0, 0, (void *)"server", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_maxrun", 0, 0, (void *)"max_running", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_total", 0, 0, (void *)"total_jobs", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_comment", 0, 0, (void *)"comment", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_cookie", 0, 0, (void *)"cookie", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_qrank", 0, 0, (void *)"queue_rank", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_altid", 0, 0, (void *)"alt_id", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_etime", 0, 0, (void *)"etime", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_aclgren", 0, 0, (void *)"acl_group_enable", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_aclgroup", 0, 0, (void *)"acl_groups", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_aclhten", 0, 0, (void *)"acl_host_enable", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_aclhost", 0, 0, (void *)"acl_hosts", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_acluren", 0, 0, (void *)"acl_user_enable", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_acluser", 0, 0, (void *)"acl_users", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_altrouter", 0, 0, (void *)"alt_router", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_chkptmin", 0, 0, (void *)"checkpoint_min", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_enable", 0, 0, (void *)"enabled", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_fromroute", 0, 0, (void *)"from_route_only", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_killdelay", 0, 0, (void *)"kill_delay", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_maxgrprun", 0, 0, (void *)"max_group_run", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_maxque", 0, 0, (void *)"max_queuable", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_maxuserrun", 0, 0, (void *)"max_user_run", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_qtype", 0, 0, (void *)"queue_type", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_rescassn", 0, 0, (void *)"resources_assigned", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_rescdflt", 0, 0, (void *)"resources_default", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_rescmax", 0, 0, (void *)"resources_max", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_rescmin", 0, 0, (void *)"resources_min", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_rndzretry", 0, 0, (void *)"rendezvous_retry", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_routedest", 0, 0, (void *)"route_destinations", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_routeheld", 0, 0, (void *)"route_held_jobs", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_routewait", 0, 0, (void *)"route_waiting_jobs", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_routeretry", 0, 0, (void *)"route_retry_time", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_routelife", 0, 0, (void *)"route_lifetime", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_rsvexpdt", 0, 0, (void *)"reserved_expedite", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_rsvsync", 0, 0, (void *)"reserved_sync", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_start", 0, 0, (void *)"started", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_count", 0, 0, (void *)"state_count", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_number", 0, 0, (void *)"number_jobs", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_reqprop", 0, 0, (void *)"required_property", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_aclroot", 0, 0, (void *)"acl_roots", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_managers", 0, 0, (void *)"managers", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_dfltque", 0, 0, (void *)"default_queue", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_defnode", 0, 0, (void *)"default_node", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_locsvrs", 0, 0, (void *)"location_servers", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_logevents", 0, 0, (void *)"log_events", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_logfile", 0, 0, (void *)"log_file", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_mailfrom", 0, 0, (void *)"mail_from", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_nodepack", 0, 0, (void *)"node_pack", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_operators", 0, 0, (void *)"operators", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_queryother", 0, 0, (void *)"query_other_jobs", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_resccost", 0, 0, (void *)"resources_cost", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_rescavail", 0, 0, (void *)"resources_available", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_schedit", 0, 0, (void *)"scheduler_iteration", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_scheduling", 0, 0, (void *)"scheduling", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_status", 0, 0, (void *)"server_state", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_syscost", 0, 0, (void *)"system_cost", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_pingrate", 0, 0, (void *)"node_ping_rate", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_ndchkrate", 0, 0, (void *)"node_check_rate", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_procpack", 0, 0, (void *)"proc_pack", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_NODE_state", 0, 0, (void *)"state", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_NODE_np", 0, 0, (void *)"np", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_NODE_properties", 0, 0, (void *)"properties", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_NODE_ntype", 0, 0, (void *)"ntype", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ATTR_NODE_jobs", 0, 0, (void *)"jobs", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"CHECKPOINT_UNSPECIFIED", 0, 0, (void *)"u", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"NO_HOLD", 0, 0, (void *)"n", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"NO_JOIN", 0, 0, (void *)"n", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"NO_KEEP", 0, 0, (void *)"n", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"MAIL_AT_ABORT", 0, 0, (void *)"a", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"DELDELAY", 0, 0, (void *)"deldelay=", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"USER_HOLD", 0, 0, (void *)"u", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"OTHER_HOLD", 0, 0, (void *)"o", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"SYSTEM_HOLD", 0, 0, (void *)"s", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ND_free", 0, 0, (void *)"free", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ND_offline", 0, 0, (void *)"offline", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ND_down", 0, 0, (void *)"down", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ND_reserve", 0, 0, (void *)"reserve", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ND_job_exclusive", 0, 0, (void *)"job-exclusive", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ND_job_sharing", 0, 0, (void *)"job-sharing", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ND_busy", 0, 0, (void *)"busy", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ND_state_unknown", 0, 0, (void *)"state-unknown", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ND_timeshared", 0, 0, (void *)"time-shared", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"ND_cluster", 0, 0, (void *)"cluster", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"SIG_RESUME", 0, 0, (void *)"resume", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"SIG_SUSPEND", 0, 0, (void *)"suspend", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"PBS_BATCH_SERVICE_NAME", 0, 0, (void *)"pbs", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"PBS_BATCH_SERVICE_NAME_DIS", 0, 0, (void *)"pbs_dis", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"PBS_MOM_SERVICE_NAME", 0, 0, (void *)"pbs_mom", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"PBS_MANAGER_SERVICE_NAME", 0, 0, (void *)"pbs_resmon", &SWIGTYPE_p_char},
+{ SWIG_PY_POINTER, (char*)"PBS_SCHEDULER_SERVICE_NAME", 0, 0, (void *)"pbs_sched", &SWIGTYPE_p_char},
+{0, 0, 0, 0.0, 0, 0}};
+
+#ifdef __cplusplus
+}
+#endif
+
+#ifdef __cplusplus
+extern "C"
+#endif
+SWIGEXPORT(void) SWIG_init(void) {
+    static PyObject *SWIG_globals = 0; 
+    static int       typeinit = 0;
+    PyObject *m, *d;
+    int       i;
+    if (!SWIG_globals) SWIG_globals = SWIG_newvarlink();
+    m = Py_InitModule((char *) SWIG_name, SwigMethods);
+    d = PyModule_GetDict(m);
+    
+    if (!typeinit) {
+        for (i = 0; swig_types_initial[i]; i++) {
+            swig_types[i] = SWIG_TypeRegister(swig_types_initial[i]);
+        }
+        typeinit = 1;
+    }
+    SWIG_InstallConstants(d,swig_const_table);
+    
+    PyDict_SetItemString(d,"ATTR_a", SWIG_FromCharPtr("Execution_Time"));
+    PyDict_SetItemString(d,"ATTR_c", SWIG_FromCharPtr("Checkpoint"));
+    PyDict_SetItemString(d,"ATTR_e", SWIG_FromCharPtr("Error_Path"));
+    PyDict_SetItemString(d,"ATTR_g", SWIG_FromCharPtr("group_list"));
+    PyDict_SetItemString(d,"ATTR_h", SWIG_FromCharPtr("Hold_Types"));
+    PyDict_SetItemString(d,"ATTR_j", SWIG_FromCharPtr("Join_Path"));
+    PyDict_SetItemString(d,"ATTR_k", SWIG_FromCharPtr("Keep_Files"));
+    PyDict_SetItemString(d,"ATTR_l", SWIG_FromCharPtr("Resource_List"));
+    PyDict_SetItemString(d,"ATTR_m", SWIG_FromCharPtr("Mail_Points"));
+    PyDict_SetItemString(d,"ATTR_o", SWIG_FromCharPtr("Output_Path"));
+    PyDict_SetItemString(d,"ATTR_p", SWIG_FromCharPtr("Priority"));
+    PyDict_SetItemString(d,"ATTR_q", SWIG_FromCharPtr("destination"));
+    PyDict_SetItemString(d,"ATTR_r", SWIG_FromCharPtr("Rerunable"));
+    PyDict_SetItemString(d,"ATTR_u", SWIG_FromCharPtr("User_List"));
+    PyDict_SetItemString(d,"ATTR_v", SWIG_FromCharPtr("Variable_List"));
+    PyDict_SetItemString(d,"ATTR_A", SWIG_FromCharPtr("Account_Name"));
+    PyDict_SetItemString(d,"ATTR_M", SWIG_FromCharPtr("Mail_Users"));
+    PyDict_SetItemString(d,"ATTR_N", SWIG_FromCharPtr("Job_Name"));
+    PyDict_SetItemString(d,"ATTR_S", SWIG_FromCharPtr("Shell_Path_List"));
+    PyDict_SetItemString(d,"ATTR_depend", SWIG_FromCharPtr("depend"));
+    PyDict_SetItemString(d,"ATTR_inter", SWIG_FromCharPtr("interactive"));
+    PyDict_SetItemString(d,"ATTR_stagein", SWIG_FromCharPtr("stagein"));
+    PyDict_SetItemString(d,"ATTR_stageout", SWIG_FromCharPtr("stageout"));
+    PyDict_SetItemString(d,"ATTR_ctime", SWIG_FromCharPtr("ctime"));
+    PyDict_SetItemString(d,"ATTR_exechost", SWIG_FromCharPtr("exec_host"));
+    PyDict_SetItemString(d,"ATTR_mtime", SWIG_FromCharPtr("mtime"));
+    PyDict_SetItemString(d,"ATTR_qtime", SWIG_FromCharPtr("qtime"));
+    PyDict_SetItemString(d,"ATTR_session", SWIG_FromCharPtr("session_id"));
+    PyDict_SetItemString(d,"ATTR_euser", SWIG_FromCharPtr("euser"));
+    PyDict_SetItemString(d,"ATTR_egroup", SWIG_FromCharPtr("egroup"));
+    PyDict_SetItemString(d,"ATTR_hashname", SWIG_FromCharPtr("hashname"));
+    PyDict_SetItemString(d,"ATTR_hopcount", SWIG_FromCharPtr("hop_count"));
+    PyDict_SetItemString(d,"ATTR_security", SWIG_FromCharPtr("security"));
+    PyDict_SetItemString(d,"ATTR_sched_hint", SWIG_FromCharPtr("sched_hint"));
+    PyDict_SetItemString(d,"ATTR_substate", SWIG_FromCharPtr("substate"));
+    PyDict_SetItemString(d,"ATTR_name", SWIG_FromCharPtr("Job_Name"));
+    PyDict_SetItemString(d,"ATTR_owner", SWIG_FromCharPtr("Job_Owner"));
+    PyDict_SetItemString(d,"ATTR_used", SWIG_FromCharPtr("resources_used"));
+    PyDict_SetItemString(d,"ATTR_state", SWIG_FromCharPtr("job_state"));
+    PyDict_SetItemString(d,"ATTR_queue", SWIG_FromCharPtr("queue"));
+    PyDict_SetItemString(d,"ATTR_server", SWIG_FromCharPtr("server"));
+    PyDict_SetItemString(d,"ATTR_maxrun", SWIG_FromCharPtr("max_running"));
+    PyDict_SetItemString(d,"ATTR_total", SWIG_FromCharPtr("total_jobs"));
+    PyDict_SetItemString(d,"ATTR_comment", SWIG_FromCharPtr("comment"));
+    PyDict_SetItemString(d,"ATTR_cookie", SWIG_FromCharPtr("cookie"));
+    PyDict_SetItemString(d,"ATTR_qrank", SWIG_FromCharPtr("queue_rank"));
+    PyDict_SetItemString(d,"ATTR_altid", SWIG_FromCharPtr("alt_id"));
+    PyDict_SetItemString(d,"ATTR_etime", SWIG_FromCharPtr("etime"));
+    PyDict_SetItemString(d,"ATTR_aclgren", SWIG_FromCharPtr("acl_group_enable"));
+    PyDict_SetItemString(d,"ATTR_aclgroup", SWIG_FromCharPtr("acl_groups"));
+    PyDict_SetItemString(d,"ATTR_aclhten", SWIG_FromCharPtr("acl_host_enable"));
+    PyDict_SetItemString(d,"ATTR_aclhost", SWIG_FromCharPtr("acl_hosts"));
+    PyDict_SetItemString(d,"ATTR_acluren", SWIG_FromCharPtr("acl_user_enable"));
+    PyDict_SetItemString(d,"ATTR_acluser", SWIG_FromCharPtr("acl_users"));
+    PyDict_SetItemString(d,"ATTR_altrouter", SWIG_FromCharPtr("alt_router"));
+    PyDict_SetItemString(d,"ATTR_chkptmin", SWIG_FromCharPtr("checkpoint_min"));
+    PyDict_SetItemString(d,"ATTR_enable", SWIG_FromCharPtr("enabled"));
+    PyDict_SetItemString(d,"ATTR_fromroute", SWIG_FromCharPtr("from_route_only"));
+    PyDict_SetItemString(d,"ATTR_killdelay", SWIG_FromCharPtr("kill_delay"));
+    PyDict_SetItemString(d,"ATTR_maxgrprun", SWIG_FromCharPtr("max_group_run"));
+    PyDict_SetItemString(d,"ATTR_maxque", SWIG_FromCharPtr("max_queuable"));
+    PyDict_SetItemString(d,"ATTR_maxuserrun", SWIG_FromCharPtr("max_user_run"));
+    PyDict_SetItemString(d,"ATTR_qtype", SWIG_FromCharPtr("queue_type"));
+    PyDict_SetItemString(d,"ATTR_rescassn", SWIG_FromCharPtr("resources_assigned"));
+    PyDict_SetItemString(d,"ATTR_rescdflt", SWIG_FromCharPtr("resources_default"));
+    PyDict_SetItemString(d,"ATTR_rescmax", SWIG_FromCharPtr("resources_max"));
+    PyDict_SetItemString(d,"ATTR_rescmin", SWIG_FromCharPtr("resources_min"));
+    PyDict_SetItemString(d,"ATTR_rndzretry", SWIG_FromCharPtr("rendezvous_retry"));
+    PyDict_SetItemString(d,"ATTR_routedest", SWIG_FromCharPtr("route_destinations"));
+    PyDict_SetItemString(d,"ATTR_routeheld", SWIG_FromCharPtr("route_held_jobs"));
+    PyDict_SetItemString(d,"ATTR_routewait", SWIG_FromCharPtr("route_waiting_jobs"));
+    PyDict_SetItemString(d,"ATTR_routeretry", SWIG_FromCharPtr("route_retry_time"));
+    PyDict_SetItemString(d,"ATTR_routelife", SWIG_FromCharPtr("route_lifetime"));
+    PyDict_SetItemString(d,"ATTR_rsvexpdt", SWIG_FromCharPtr("reserved_expedite"));
+    PyDict_SetItemString(d,"ATTR_rsvsync", SWIG_FromCharPtr("reserved_sync"));
+    PyDict_SetItemString(d,"ATTR_start", SWIG_FromCharPtr("started"));
+    PyDict_SetItemString(d,"ATTR_count", SWIG_FromCharPtr("state_count"));
+    PyDict_SetItemString(d,"ATTR_number", SWIG_FromCharPtr("number_jobs"));
+    PyDict_SetItemString(d,"ATTR_reqprop", SWIG_FromCharPtr("required_property"));
+    PyDict_SetItemString(d,"ATTR_aclroot", SWIG_FromCharPtr("acl_roots"));
+    PyDict_SetItemString(d,"ATTR_managers", SWIG_FromCharPtr("managers"));
+    PyDict_SetItemString(d,"ATTR_dfltque", SWIG_FromCharPtr("default_queue"));
+    PyDict_SetItemString(d,"ATTR_defnode", SWIG_FromCharPtr("default_node"));
+    PyDict_SetItemString(d,"ATTR_locsvrs", SWIG_FromCharPtr("location_servers"));
+    PyDict_SetItemString(d,"ATTR_logevents", SWIG_FromCharPtr("log_events"));
+    PyDict_SetItemString(d,"ATTR_logfile", SWIG_FromCharPtr("log_file"));
+    PyDict_SetItemString(d,"ATTR_mailfrom", SWIG_FromCharPtr("mail_from"));
+    PyDict_SetItemString(d,"ATTR_nodepack", SWIG_FromCharPtr("node_pack"));
+    PyDict_SetItemString(d,"ATTR_operators", SWIG_FromCharPtr("operators"));
+    PyDict_SetItemString(d,"ATTR_queryother", SWIG_FromCharPtr("query_other_jobs"));
+    PyDict_SetItemString(d,"ATTR_resccost", SWIG_FromCharPtr("resources_cost"));
+    PyDict_SetItemString(d,"ATTR_rescavail", SWIG_FromCharPtr("resources_available"));
+    PyDict_SetItemString(d,"ATTR_schedit", SWIG_FromCharPtr("scheduler_iteration"));
+    PyDict_SetItemString(d,"ATTR_scheduling", SWIG_FromCharPtr("scheduling"));
+    PyDict_SetItemString(d,"ATTR_status", SWIG_FromCharPtr("server_state"));
+    PyDict_SetItemString(d,"ATTR_syscost", SWIG_FromCharPtr("system_cost"));
+    PyDict_SetItemString(d,"ATTR_pingrate", SWIG_FromCharPtr("node_ping_rate"));
+    PyDict_SetItemString(d,"ATTR_ndchkrate", SWIG_FromCharPtr("node_check_rate"));
+    PyDict_SetItemString(d,"ATTR_procpack", SWIG_FromCharPtr("proc_pack"));
+    PyDict_SetItemString(d,"ATTR_NODE_state", SWIG_FromCharPtr("state"));
+    PyDict_SetItemString(d,"ATTR_NODE_np", SWIG_FromCharPtr("np"));
+    PyDict_SetItemString(d,"ATTR_NODE_properties", SWIG_FromCharPtr("properties"));
+    PyDict_SetItemString(d,"ATTR_NODE_ntype", SWIG_FromCharPtr("ntype"));
+    PyDict_SetItemString(d,"ATTR_NODE_jobs", SWIG_FromCharPtr("jobs"));
+    PyDict_SetItemString(d,"CHECKPOINT_UNSPECIFIED", SWIG_FromCharPtr("u"));
+    PyDict_SetItemString(d,"NO_HOLD", SWIG_FromCharPtr("n"));
+    PyDict_SetItemString(d,"NO_JOIN", SWIG_FromCharPtr("n"));
+    PyDict_SetItemString(d,"NO_KEEP", SWIG_FromCharPtr("n"));
+    PyDict_SetItemString(d,"MAIL_AT_ABORT", SWIG_FromCharPtr("a"));
+    PyDict_SetItemString(d,"DELDELAY", SWIG_FromCharPtr("deldelay="));
+    PyDict_SetItemString(d,"USER_HOLD", SWIG_FromCharPtr("u"));
+    PyDict_SetItemString(d,"OTHER_HOLD", SWIG_FromCharPtr("o"));
+    PyDict_SetItemString(d,"SYSTEM_HOLD", SWIG_FromCharPtr("s"));
+    PyDict_SetItemString(d,"ND_free", SWIG_FromCharPtr("free"));
+    PyDict_SetItemString(d,"ND_offline", SWIG_FromCharPtr("offline"));
+    PyDict_SetItemString(d,"ND_down", SWIG_FromCharPtr("down"));
+    PyDict_SetItemString(d,"ND_reserve", SWIG_FromCharPtr("reserve"));
+    PyDict_SetItemString(d,"ND_job_exclusive", SWIG_FromCharPtr("job-exclusive"));
+    PyDict_SetItemString(d,"ND_job_sharing", SWIG_FromCharPtr("job-sharing"));
+    PyDict_SetItemString(d,"ND_busy", SWIG_FromCharPtr("busy"));
+    PyDict_SetItemString(d,"ND_state_unknown", SWIG_FromCharPtr("state-unknown"));
+    PyDict_SetItemString(d,"ND_timeshared", SWIG_FromCharPtr("time-shared"));
+    PyDict_SetItemString(d,"ND_cluster", SWIG_FromCharPtr("cluster"));
+    PyDict_SetItemString(d,"MAX_ENCODE_BFR", SWIG_From_int((int)100));
+    PyDict_SetItemString(d,"MGR_CMD_CREATE", SWIG_From_int((int)0));
+    PyDict_SetItemString(d,"MGR_CMD_DELETE", SWIG_From_int((int)1));
+    PyDict_SetItemString(d,"MGR_CMD_SET", SWIG_From_int((int)2));
+    PyDict_SetItemString(d,"MGR_CMD_UNSET", SWIG_From_int((int)3));
+    PyDict_SetItemString(d,"MGR_CMD_LIST", SWIG_From_int((int)4));
+    PyDict_SetItemString(d,"MGR_CMD_PRINT", SWIG_From_int((int)5));
+    PyDict_SetItemString(d,"MGR_CMD_ACTIVE", SWIG_From_int((int)6));
+    PyDict_SetItemString(d,"MGR_OBJ_NONE", SWIG_From_int((int)-1));
+    PyDict_SetItemString(d,"MGR_OBJ_SERVER", SWIG_From_int((int)0));
+    PyDict_SetItemString(d,"MGR_OBJ_QUEUE", SWIG_From_int((int)1));
+    PyDict_SetItemString(d,"MGR_OBJ_JOB", SWIG_From_int((int)2));
+    PyDict_SetItemString(d,"MGR_OBJ_NODE", SWIG_From_int((int)3));
+    PyDict_SetItemString(d,"MSG_OUT", SWIG_From_int((int)1));
+    PyDict_SetItemString(d,"MSG_ERR", SWIG_From_int((int)2));
+    PyDict_SetItemString(d,"SHUT_SIG", SWIG_From_int((int)-1));
+    PyDict_SetItemString(d,"SHUT_IMMEDIATE", SWIG_From_int((int)0));
+    PyDict_SetItemString(d,"SHUT_DELAY", SWIG_From_int((int)1));
+    PyDict_SetItemString(d,"SHUT_QUICK", SWIG_From_int((int)2));
+    PyDict_SetItemString(d,"SIG_RESUME", SWIG_FromCharPtr("resume"));
+    PyDict_SetItemString(d,"SIG_SUSPEND", SWIG_FromCharPtr("suspend"));
+    PyDict_SetItemString(d,"PBS_MAXHOSTNAME", SWIG_From_int((int)64));
+    PyDict_SetItemString(d,"MAXPATHLEN", SWIG_From_int((int)1024));
+    PyDict_SetItemString(d,"MAXNAMLEN", SWIG_From_int((int)255));
+    PyDict_SetItemString(d,"PBS_MAXUSER", SWIG_From_int((int)16));
+    PyDict_SetItemString(d,"PBS_MAXGRPN", SWIG_From_int((int)16));
+    PyDict_SetItemString(d,"PBS_MAXQUEUENAME", SWIG_From_int((int)15));
+    PyDict_SetItemString(d,"PBS_MAXSERVERNAME", SWIG_From_int((int)64));
+    PyDict_SetItemString(d,"PBS_MAXSEQNUM", SWIG_From_int((int)6));
+    PyDict_SetItemString(d,"PBS_MAXPORTNUM", SWIG_From_int((int)5));
+    PyDict_SetItemString(d,"PBS_MAXSVRJOBID", SWIG_From_int((int)(6+64+5+2)));
+    PyDict_SetItemString(d,"PBS_MAXCLTJOBID", SWIG_From_int((int)((6+64+5+2) +64+5+2)));
+    PyDict_SetItemString(d,"PBS_MAXDEST", SWIG_From_int((int)1024));
+    PyDict_SetItemString(d,"PBS_MAXROUTEDEST", SWIG_From_int((int)(15+64+5+2)));
+    PyDict_SetItemString(d,"PBS_USE_IFF", SWIG_From_int((int)1));
+    PyDict_SetItemString(d,"PBS_INTERACTIVE", SWIG_From_int((int)1));
+    PyDict_SetItemString(d,"PBS_TERM_BUF_SZ", SWIG_From_int((int)80));
+    PyDict_SetItemString(d,"PBS_TERM_CCA", SWIG_From_int((int)6));
+    PyDict_SetItemString(d,"PBS_BATCH_SERVICE_NAME", SWIG_FromCharPtr("pbs"));
+    PyDict_SetItemString(d,"PBS_BATCH_SERVICE_PORT", SWIG_From_int((int)15001));
+    PyDict_SetItemString(d,"PBS_BATCH_SERVICE_NAME_DIS", SWIG_FromCharPtr("pbs_dis"));
+    PyDict_SetItemString(d,"PBS_BATCH_SERVICE_PORT_DIS", SWIG_From_int((int)15001));
+    PyDict_SetItemString(d,"PBS_MOM_SERVICE_NAME", SWIG_FromCharPtr("pbs_mom"));
+    PyDict_SetItemString(d,"PBS_MOM_SERVICE_PORT", SWIG_From_int((int)15002));
+    PyDict_SetItemString(d,"PBS_MANAGER_SERVICE_NAME", SWIG_FromCharPtr("pbs_resmon"));
+    PyDict_SetItemString(d,"PBS_MANAGER_SERVICE_PORT", SWIG_From_int((int)15003));
+    PyDict_SetItemString(d,"PBS_SCHEDULER_SERVICE_NAME", SWIG_FromCharPtr("pbs_sched"));
+    PyDict_SetItemString(d,"PBS_SCHEDULER_SERVICE_PORT", SWIG_From_int((int)15004));
+    PyDict_SetItemString(d,"SET", SWIG_From_int((int)SET));
+    PyDict_SetItemString(d,"UNSET", SWIG_From_int((int)UNSET));
+    PyDict_SetItemString(d,"INCR", SWIG_From_int((int)INCR));
+    PyDict_SetItemString(d,"DECR", SWIG_From_int((int)DECR));
+    PyDict_SetItemString(d,"EQ", SWIG_From_int((int)EQ));
+    PyDict_SetItemString(d,"NE", SWIG_From_int((int)NE));
+    PyDict_SetItemString(d,"GE", SWIG_From_int((int)GE));
+    PyDict_SetItemString(d,"GT", SWIG_From_int((int)GT));
+    PyDict_SetItemString(d,"LE", SWIG_From_int((int)LE));
+    PyDict_SetItemString(d,"LT", SWIG_From_int((int)LT));
+    PyDict_SetItemString(d,"DFLT", SWIG_From_int((int)DFLT));
+    PyDict_SetItemString(d,(char*)"cvar", SWIG_globals);
+    SWIG_addvarlink(SWIG_globals,(char*)"pbs_errno",_wrap_pbs_errno_get, _wrap_pbs_errno_set);
+    SWIG_addvarlink(SWIG_globals,(char*)"pbs_server",_wrap_pbs_server_get, _wrap_pbs_server_set);
+    PyDict_SetItemString(d,"LOG_BUF_SIZE", SWIG_From_int((int)4096));
+    SWIG_addvarlink(SWIG_globals,(char*)"log_event_mask",_wrap_log_event_mask_get, _wrap_log_event_mask_set);
+    SWIG_addvarlink(SWIG_globals,(char*)"log_buffer",_wrap_log_buffer_get, _wrap_log_buffer_set);
+    PyDict_SetItemString(d,"PBSEVENT_ERROR", SWIG_From_int((int)0x0001));
+    PyDict_SetItemString(d,"PBSEVENT_SYSTEM", SWIG_From_int((int)0x0002));
+    PyDict_SetItemString(d,"PBSEVENT_ADMIN", SWIG_From_int((int)0x0004));
+    PyDict_SetItemString(d,"PBSEVENT_JOB", SWIG_From_int((int)0x0008));
+    PyDict_SetItemString(d,"PBSEVENT_JOB_USAGE", SWIG_From_int((int)0x0010));
+    PyDict_SetItemString(d,"PBSEVENT_SECURITY", SWIG_From_int((int)0x0020));
+    PyDict_SetItemString(d,"PBSEVENT_SCHED", SWIG_From_int((int)0x0040));
+    PyDict_SetItemString(d,"PBSEVENT_DEBUG", SWIG_From_int((int)0x0080));
+    PyDict_SetItemString(d,"PBSEVENT_DEBUG2", SWIG_From_int((int)0x0100));
+    PyDict_SetItemString(d,"PBSEVENT_FORCE", SWIG_From_int((int)0x8000));
+    PyDict_SetItemString(d,"PBS_EVENTCLASS_SERVER", SWIG_From_int((int)1));
+    PyDict_SetItemString(d,"PBS_EVENTCLASS_QUEUE", SWIG_From_int((int)2));
+    PyDict_SetItemString(d,"PBS_EVENTCLASS_JOB", SWIG_From_int((int)3));
+    PyDict_SetItemString(d,"PBS_EVENTCLASS_REQUEST", SWIG_From_int((int)4));
+    PyDict_SetItemString(d,"PBS_EVENTCLASS_FILE", SWIG_From_int((int)5));
+    PyDict_SetItemString(d,"PBS_EVENTCLASS_ACCT", SWIG_From_int((int)6));
+    PyDict_SetItemString(d,"PBS_EVENTCLASS_NODE", SWIG_From_int((int)7));
+    PyDict_SetItemString(d,"PBSEVENT_MASK", SWIG_From_int((int)0x01ff));
+    SWIG_addvarlink(SWIG_globals,(char*)"msg_daemonname",_wrap_msg_daemonname_get, _wrap_msg_daemonname_set);
+}
+
Index: tags/2.8.2/src/rm.h
===================================================================
--- tags/2.8.2/src/rm.h	(revision 117)
+++ tags/2.8.2/src/rm.h	(revision 117)
@@ -0,0 +1,72 @@
+/*
+ * $Id: rm.h,v 1.1 2002/02/27 14:34:51 sscpbas Exp $
+ *
+*         Portable Batch System (PBS) Software License
+* 
+* Copyright (c) 1999, MRJ Technology Solutions.
+* All rights reserved.
+* 
+* Acknowledgment: The Portable Batch System Software was originally developed
+* as a joint project between the Numerical Aerospace Simulation (NAS) Systems
+* Division of NASA Ames Research Center and the National Energy Research
+* Supercomputer Center (NERSC) of Lawrence Livermore National Laboratory.
+* 
+* Redistribution of the Portable Batch System Software and use in source
+* and binary forms, with or without modification, are permitted provided
+* that the following conditions are met:
+* 
+* - Redistributions of source code must retain the above copyright and
+*   acknowledgment notices, this list of conditions and the following
+*   disclaimer.
+* 
+* - Redistributions in binary form must reproduce the above copyright and 
+*   acknowledgment notices, this list of conditions and the following
+*   disclaimer in the documentation and/or other materials provided with the
+*   distribution.
+* 
+* - All advertising materials mentioning features or use of this software must
+*   display the following acknowledgment:
+* 
+*   This product includes software developed by NASA Ames Research Center,
+*   Lawrence Livermore National Laboratory, and MRJ Technology Solutions.
+* 
+*         DISCLAIMER OF WARRANTY
+* 
+* THIS SOFTWARE IS PROVIDED BY MRJ TECHNOLOGY SOLUTIONS ("MRJ") "AS IS" WITHOUT 
+* WARRANTY OF ANY KIND, AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
+* FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT ARE EXPRESSLY DISCLAIMED.
+* 
+* IN NO EVENT, UNLESS REQUIRED BY APPLICABLE LAW, SHALL MRJ, NASA, NOR
+* THE U.S. GOVERNMENT BE LIABLE FOR ANY DIRECT DAMAGES WHATSOEVER,
+* NOR ANY INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+* This license will be governed by the laws of the Commonwealth of Virginia,
+* without reference to its choice of law rules.
+*/
+
+/*
+ * @(#) $Id: rm.h,v 1.1 2002/02/27 14:34:51 sscpbas Exp $
+ */
+
+/*
+**	Header file defineing the library calls for connecting
+**	to the resource monitor.
+*/
+
+int	openrm(char *, unsigned int);
+int	closerm(int);
+int	downrm(int);
+int	configrm(int, char *);
+int	addreq(int, char *);
+int	allreq(char *);
+int	flushreq(void);
+int	activereq(void);
+void	fullresp(int);
+
+char*  getreq(int);
