Full Code of PBSPro/pbspro for AI

master cd7ab5edaf03 cached
1196 files
17.5 MB
4.6M tokens
10751 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (18,581K chars total). Download the full file to get everything.
Repository: PBSPro/pbspro
Branch: master
Commit: cd7ab5edaf03
Files: 1196
Total size: 17.5 MB

Directory structure:
gitextract_2t7z1zdf/

├── .clang-format
├── .github/
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── checkclang
│   ├── checkpep8
│   └── runchecks
├── .gitignore
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── COPYRIGHT
├── INSTALL
├── LICENSE
├── Makefile.am
├── PBS_License.txt
├── README.md
├── autogen.sh
├── azure-pipelines.yml
├── buildutils/
│   ├── Makefile.am
│   └── attr_parser.py
├── ci/
│   ├── README.md
│   ├── ci
│   └── etc/
│       ├── build-pbs-packages.sh
│       ├── ci-script-wrapper.service
│       ├── configure_node.sh
│       ├── container-env-setup.sh
│       ├── container-init
│       ├── do.sh
│       ├── do_sanitize_mode.sh
│       ├── docker-entrypoint
│       ├── gen_ptl_json.sh
│       ├── id_rsa
│       ├── id_rsa.pub
│       ├── install-system-packages
│       ├── killit.sh
│       ├── macros
│       └── sudoers-overrides
├── configure.ac
├── doc/
│   ├── Makefile.am
│   ├── man1/
│   │   ├── pbs_hook_attributes.7B
│   │   ├── pbs_job_attributes.7B
│   │   ├── pbs_login.1B
│   │   ├── pbs_module.7B
│   │   ├── pbs_node_attributes.7B
│   │   ├── pbs_professional.7B
│   │   ├── pbs_python.1B
│   │   ├── pbs_queue_attributes.7B
│   │   ├── pbs_ralter.1B
│   │   ├── pbs_rdel.1B
│   │   ├── pbs_release_nodes.1B
│   │   ├── pbs_resources.7B
│   │   ├── pbs_resv_attributes.7B
│   │   ├── pbs_rstat.1B
│   │   ├── pbs_rsub.1B
│   │   ├── pbs_sched_attributes.7B
│   │   ├── pbs_server_attributes.7B
│   │   ├── pbsdsh.1B
│   │   ├── qalter.1B
│   │   ├── qdel.1B
│   │   ├── qhold.1B
│   │   ├── qmove.1B
│   │   ├── qmsg.1B
│   │   ├── qorder.1B
│   │   ├── qrerun.1B
│   │   ├── qrls.1B
│   │   ├── qselect.1B
│   │   ├── qsig.1B
│   │   ├── qstat.1B
│   │   └── qsub.1B
│   ├── man3/
│   │   ├── pbs_alterjob.3B
│   │   ├── pbs_asyrunjob.3B
│   │   ├── pbs_confirmresv.3B
│   │   ├── pbs_connect.3B
│   │   ├── pbs_default.3B
│   │   ├── pbs_deljob.3B
│   │   ├── pbs_delresv.3B
│   │   ├── pbs_disconnect.3B
│   │   ├── pbs_geterrmsg.3B
│   │   ├── pbs_holdjob.3B
│   │   ├── pbs_locjob.3B
│   │   ├── pbs_manager.3B
│   │   ├── pbs_modify_resv.3B
│   │   ├── pbs_movejob.3B
│   │   ├── pbs_msgjob.3B
│   │   ├── pbs_orderjob.3B
│   │   ├── pbs_preempt_jobs.3B
│   │   ├── pbs_relnodesjob.3B
│   │   ├── pbs_rerunjob.3B
│   │   ├── pbs_rescquery.3B
│   │   ├── pbs_rescreserve.3B
│   │   ├── pbs_rlsjob.3B
│   │   ├── pbs_runjob.3B
│   │   ├── pbs_selectjob.3B
│   │   ├── pbs_selstat.3B
│   │   ├── pbs_sigjob.3B
│   │   ├── pbs_stagein.3B
│   │   ├── pbs_statfree.3B
│   │   ├── pbs_stathook.3B
│   │   ├── pbs_stathost.3B
│   │   ├── pbs_statjob.3B
│   │   ├── pbs_statnode.3B
│   │   ├── pbs_statque.3B
│   │   ├── pbs_statresv.3B
│   │   ├── pbs_statrsc.3B
│   │   ├── pbs_statsched.3B
│   │   ├── pbs_statserver.3B
│   │   ├── pbs_statvnode.3B
│   │   ├── pbs_submit.3B
│   │   ├── pbs_submit_resv.3B
│   │   ├── pbs_submitresv.3B
│   │   ├── pbs_tclapi.3B
│   │   ├── pbs_terminate.3B
│   │   ├── rm.3B
│   │   └── tm.3
│   └── man8/
│       ├── mpiexec.8B
│       ├── pbs.8B
│       ├── pbs.conf.8B
│       ├── pbs_account.8B
│       ├── pbs_attach.8B
│       ├── pbs_comm.8B
│       ├── pbs_dataservice.8B
│       ├── pbs_ds_password.8B
│       ├── pbs_hostn.8B
│       ├── pbs_idled.8B
│       ├── pbs_iff.8B
│       ├── pbs_interactive.8B
│       ├── pbs_lamboot.8B
│       ├── pbs_mkdirs.8B
│       ├── pbs_mom.8B
│       ├── pbs_mpihp.8B
│       ├── pbs_mpilam.8B
│       ├── pbs_mpirun.8B
│       ├── pbs_probe.8B
│       ├── pbs_sched.8B
│       ├── pbs_server.8B
│       ├── pbs_snapshot.8B
│       ├── pbs_tclsh.8B
│       ├── pbs_tmrsh.8B
│       ├── pbs_topologyinfo.8B
│       ├── pbs_wish.8B
│       ├── pbsfs.8B
│       ├── pbsnodes.8B
│       ├── pbsrun.8B
│       ├── pbsrun_unwrap.8B
│       ├── pbsrun_wrap.8B
│       ├── printjob.8B
│       ├── qdisable.8B
│       ├── qenable.8B
│       ├── qmgr.8B
│       ├── qrun.8B
│       ├── qstart.8B
│       ├── qstop.8B
│       ├── qterm.8B
│       ├── tracejob.8B
│       └── win_postinstall.py.8B
├── m4/
│   ├── disable_shell_pipe.m4
│   ├── disable_syslog.m4
│   ├── enable_alps.m4
│   ├── enable_ptl.m4
│   ├── pbs_decl_epoll.m4
│   ├── pbs_decl_epoll_pwait.m4
│   ├── pbs_decl_h_errno.m4
│   ├── pbs_decl_ppoll.m4
│   ├── pbs_decl_socklen_t.m4
│   ├── pbs_patch_libtool.m4
│   ├── pbs_systemd_unitdir.m4
│   ├── pbs_version.m4
│   ├── security_check.m4
│   ├── with_cjson.m4
│   ├── with_core_limit.m4
│   ├── with_database_dir.m4
│   ├── with_database_port.m4
│   ├── with_database_user.m4
│   ├── with_editline.m4
│   ├── with_expat.m4
│   ├── with_hwloc.m4
│   ├── with_krbauth.m4
│   ├── with_libical.m4
│   ├── with_libz.m4
│   ├── with_min_stack_limit.m4
│   ├── with_pbs_conf_file.m4
│   ├── with_pmix.m4
│   ├── with_python.m4
│   ├── with_sendmail.m4
│   ├── with_server_home.m4
│   ├── with_server_name_file.m4
│   ├── with_swig.m4
│   ├── with_tcl.m4
│   ├── with_tclatrsep.m4
│   ├── with_tmpdir.m4
│   ├── with_unsupported_dir.m4
│   └── with_xauth.m4
├── openpbs-rpmlintrc
├── openpbs.spec.in
├── src/
│   ├── Makefile.am
│   ├── cmds/
│   │   ├── Makefile.am
│   │   ├── mpiexec.in
│   │   ├── pbs_attach.c
│   │   ├── pbs_attach_sup.c
│   │   ├── pbs_dataservice.c
│   │   ├── pbs_demux.c
│   │   ├── pbs_ds_password.c
│   │   ├── pbs_lamboot.in
│   │   ├── pbs_mpihp.in
│   │   ├── pbs_mpilam.in
│   │   ├── pbs_mpirun.in
│   │   ├── pbs_ralter.c
│   │   ├── pbs_rdel.c
│   │   ├── pbs_release_nodes.c
│   │   ├── pbs_remsh.in
│   │   ├── pbs_rstat.c
│   │   ├── pbs_rsub.c
│   │   ├── pbs_tmrsh.c
│   │   ├── pbsdsh.c
│   │   ├── pbsnodes.c
│   │   ├── pbsrun.in
│   │   ├── pbsrun_unwrap.in
│   │   ├── pbsrun_wrap.in
│   │   ├── qalter.c
│   │   ├── qdel.c
│   │   ├── qdisable.c
│   │   ├── qenable.c
│   │   ├── qhold.c
│   │   ├── qmgr.c
│   │   ├── qmgr_sup.c
│   │   ├── qmove.c
│   │   ├── qmsg.c
│   │   ├── qorder.c
│   │   ├── qrerun.c
│   │   ├── qrls.c
│   │   ├── qrun.c
│   │   ├── qselect.c
│   │   ├── qsig.c
│   │   ├── qstart.c
│   │   ├── qstat.c
│   │   ├── qstop.c
│   │   ├── qsub.c
│   │   ├── qsub_sup.c
│   │   ├── qterm.c
│   │   ├── sample.qstatrc
│   │   └── scripts/
│   │       ├── Makefile.am
│   │       ├── limits.pbs_mom.compat
│   │       ├── limits.post_services.compat
│   │       ├── modulefile.in
│   │       ├── pbs.csh
│   │       ├── pbs.service.in
│   │       ├── pbs.sh
│   │       ├── pbs_bootcheck.py
│   │       ├── pbs_dataservice
│   │       ├── pbs_ds_password
│   │       ├── pbs_habitat.in
│   │       ├── pbs_init.d.in
│   │       ├── pbs_poerun.in
│   │       ├── pbs_postinstall.in
│   │       ├── pbs_posttrans
│   │       ├── pbs_preuninstall
│   │       ├── pbs_reload.in
│   │       ├── pbs_server
│   │       ├── pbs_snapshot
│   │       ├── pbs_topologyinfo
│   │       ├── pbs_topologyinfo.py
│   │       ├── pbsrun.ch_gm.init.in
│   │       ├── pbsrun.ch_mx.init.in
│   │       ├── pbsrun.gm_mpd.init.in
│   │       ├── pbsrun.intelmpi.init.in
│   │       ├── pbsrun.mpich2.init.in
│   │       ├── pbsrun.mvapich1.init.in
│   │       ├── pbsrun.mvapich2.init.in
│   │       ├── pbsrun.mx_mpd.init.in
│   │       ├── pbsrun.poe.in
│   │       ├── pbsrun.poe.init.in
│   │       ├── printjob
│   │       └── sgiMPI.awk
│   ├── hooks/
│   │   ├── Makefile.am
│   │   └── cgroups/
│   │       ├── pbs_cgroups.CF
│   │       ├── pbs_cgroups.HK
│   │       └── pbs_cgroups.PY
│   ├── iff/
│   │   ├── Makefile.am
│   │   └── iff2.c
│   ├── include/
│   │   ├── Long.h
│   │   ├── Long_.h
│   │   ├── Makefile.am
│   │   ├── acct.h
│   │   ├── attribute.h
│   │   ├── auth.h
│   │   ├── avltree.h
│   │   ├── basil.h
│   │   ├── batch_request.h
│   │   ├── bitfield.h
│   │   ├── cmds.h
│   │   ├── credential.h
│   │   ├── dedup_jobids.h
│   │   ├── dis.h
│   │   ├── grunt.h
│   │   ├── hook.h
│   │   ├── hook_func.h
│   │   ├── ifl_internal.h
│   │   ├── job.h
│   │   ├── libauth.h
│   │   ├── libpbs.h
│   │   ├── libsec.h
│   │   ├── libutil.h
│   │   ├── list_link.h
│   │   ├── log.h
│   │   ├── mom_func.h
│   │   ├── mom_hook_func.h
│   │   ├── mom_server.h
│   │   ├── mom_vnode.h
│   │   ├── net_connect.h
│   │   ├── pbs_array_list.h
│   │   ├── pbs_assert.h
│   │   ├── pbs_client_thread.h
│   │   ├── pbs_db.h
│   │   ├── pbs_ecl.h
│   │   ├── pbs_entlim.h
│   │   ├── pbs_error.h
│   │   ├── pbs_idx.h
│   │   ├── pbs_ifl.h
│   │   ├── pbs_internal.h
│   │   ├── pbs_json.h
│   │   ├── pbs_license.h
│   │   ├── pbs_mpp.h
│   │   ├── pbs_nodes.h
│   │   ├── pbs_python.h
│   │   ├── pbs_python_private.h
│   │   ├── pbs_reliable.h
│   │   ├── pbs_sched.h
│   │   ├── pbs_share.h
│   │   ├── pbs_v1_module_common.i
│   │   ├── pbs_version.h.in
│   │   ├── placementsets.h
│   │   ├── port_forwarding.h
│   │   ├── portability.h
│   │   ├── provision.h
│   │   ├── qmgr.h
│   │   ├── queue.h
│   │   ├── range.h
│   │   ├── reservation.h
│   │   ├── resmon.h
│   │   ├── resource.h
│   │   ├── resv_node.h
│   │   ├── rm.h
│   │   ├── sched_cmds.h
│   │   ├── server.h
│   │   ├── server_limits.h
│   │   ├── site_job_attr_def.h
│   │   ├── site_job_attr_enum.h
│   │   ├── site_qmgr_node_print.h
│   │   ├── site_qmgr_que_print.h
│   │   ├── site_qmgr_sched_print.h
│   │   ├── site_qmgr_svr_print.h
│   │   ├── site_que_attr_def.h
│   │   ├── site_que_attr_enum.h
│   │   ├── site_queue.h
│   │   ├── site_resc_attr_def.h
│   │   ├── site_resv_attr_def.h
│   │   ├── site_resv_attr_enum.h
│   │   ├── site_sched_attr_def.h
│   │   ├── site_sched_attr_enum.h
│   │   ├── site_svr_attr_def.h
│   │   ├── site_svr_attr_enum.h
│   │   ├── svrfunc.h
│   │   ├── ticket.h
│   │   ├── tm.h
│   │   ├── tm_.h
│   │   ├── tpp.h
│   │   ├── tracking.h
│   │   ├── user.h
│   │   └── work_task.h
│   ├── lib/
│   │   ├── Libattr/
│   │   │   ├── Long_.c
│   │   │   ├── Makefile.am
│   │   │   ├── attr_atomic.c
│   │   │   ├── attr_fn_acl.c
│   │   │   ├── attr_fn_arst.c
│   │   │   ├── attr_fn_b.c
│   │   │   ├── attr_fn_c.c
│   │   │   ├── attr_fn_entlim.c
│   │   │   ├── attr_fn_f.c
│   │   │   ├── attr_fn_hold.c
│   │   │   ├── attr_fn_intr.c
│   │   │   ├── attr_fn_l.c
│   │   │   ├── attr_fn_ll.c
│   │   │   ├── attr_fn_resc.c
│   │   │   ├── attr_fn_size.c
│   │   │   ├── attr_fn_str.c
│   │   │   ├── attr_fn_time.c
│   │   │   ├── attr_fn_unkn.c
│   │   │   ├── attr_func.c
│   │   │   ├── attr_node_func.c
│   │   │   ├── attr_resc_func.c
│   │   │   ├── master_job_attr_def.xml
│   │   │   ├── master_node_attr_def.xml
│   │   │   ├── master_queue_attr_def.xml
│   │   │   ├── master_resc_def_all.xml
│   │   │   ├── master_resv_attr_def.xml
│   │   │   ├── master_sched_attr_def.xml
│   │   │   ├── master_svr_attr_def.xml
│   │   │   ├── resc_map.c
│   │   │   ├── strToL.c
│   │   │   ├── strTouL.c
│   │   │   └── uLTostr.c
│   │   ├── Libauth/
│   │   │   ├── Makefile.am
│   │   │   ├── README.md
│   │   │   ├── gss/
│   │   │   │   ├── Makefile.am
│   │   │   │   └── pbs_gss.c
│   │   │   └── munge/
│   │   │       ├── Makefile.am
│   │   │       └── munge_supp.c
│   │   ├── Libcmds/
│   │   │   ├── batch_status.c
│   │   │   ├── check_job_script.c
│   │   │   ├── chk_Jrange.c
│   │   │   ├── ck_job_name.c
│   │   │   ├── cmds_common.c
│   │   │   ├── cnt2server.c
│   │   │   ├── cs_error.c
│   │   │   ├── cvtdate.c
│   │   │   ├── err_handling.c
│   │   │   ├── get_attr.c
│   │   │   ├── get_dataservice_usr.c
│   │   │   ├── get_server.c
│   │   │   ├── isjobid.c
│   │   │   ├── locate_job.c
│   │   │   ├── parse_at.c
│   │   │   ├── parse_depend.c
│   │   │   ├── parse_destid.c
│   │   │   ├── parse_equal.c
│   │   │   ├── parse_jobid.c
│   │   │   ├── parse_stage.c
│   │   │   ├── prepare_path.c
│   │   │   ├── set_attr.c
│   │   │   └── set_resource.c
│   │   ├── Libdb/
│   │   │   ├── Makefile.am
│   │   │   └── pgsql/
│   │   │       ├── Makefile.am
│   │   │       ├── db_attr.c
│   │   │       ├── db_common.c
│   │   │       ├── db_job.c
│   │   │       ├── db_node.c
│   │   │       ├── db_postgres.h
│   │   │       ├── db_que.c
│   │   │       ├── db_resv.c
│   │   │       ├── db_sched.c
│   │   │       ├── db_svr.c
│   │   │       ├── pbs_db_env
│   │   │       ├── pbs_db_schema.sql
│   │   │       ├── pbs_db_utility
│   │   │       ├── pbs_ds_systemd
│   │   │       └── pbs_schema_upgrade
│   │   ├── Libdis/
│   │   │   ├── dis.c
│   │   │   ├── dis_.h
│   │   │   ├── dis_helpers.c
│   │   │   ├── discui_.c
│   │   │   ├── discul_.c
│   │   │   ├── discull_.c
│   │   │   ├── disi10d_.c
│   │   │   ├── disi10l_.c
│   │   │   ├── disiui_.c
│   │   │   ├── disp10d_.c
│   │   │   ├── disp10l_.c
│   │   │   ├── disrcs.c
│   │   │   ├── disrd.c
│   │   │   ├── disrf.c
│   │   │   ├── disrfcs.c
│   │   │   ├── disrfst.c
│   │   │   ├── disrl.c
│   │   │   ├── disrl_.c
│   │   │   ├── disrsc.c
│   │   │   ├── disrsi.c
│   │   │   ├── disrsi_.c
│   │   │   ├── disrsl.c
│   │   │   ├── disrsl_.c
│   │   │   ├── disrsll_.c
│   │   │   ├── disrss.c
│   │   │   ├── disrst.c
│   │   │   ├── disruc.c
│   │   │   ├── disrui.c
│   │   │   ├── disrul.c
│   │   │   ├── disrull.c
│   │   │   ├── disrus.c
│   │   │   ├── diswcs.c
│   │   │   ├── diswf.c
│   │   │   ├── diswl_.c
│   │   │   ├── diswsi.c
│   │   │   ├── diswsl.c
│   │   │   ├── diswui.c
│   │   │   ├── diswui_.c
│   │   │   ├── diswul.c
│   │   │   ├── diswull.c
│   │   │   └── ps_dis.c
│   │   ├── Libecl/
│   │   │   ├── ecl_verify.c
│   │   │   ├── ecl_verify_datatypes.c
│   │   │   ├── ecl_verify_object_name.c
│   │   │   ├── ecl_verify_values.c
│   │   │   └── pbs_client_thread.c
│   │   ├── Libifl/
│   │   │   ├── DIS_decode.c
│   │   │   ├── DIS_encode.c
│   │   │   ├── Makefile.am
│   │   │   ├── PBS_attr.c
│   │   │   ├── advise.c
│   │   │   ├── auth.c
│   │   │   ├── conn_table.c
│   │   │   ├── dec_DelJobList.c
│   │   │   ├── dec_reply.c
│   │   │   ├── enc_reply.c
│   │   │   ├── entlim_parse.c
│   │   │   ├── get_svrport.c
│   │   │   ├── grunt_parse.c
│   │   │   ├── ifl_impl.c
│   │   │   ├── ifl_pointers.c
│   │   │   ├── ifl_util.c
│   │   │   ├── int_cred.c
│   │   │   ├── int_hook.c
│   │   │   ├── int_jcred.c
│   │   │   ├── int_manage2.c
│   │   │   ├── int_manager.c
│   │   │   ├── int_modify_resv.c
│   │   │   ├── int_msg2.c
│   │   │   ├── int_rdrpy.c
│   │   │   ├── int_sig2.c
│   │   │   ├── int_status.c
│   │   │   ├── int_status2.c
│   │   │   ├── int_submit.c
│   │   │   ├── int_submit_resv.c
│   │   │   ├── int_ucred.c
│   │   │   ├── list_link.c
│   │   │   ├── pbsD_Preempt_Jobs.c
│   │   │   ├── pbsD_alterjob.c
│   │   │   ├── pbsD_confirmresv.c
│   │   │   ├── pbsD_connect.c
│   │   │   ├── pbsD_defschreply.c
│   │   │   ├── pbsD_deljob.c
│   │   │   ├── pbsD_deljoblist.c
│   │   │   ├── pbsD_delresv.c
│   │   │   ├── pbsD_holdjob.c
│   │   │   ├── pbsD_locjob.c
│   │   │   ├── pbsD_manager.c
│   │   │   ├── pbsD_modify_resv.c
│   │   │   ├── pbsD_movejob.c
│   │   │   ├── pbsD_msgjob.c
│   │   │   ├── pbsD_orderjo.c
│   │   │   ├── pbsD_rerunjo.c
│   │   │   ├── pbsD_resc.c
│   │   │   ├── pbsD_rlsjob.c
│   │   │   ├── pbsD_runjob.c
│   │   │   ├── pbsD_selectj.c
│   │   │   ├── pbsD_sigjob.c
│   │   │   ├── pbsD_stagein.c
│   │   │   ├── pbsD_stathook.c
│   │   │   ├── pbsD_stathost.c
│   │   │   ├── pbsD_statjob.c
│   │   │   ├── pbsD_statnode.c
│   │   │   ├── pbsD_statque.c
│   │   │   ├── pbsD_statresv.c
│   │   │   ├── pbsD_statrsc.c
│   │   │   ├── pbsD_statsched.c
│   │   │   ├── pbsD_statsrv.c
│   │   │   ├── pbsD_submit.c
│   │   │   ├── pbsD_submit_resv.c
│   │   │   ├── pbsD_termin.c
│   │   │   ├── pbs_delstatfree.c
│   │   │   ├── pbs_get_attribute_errors.c
│   │   │   ├── pbs_geterrmg.c
│   │   │   ├── pbs_geterrno.c
│   │   │   ├── pbs_ifl.i
│   │   │   ├── pbs_loadconf.c
│   │   │   ├── pbs_quote_parse.c
│   │   │   ├── pbs_statfree.c
│   │   │   ├── rm.c
│   │   │   ├── strsep.c
│   │   │   ├── tcp_dis.c
│   │   │   ├── tm.c
│   │   │   └── xml_encode_decode.c
│   │   ├── Libjson/
│   │   │   ├── Makefile.am
│   │   │   └── cJSON/
│   │   │       ├── Makefile.am
│   │   │       └── pbs_cjson.c
│   │   ├── Liblicensing/
│   │   │   ├── Makefile.am
│   │   │   ├── liblicense.h
│   │   │   └── license_client.c
│   │   ├── Liblog/
│   │   │   ├── Makefile.am
│   │   │   ├── chk_file_sec.c
│   │   │   ├── log_event.c
│   │   │   ├── pbs_log.c
│   │   │   ├── pbs_messages.c
│   │   │   └── setup_env.c
│   │   ├── Libnet/
│   │   │   ├── Makefile.am
│   │   │   ├── get_hostaddr.c
│   │   │   ├── hnls.c
│   │   │   ├── net_client.c
│   │   │   ├── net_server.c
│   │   │   ├── net_set_clse.c
│   │   │   └── port_forwarding.c
│   │   ├── Libpbs/
│   │   │   ├── Makefile.am
│   │   │   └── pbs.pc.in
│   │   ├── Libpython/
│   │   │   ├── Makefile.am
│   │   │   ├── common_python_utils.c
│   │   │   ├── module_pbs_v1.c
│   │   │   ├── pbs_python_external.c
│   │   │   ├── pbs_python_import_types.c
│   │   │   ├── pbs_python_svr_external.c
│   │   │   ├── pbs_python_svr_internal.c
│   │   │   ├── pbs_python_svr_size_type.c
│   │   │   └── shared_python_utils.c
│   │   ├── Libsec/
│   │   │   ├── Makefile.am
│   │   │   └── cs_standard.c
│   │   ├── Libsite/
│   │   │   ├── Makefile.am
│   │   │   ├── site_allow_u.c
│   │   │   ├── site_alt_rte.c
│   │   │   ├── site_check_u.c
│   │   │   ├── site_map_usr.c
│   │   │   ├── site_mom_chu.c
│   │   │   ├── site_mom_ckp.c
│   │   │   └── site_mom_jst.c
│   │   ├── Libtpp/
│   │   │   ├── Makefile.am
│   │   │   ├── tpp_client.c
│   │   │   ├── tpp_em.c
│   │   │   ├── tpp_internal.h
│   │   │   ├── tpp_platform.c
│   │   │   ├── tpp_router.c
│   │   │   ├── tpp_transport.c
│   │   │   └── tpp_util.c
│   │   ├── Libutil/
│   │   │   ├── Makefile.am
│   │   │   ├── avltree.c
│   │   │   ├── daemon_protect.c
│   │   │   ├── dedup_jobids.c
│   │   │   ├── entlim.c
│   │   │   ├── execvnode_seq_util.c
│   │   │   ├── get_hostname.c
│   │   │   ├── hook.c
│   │   │   ├── misc_utils.c
│   │   │   ├── pbs_aes_encrypt.c
│   │   │   ├── pbs_array_list.c
│   │   │   ├── pbs_ical.c
│   │   │   ├── pbs_idx.c
│   │   │   ├── pbs_secrets.c
│   │   │   ├── range.c
│   │   │   ├── thread_utils.c
│   │   │   └── work_task.c
│   │   └── Makefile.am
│   ├── modules/
│   │   ├── Makefile.am
│   │   └── python/
│   │       ├── Makefile.am
│   │       ├── pbs/
│   │       │   ├── __init__.py
│   │       │   └── v1/
│   │       │       ├── __init__.py
│   │       │       ├── _attr_types.py
│   │       │       ├── _base_types.py
│   │       │       ├── _exc_types.py
│   │       │       ├── _export_types.py
│   │       │       ├── _pmi_cray.py
│   │       │       ├── _pmi_none.py
│   │       │       ├── _pmi_sgi.py
│   │       │       ├── _pmi_types.py
│   │       │       ├── _pmi_utils.py
│   │       │       └── _svr_types.py
│   │       ├── pbs_hooks/
│   │       │   ├── PBS_alps_inventory_check.HK
│   │       │   ├── PBS_alps_inventory_check.PY
│   │       │   ├── PBS_cray_atom.CF
│   │       │   ├── PBS_cray_atom.HK
│   │       │   ├── PBS_cray_atom.PY
│   │       │   ├── PBS_power.CF
│   │       │   ├── PBS_power.HK
│   │       │   ├── PBS_power.PY
│   │       │   ├── PBS_xeon_phi_provision.HK
│   │       │   └── PBS_xeon_phi_provision.PY
│   │       ├── pbs_v1_module_init.c
│   │       ├── setup.cfg
│   │       └── setup.py
│   ├── mom_rcp/
│   │   ├── Makefile.am
│   │   ├── README
│   │   ├── extern.h
│   │   ├── pathnames.h
│   │   ├── pbs_stat.h
│   │   ├── rcp.c
│   │   ├── replace.c
│   │   └── util.c
│   ├── resmom/
│   │   ├── Makefile.am
│   │   ├── catch_child.c
│   │   ├── job_recov_fs.c
│   │   ├── linux/
│   │   │   ├── alps.c
│   │   │   ├── mom_func.c
│   │   │   ├── mom_mach.c
│   │   │   ├── mom_mach.h
│   │   │   ├── mom_start.c
│   │   │   └── pe_input.c
│   │   ├── mock_run.c
│   │   ├── mock_run.h
│   │   ├── mom_comm.c
│   │   ├── mom_hook_func.c
│   │   ├── mom_inter.c
│   │   ├── mom_main.c
│   │   ├── mom_pmix.c
│   │   ├── mom_pmix.h
│   │   ├── mom_server.c
│   │   ├── mom_updates_bundle.c
│   │   ├── mom_vnode.c
│   │   ├── mom_walltime.c
│   │   ├── popen.c
│   │   ├── prolog.c
│   │   ├── renew_creds.c
│   │   ├── renew_creds.h
│   │   ├── requests.c
│   │   ├── rm_dep.h
│   │   ├── stage_func.c
│   │   ├── start_exec.c
│   │   └── vnode_storage.c
│   ├── scheduler/
│   │   ├── Makefile.am
│   │   ├── buckets.cpp
│   │   ├── buckets.h
│   │   ├── check.cpp
│   │   ├── check.h
│   │   ├── config.h
│   │   ├── constant.h
│   │   ├── data_types.h
│   │   ├── dedtime.cpp
│   │   ├── dedtime.h
│   │   ├── fairshare.cpp
│   │   ├── fairshare.h
│   │   ├── fifo.cpp
│   │   ├── fifo.h
│   │   ├── get_4byte.cpp
│   │   ├── globals.cpp
│   │   ├── globals.h
│   │   ├── job_info.cpp
│   │   ├── job_info.h
│   │   ├── limits.cpp
│   │   ├── limits_if.h
│   │   ├── list_order.awk
│   │   ├── misc.cpp
│   │   ├── misc.h
│   │   ├── multi_threading.cpp
│   │   ├── multi_threading.h
│   │   ├── node_info.cpp
│   │   ├── node_info.h
│   │   ├── node_partition.cpp
│   │   ├── node_partition.h
│   │   ├── parse.cpp
│   │   ├── parse.h
│   │   ├── pbs_bitmap.cpp
│   │   ├── pbs_bitmap.h
│   │   ├── pbs_dedicated
│   │   ├── pbs_holidays
│   │   ├── pbs_holidays.2017
│   │   ├── pbs_resource_group
│   │   ├── pbs_sched.cpp
│   │   ├── pbs_sched_bare.cpp
│   │   ├── pbs_sched_config
│   │   ├── pbs_sched_utils.cpp
│   │   ├── pbsfs.cpp
│   │   ├── prev_job_info.cpp
│   │   ├── prev_job_info.h
│   │   ├── prime.cpp
│   │   ├── prime.h
│   │   ├── queue.cpp
│   │   ├── queue.h
│   │   ├── queue_info.cpp
│   │   ├── queue_info.h
│   │   ├── resource.cpp
│   │   ├── resource.h
│   │   ├── resource_resv.cpp
│   │   ├── resource_resv.h
│   │   ├── resv_info.cpp
│   │   ├── resv_info.h
│   │   ├── sched_exception.cpp
│   │   ├── sched_ifl_wrappers.cpp
│   │   ├── server_info.cpp
│   │   ├── server_info.h
│   │   ├── simulate.cpp
│   │   ├── simulate.h
│   │   ├── site_code.cpp
│   │   ├── site_code.h
│   │   ├── site_data.h
│   │   ├── sort.cpp
│   │   ├── sort.h
│   │   ├── state_count.cpp
│   │   └── state_count.h
│   ├── server/
│   │   ├── Makefile.am
│   │   ├── accounting.c
│   │   ├── array_func.c
│   │   ├── attr_recov.c
│   │   ├── attr_recov_db.c
│   │   ├── checkkey.c
│   │   ├── daemon_info.c
│   │   ├── dis_read.c
│   │   ├── failover.c
│   │   ├── geteusernam.c
│   │   ├── hook_func.c
│   │   ├── issue_request.c
│   │   ├── jattr_get_set.c
│   │   ├── job_func.c
│   │   ├── job_recov_db.c
│   │   ├── job_route.c
│   │   ├── license_client.c
│   │   ├── licensing_func.c
│   │   ├── mom_info.c
│   │   ├── nattr_get_set.c
│   │   ├── node_func.c
│   │   ├── node_manager.c
│   │   ├── node_recov_db.c
│   │   ├── pbs_comm.c
│   │   ├── pbs_db_func.c
│   │   ├── pbsd_init.c
│   │   ├── pbsd_main.c
│   │   ├── process_request.c
│   │   ├── qattr_get_set.c
│   │   ├── queue_func.c
│   │   ├── queue_recov_db.c
│   │   ├── rattr_get_set.c
│   │   ├── reply_send.c
│   │   ├── req_cred.c
│   │   ├── req_delete.c
│   │   ├── req_getcred.c
│   │   ├── req_holdjob.c
│   │   ├── req_jobobit.c
│   │   ├── req_locate.c
│   │   ├── req_manager.c
│   │   ├── req_message.c
│   │   ├── req_modify.c
│   │   ├── req_movejob.c
│   │   ├── req_preemptjob.c
│   │   ├── req_quejob.c
│   │   ├── req_register.c
│   │   ├── req_rerun.c
│   │   ├── req_rescq.c
│   │   ├── req_runjob.c
│   │   ├── req_select.c
│   │   ├── req_shutdown.c
│   │   ├── req_signal.c
│   │   ├── req_stat.c
│   │   ├── req_track.c
│   │   ├── resc_attr.c
│   │   ├── run_sched.c
│   │   ├── sattr_get_set.c
│   │   ├── sched_attr_get_set.c
│   │   ├── sched_func.c
│   │   ├── setup_resc.c
│   │   ├── stat_job.c
│   │   ├── svr_chk_owner.c
│   │   ├── svr_connect.c
│   │   ├── svr_credfunc.c
│   │   ├── svr_func.c
│   │   ├── svr_jobfunc.c
│   │   ├── svr_mail.c
│   │   ├── svr_movejob.c
│   │   ├── svr_recov_db.c
│   │   ├── svr_resccost.c
│   │   ├── user_func.c
│   │   └── vnparse.c
│   ├── tools/
│   │   ├── Makefile.am
│   │   ├── chk_tree.c
│   │   ├── create_env_file.sh
│   │   ├── hostn.c
│   │   ├── pbsTclInit.c
│   │   ├── pbsTkInit.c
│   │   ├── pbs_ds_monitor.c
│   │   ├── pbs_idled.c
│   │   ├── pbs_probe.c
│   │   ├── pbs_python.c
│   │   ├── pbs_sleep.c
│   │   ├── pbs_tclWrap.c
│   │   ├── pbs_upgrade_job.c
│   │   ├── printjob.c
│   │   ├── rstester.c
│   │   ├── site_tclWrap.c
│   │   ├── tracejob.c
│   │   ├── tracejob.h
│   │   └── wrap_tcl.sh.in
│   └── unsupported/
│       ├── Makefile.am
│       ├── NodeHealthCheck.json
│       ├── NodeHealthCheck.py
│       ├── README
│       ├── ReliableJobStartup.py
│       ├── cray_readme
│       ├── load_balance.py
│       ├── mom_dyn_res.py
│       ├── pbs-mailer/
│       │   ├── README.md
│       │   ├── debian/
│       │   │   ├── changelog
│       │   │   ├── compat
│       │   │   ├── conffiles
│       │   │   ├── control
│       │   │   ├── pbs-mailer.service
│       │   │   └── rules
│       │   ├── pbs_mail.json
│       │   ├── pbs_mail_saver
│       │   ├── pbs_mail_sender
│       │   ├── release-deb.sh
│       │   └── release-rpm.sh
│       ├── pbs_config
│       ├── pbs_jobs_at.8B
│       ├── pbs_loganalyzer
│       ├── pbs_output.py
│       ├── pbs_rescquery.3B
│       ├── pbs_rmget.8B
│       ├── pbs_rmget.c
│       ├── pbs_stat
│       ├── rapid_inter.py
│       ├── renew-test/
│       │   ├── base64.c
│       │   ├── base64.h
│       │   └── renew-test.c
│       ├── run_pelog_shell.ini
│       ├── run_pelog_shell.py
│       ├── sgiICEplacement.sh
│       ├── sgiICEvnode.sh
│       └── sgigenvnodelist.awk
├── test/
│   ├── Makefile.am
│   ├── fw/
│   │   ├── MANIFEST.in
│   │   ├── Makefile.am
│   │   ├── bin/
│   │   │   ├── pbs_as
│   │   │   ├── pbs_benchpress
│   │   │   ├── pbs_compare_results
│   │   │   ├── pbs_config
│   │   │   ├── pbs_cov
│   │   │   ├── pbs_loganalyzer
│   │   │   ├── pbs_py_spawn
│   │   │   ├── pbs_snapshot
│   │   │   ├── pbs_stat
│   │   │   ├── pbs_swigify
│   │   │   └── pbs_sys_report
│   │   ├── doc/
│   │   │   ├── caveats.rst
│   │   │   ├── commands.rst
│   │   │   ├── conf.py
│   │   │   ├── howtotest.rst
│   │   │   ├── index.rst
│   │   │   ├── install.rst
│   │   │   ├── intro.rst
│   │   │   ├── make.bat
│   │   │   ├── ptl.rst
│   │   │   └── tutorial.rst
│   │   ├── ptl/
│   │   │   ├── __init__.py.in
│   │   │   ├── lib/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── pbs_api_to_cli.py
│   │   │   │   ├── pbs_ifl_mock.py
│   │   │   │   ├── pbs_testlib.py
│   │   │   │   ├── ptl_batchutils.py
│   │   │   │   ├── ptl_comm.py
│   │   │   │   ├── ptl_config.py
│   │   │   │   ├── ptl_constants.py
│   │   │   │   ├── ptl_entities.py
│   │   │   │   ├── ptl_error.py
│   │   │   │   ├── ptl_expect_action.py
│   │   │   │   ├── ptl_fairshare.py
│   │   │   │   ├── ptl_mom.py
│   │   │   │   ├── ptl_object.py
│   │   │   │   ├── ptl_resourceresv.py
│   │   │   │   ├── ptl_sched.py
│   │   │   │   ├── ptl_server.py
│   │   │   │   ├── ptl_service.py
│   │   │   │   ├── ptl_types.py
│   │   │   │   └── ptl_wrappers.py
│   │   │   └── utils/
│   │   │       ├── __init__.py
│   │   │       ├── pbs_anonutils.py
│   │   │       ├── pbs_cliutils.py
│   │   │       ├── pbs_covutils.py
│   │   │       ├── pbs_crayutils.py
│   │   │       ├── pbs_dshutils.py
│   │   │       ├── pbs_logutils.py
│   │   │       ├── pbs_procutils.py
│   │   │       ├── pbs_snaputils.py
│   │   │       ├── pbs_testsuite.py
│   │   │       ├── pbs_testusers.py
│   │   │       └── plugins/
│   │   │           ├── __init__.py
│   │   │           ├── ptl_report_json.py
│   │   │           ├── ptl_test_data.py
│   │   │           ├── ptl_test_db.py
│   │   │           ├── ptl_test_info.py
│   │   │           ├── ptl_test_loader.py
│   │   │           ├── ptl_test_runner.py
│   │   │           └── ptl_test_tags.py
│   │   ├── ptl.csh
│   │   ├── ptl.sh
│   │   ├── ptlreport
│   │   ├── requirements.txt
│   │   └── setup.py.in
│   ├── scripts/
│   │   └── qsub_multi.sh
│   └── tests/
│       ├── Makefile.am
│       ├── __init__.py
│       ├── functional/
│       │   ├── __init__.py
│       │   ├── pbs_Rrecord_resources_used.py
│       │   ├── pbs_acct_log.py
│       │   ├── pbs_accumulate_resc_used.py
│       │   ├── pbs_acl_groups.py
│       │   ├── pbs_acl_host_moms.py
│       │   ├── pbs_acl_host_queue.py
│       │   ├── pbs_acl_host_server.py
│       │   ├── pbs_admin_suspend.py
│       │   ├── pbs_allpart.py
│       │   ├── pbs_alps_inventory_check_hook.py
│       │   ├── pbs_alps_release_tunables.py
│       │   ├── pbs_array_job_mail.py
│       │   ├── pbs_basil_parser_err.py
│       │   ├── pbs_basil_support.py
│       │   ├── pbs_calendaring.py
│       │   ├── pbs_cgroups_hook.py
│       │   ├── pbs_check_job_attrib.py
│       │   ├── pbs_checkpoint.py
│       │   ├── pbs_client_response.py
│       │   ├── pbs_complete_running_parent_job.py
│       │   ├── pbs_conf_resv_stale_vnode.py
│       │   ├── pbs_config.py
│       │   ├── pbs_cpuset.py
│       │   ├── pbs_cray_check_node_exclusivity.py
│       │   ├── pbs_cray_hyperthread.py
│       │   ├── pbs_cray_pagg_id.py
│       │   ├── pbs_cray_reliable_job_startup.py
│       │   ├── pbs_cray_smoketest.py
│       │   ├── pbs_cray_suspend_resume.py
│       │   ├── pbs_cray_vnode_per_numa.py
│       │   ├── pbs_cray_vnode_pool.py
│       │   ├── pbs_daemon_service_user.py
│       │   ├── pbs_dup_acc_log_for_resv.py
│       │   ├── pbs_eligible_time.py
│       │   ├── pbs_equiv_classes.py
│       │   ├── pbs_exceeded_resources_notification.py
│       │   ├── pbs_execjob_susp_resume.py
│       │   ├── pbs_fairshare.py
│       │   ├── pbs_gen_nodefile_on_sister_mom.py
│       │   ├── pbs_grunt.py
│       │   ├── pbs_highreslog.py
│       │   ├── pbs_holidays.py
│       │   ├── pbs_hook_config_os_env.py
│       │   ├── pbs_hook_crosslink_mom.py
│       │   ├── pbs_hook_debug_input.py
│       │   ├── pbs_hook_debug_nocrash.py
│       │   ├── pbs_hook_exechost_periodic.py
│       │   ├── pbs_hook_execjob_abort.py
│       │   ├── pbs_hook_execjob_end.py
│       │   ├── pbs_hook_execjob_prologue.py
│       │   ├── pbs_hook_jobobit.py
│       │   ├── pbs_hook_management.py
│       │   ├── pbs_hook_modifyvnode_state_changes.py
│       │   ├── pbs_hook_perf_stat.py
│       │   ├── pbs_hook_postqueuejob.py
│       │   ├── pbs_hook_set_attr.py
│       │   ├── pbs_hook_set_interrupt.py
│       │   ├── pbs_hook_set_jobenv.py
│       │   ├── pbs_hook_set_nonexist.py
│       │   ├── pbs_hook_timeout.py
│       │   ├── pbs_hook_unset_res.py
│       │   ├── pbs_hooksmoketest.py
│       │   ├── pbs_hookswig.py
│       │   ├── pbs_indirect_resources.py
│       │   ├── pbs_init_script.py
│       │   ├── pbs_job_array.py
│       │   ├── pbs_job_array_comment.py
│       │   ├── pbs_job_comment_on_resume.py
│       │   ├── pbs_job_default_group.py
│       │   ├── pbs_job_dependency.py
│       │   ├── pbs_job_purge.py
│       │   ├── pbs_job_requeue_timeout_error.py
│       │   ├── pbs_job_routing.py
│       │   ├── pbs_job_script.py
│       │   ├── pbs_job_sort_formula.py
│       │   ├── pbs_job_status_after_mom_hup.py
│       │   ├── pbs_job_task.py
│       │   ├── pbs_maintenance_reservations.py
│       │   ├── pbs_modifyresv_hook.py
│       │   ├── pbs_mom_hook_sync.py
│       │   ├── pbs_mom_hooks_test.py
│       │   ├── pbs_mom_job_dir.py
│       │   ├── pbs_mom_local_nodename.py
│       │   ├── pbs_mom_mock_run.py
│       │   ├── pbs_mom_walltime.py
│       │   ├── pbs_moved_job.py
│       │   ├── pbs_moved_job_local.py
│       │   ├── pbs_multi_sched.py
│       │   ├── pbs_multiple_execjob_launch_hook.py
│       │   ├── pbs_node_buckets.py
│       │   ├── pbs_node_jobs_restart.py
│       │   ├── pbs_node_jobs_restart_multinode.py
│       │   ├── pbs_node_rampdown.py
│       │   ├── pbs_node_rampdown_keep_select.py
│       │   ├── pbs_node_sleep_state.py
│       │   ├── pbs_nodes_json.py
│       │   ├── pbs_nodes_queues.py
│       │   ├── pbs_nonprint_characters.py
│       │   ├── pbs_offline_vnodes.py
│       │   ├── pbs_one_event_multiple_hooks.py
│       │   ├── pbs_only_explicit_psets.py
│       │   ├── pbs_only_small_files_over_tpp.py
│       │   ├── pbs_passing_environment_variable.py
│       │   ├── pbs_pbsnodes.py
│       │   ├── pbs_pbsnodes_output_trimmed.py
│       │   ├── pbs_peer.py
│       │   ├── pbs_periodic_constant.py
│       │   ├── pbs_power_provisioning_cray.py
│       │   ├── pbs_power_provisioning_sgi.py
│       │   ├── pbs_preemption.py
│       │   ├── pbs_printjob.py
│       │   ├── pbs_provisioning.py
│       │   ├── pbs_provisioning_enhancement.py
│       │   ├── pbs_python_restart_settings.py
│       │   ├── pbs_python_test.py
│       │   ├── pbs_qdel.py
│       │   ├── pbs_qmgr.py
│       │   ├── pbs_qrun.py
│       │   ├── pbs_qselect.py
│       │   ├── pbs_qstat.py
│       │   ├── pbs_qstat_2servers.py
│       │   ├── pbs_qstat_count.py
│       │   ├── pbs_qstat_formats.py
│       │   ├── pbs_qsub_direct_write.py
│       │   ├── pbs_qsub_opts_args.py
│       │   ├── pbs_qsub_remove_files.py
│       │   ├── pbs_qsub_script.py
│       │   ├── pbs_qsub_wblock.py
│       │   ├── pbs_que_resc_usage.py
│       │   ├── pbs_ralter.py
│       │   ├── pbs_release_limited_res_suspend.py
│       │   ├── pbs_reliable_job_startup.py
│       │   ├── pbs_resc_custom_perm.py
│       │   ├── pbs_resc_used_single_node.py
│       │   ├── pbs_reservations.py
│       │   ├── pbs_resource_multichunk.py
│       │   ├── pbs_resource_unset.py
│       │   ├── pbs_resource_usage_log.py
│       │   ├── pbs_resv_begin_hook.py
│       │   ├── pbs_resv_confirm_hook.py
│       │   ├── pbs_resv_end_hook.py
│       │   ├── pbs_resv_start_dur_end.py
│       │   ├── pbs_root_owned_script.py
│       │   ├── pbs_rstat.py
│       │   ├── pbs_runjob_hook.py
│       │   ├── pbs_sched_attr_updates.py
│       │   ├── pbs_sched_badstate.py
│       │   ├── pbs_sched_fifo.py
│       │   ├── pbs_sched_preempt_enforce_resumption.py
│       │   ├── pbs_sched_rerun.py
│       │   ├── pbs_sched_runjobwait.py
│       │   ├── pbs_sched_signal.py
│       │   ├── pbs_schedule_indirect_resources.py
│       │   ├── pbs_server_hook_attr.py
│       │   ├── pbs_server_periodic_hook.py
│       │   ├── pbs_set_enforcement.py
│       │   ├── pbs_sister_mom_crash.py
│       │   ├── pbs_snapshot_unittest.py
│       │   ├── pbs_soft_walltime.py
│       │   ├── pbs_stf.py
│       │   ├── pbs_strict_ordering.py
│       │   ├── pbs_support_linux_hook_event_phase1_2.py
│       │   ├── pbs_suspend_resume_accounting.py
│       │   ├── pbs_svr_dyn_res.py
│       │   ├── pbs_systemd.py
│       │   ├── pbs_test_entity_limits.py
│       │   ├── pbs_test_qorder.py
│       │   ├── pbs_test_run_count.py
│       │   ├── pbs_test_svr_dflt.py
│       │   ├── pbs_test_tpp.py
│       │   ├── pbs_trillion_jobid.py
│       │   ├── pbs_two_mom_hooks_resources_used.py
│       │   ├── pbs_types.py
│       │   ├── pbs_unknown_resource_hook_update.py
│       │   ├── pbs_unset_exectime.py
│       │   ├── pbs_user_reliability.py
│       │   ├── pbs_validate_job_qsub_attributes.py
│       │   └── pbs_verify_log_output.py
│       ├── interfaces/
│       │   ├── __init__.py
│       │   ├── pbs_libpbs_so.py
│       │   ├── pbs_node_partition.py
│       │   ├── pbs_partition.py
│       │   ├── pbs_preempt_params.py
│       │   └── pbs_sched_interface_test.py
│       ├── pbs_smoketest.py
│       ├── performance/
│       │   ├── __init__.py
│       │   ├── pbs_cgroups_stress.py
│       │   ├── pbs_client_nagle_performance.py
│       │   ├── pbs_equiv_classes_perf.py
│       │   ├── pbs_history_cleanup_quasihang.py
│       │   ├── pbs_jobperf.py
│       │   ├── pbs_preemptperformance.py
│       │   ├── pbs_qstat_performance.py
│       │   ├── pbs_qsub_performance.py
│       │   ├── pbs_rerunjob_file_transfer_perf.py
│       │   ├── pbs_runjobwait_perf.py
│       │   ├── pbs_sched_perf.py
│       │   ├── pbs_standing_resv_quasihang.py
│       │   └── test_dependency_perf.py
│       ├── resilience/
│       │   ├── __init__.py
│       │   └── pbs_hook_alarm_large_multinode_job.py
│       ├── security/
│       │   ├── __init__.py
│       │   ├── pbs_command_injection.py
│       │   └── pbs_multiple_auth.py
│       ├── selftest/
│       │   ├── __init__.py
│       │   ├── pbs_config_sched.py
│       │   ├── pbs_cycles_test.py
│       │   ├── pbs_default_timeout.py
│       │   ├── pbs_dshutils_tests.py
│       │   ├── pbs_expect.py
│       │   ├── pbs_initservices.py
│       │   ├── pbs_job_cleanup.py
│       │   ├── pbs_json_test_report.py
│       │   ├── pbs_manager.py
│       │   ├── pbs_managers_operators.py
│       │   ├── pbs_param_dict.py
│       │   ├── pbs_pbstestsuite.py
│       │   ├── pbs_requirements_decorator.py
│       │   ├── pbs_resvid_test.py
│       │   ├── pbs_test_create_vnodes.py
│       │   ├── pbs_test_revert_site_hooks.py
│       │   ├── pbs_test_revert_to_defaults.py
│       │   ├── pbs_testlogutils.py
│       │   └── pbs_testparams_decorator.py
│       └── upgrades/
│           └── __init__.py
└── valgrind.supp

================================================
FILE CONTENTS
================================================

================================================
FILE: .clang-format
================================================
---
Language:        Cpp
# BasedOnStyle:  LLVM
AccessModifierOffset: -2
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
AlignEscapedNewlines: Right
AlignOperands:   true
AlignTrailingComments: true
AllowAllArgumentsOnNextLine: true
AllowAllConstructorInitializersOnNextLine: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: All
AllowShortLambdasOnASingleLine: All
AllowShortIfStatementsOnASingleLine: Never
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: MultiLine
BinPackArguments: true
BinPackParameters: true
BreakBeforeBraces: Custom
BraceWrapping:
  AfterCaseLabel:  false
  AfterClass:      false
  AfterControlStatement: false
  AfterEnum:       false
  AfterFunction:   true
  AfterNamespace:  false
  AfterObjCDeclaration: false
  AfterStruct:     false
  AfterUnion:      false
  AfterExternBlock: false
  BeforeCatch:     false
  BeforeElse:      false
  IndentBraces:    false
  SplitEmptyFunction: true
  SplitEmptyRecord: true
  SplitEmptyNamespace: true
BreakBeforeBinaryOperators: None
BreakBeforeInheritanceComma: false
BreakInheritanceList: BeforeColon
BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: false
BreakConstructorInitializers: BeforeColon
BreakAfterJavaFieldAnnotations: false
BreakStringLiterals: true
ColumnLimit:     0
CommentPragmas:  '^ IWYU pragma:'
CompactNamespaces: false
ConstructorInitializerAllOnOneLineOrOnePerLine: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 8
Cpp11BracedListStyle: true
DerivePointerAlignment: false
DisableFormat:   false
ExperimentalAutoDetectBinPacking: false
FixNamespaceComments: true
ForEachMacros:
  - foreach
  - Q_FOREACH
  - BOOST_FOREACH
IncludeBlocks:   Preserve
IncludeCategories:
  - Regex:           '[<"]pbs_config.h[>"]'
    Priority:        -1
  - Regex:           '.*'
    Priority:        3
  - Regex:           '^"(llvm|llvm-c|clang|clang-c)/'
    Priority:        2
  - Regex:           '^(<|"(gtest|gmock|isl|json)/)'
    Priority:        4
IncludeIsMainRegex: '(Test)?$'
IndentCaseLabels: true
IndentPPDirectives: None
IndentWidth:     8
IndentWrappedFunctionNames: false
JavaScriptQuotes: Leave
JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: true
MacroBlockBegin: ''
MacroBlockEnd:   ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
ObjCBinPackProtocolList: Auto
ObjCBlockIndentWidth: 2
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: true
PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyBreakTemplateDeclaration: 10
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 60
PointerAlignment: Right
ReflowComments:  false
SortIncludes:    false
SortUsingDeclarations: true
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeCpp11BracedList: false
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeParens: ControlStatements
SpaceBeforeRangeBasedForLoopColon: true
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles:  false
SpacesInContainerLiterals: true
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard:        Cpp11
StatementMacros:
  - Q_UNUSED
  - QT_REQUIRE_VERSION
TabWidth:        8
UseTab:          Always
AlwaysBreakAfterReturnType: AllDefinitions
SpaceAfterCStyleCast: true
...



================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
<!--- Please review your changes in preview mode -->
<!--- Provide a general summary of your changes in the Title above -->

#### Describe Bug or Feature
<!--- Describe the problem, ideally from the customer's viewpoint  -->


#### Describe Your Change
<!--- Say how you fixed the problem.  Please describe your code changes in detail for reviewer -->


#### Link to Design Doc
<!--- If there is a design, link to it here: **[project documentation area](https://pbspro.atlassian.net/wiki/display/PD)** -->


#### Attach Test and Valgrind Logs/Output
<!--- Please attach your test log output from running the test you added (or from existing tests that cover your changes) -->
<!--- Don't forget to run Valgrind if appropriate and attach the resulting logs -->



<!--- Pull Request Guidelines: [Pull Request Guidelines](https://pbspro.atlassian.net/wiki/spaces/DG/pages/1187348483/Pull+Request+Guidelines) -->


================================================
FILE: .github/checkclang
================================================
#!/bin/bash

# Copyright (C) 1994-2021 Altair Engineering, Inc.
# For more information, contact Altair at www.altair.com.
#
# This file is part of both the OpenPBS software ("OpenPBS")
# and the PBS Professional ("PBS Pro") software.
#
# Open Source License Information:
#
# OpenPBS is free software. You can redistribute it and/or modify it under
# the terms of the GNU Affero General Public License as published by the
# Free Software Foundation, either version 3 of the License, or (at your
# option) any later version.
#
# OpenPBS 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 Affero General Public
# License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
# Commercial License Information:
#
# PBS Pro is commercially licensed software that shares a common core with
# the OpenPBS software.  For a copy of the commercial license terms and
# conditions, go to: (http://www.pbspro.com/agreement.html) or contact the
# Altair Legal Department.
#
# Altair's dual-license business model allows companies, individuals, and
# organizations to create proprietary derivative works of OpenPBS and
# distribute them - whether embedded or bundled with other software -
# under a commercial license agreement.
#
# Use of Altair's trademarks, including but not limited to "PBS™",
# "OpenPBS®", "PBS Professional®", and "PBS Pro™" and Altair's logos is
# subject to Altair's trademark licensing policies.


export PATH=$PATH:/usr/local/bin/

checkdir="$(readlink -f $(dirname $0))"

which clang-format 1>/dev/null 2>/dev/null
if [ $? -ne 0 ]; then
    echo "Could not find clang-format command" 1>&2
    exit 1
fi

cd ${checkdir}/..

find . -iname *.h -o -iname *.c -o -iname *.cpp | xargs clang-format --dry-run
exit $?



================================================
FILE: .github/checkpep8
================================================
#!/bin/bash

# Copyright (C) 1994-2021 Altair Engineering, Inc.
# For more information, contact Altair at www.altair.com.
#
# This file is part of both the OpenPBS software ("OpenPBS")
# and the PBS Professional ("PBS Pro") software.
#
# Open Source License Information:
#
# OpenPBS is free software. You can redistribute it and/or modify it under
# the terms of the GNU Affero General Public License as published by the
# Free Software Foundation, either version 3 of the License, or (at your
# option) any later version.
#
# OpenPBS 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 Affero General Public
# License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
# Commercial License Information:
#
# PBS Pro is commercially licensed software that shares a common core with
# the OpenPBS software.  For a copy of the commercial license terms and
# conditions, go to: (http://www.pbspro.com/agreement.html) or contact the
# Altair Legal Department.
#
# Altair's dual-license business model allows companies, individuals, and
# organizations to create proprietary derivative works of OpenPBS and
# distribute them - whether embedded or bundled with other software -
# under a commercial license agreement.
#
# Use of Altair's trademarks, including but not limited to "PBS™",
# "OpenPBS®", "PBS Professional®", and "PBS Pro™" and Altair's logos is
# subject to Altair's trademark licensing policies.

checkdir="$(readlink -f $(dirname $0))"
errors=0

which pep8 1>/dev/null 2>/dev/null
if [ $? -ne 0 ]; then
    echo "Could not find pep8 command" 1>&2
    exit 1
fi

cd ${checkdir}/..

is_python_file() {
    name=$(basename ${1})

    # special case
    # if .rst file then it will be considered
    # as a  plain text file
    if [ "x${name##*.}" == "xrst" ]; then
        return 1
    fi

    # special case
    # if __init__.py does not contain any code then file
    # command will consider it as plain text file
    if [ "x${name}" == "x__init__.py" ]; then
        return 0
    fi

    if [ "x$(file --mime-type -b ${1})" == "xtext/x-python" ]; then
        return 0
    fi
    return 1

}

check_pep8() {
    pep8 --show-source ${1} >out_check_pep8 2>&1
    return $?
}

for f in $(find test -type f)
do
    if is_python_file ${f}
    then
        if ! check_pep8 ${f}
        then
            cat out_check_pep8 1>&2
            rm -f out_check_pep8
            errors=$((errors + 1))
        fi
        if [ -x "${f}" ]; then
            echo "${f}: executable bit set" 1>&2
            errors=$((errors + 1))
        fi
    fi
done

if [ ${errors} -ne 0 ]; then
    exit 1
else
    exit 0
fi


================================================
FILE: .github/runchecks
================================================
#!/bin/bash

# Copyright (C) 1994-2021 Altair Engineering, Inc.
# For more information, contact Altair at www.altair.com.
#
# This file is part of both the OpenPBS software ("OpenPBS")
# and the PBS Professional ("PBS Pro") software.
#
# Open Source License Information:
#
# OpenPBS is free software. You can redistribute it and/or modify it under
# the terms of the GNU Affero General Public License as published by the
# Free Software Foundation, either version 3 of the License, or (at your
# option) any later version.
#
# OpenPBS 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 Affero General Public
# License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
# Commercial License Information:
#
# PBS Pro is commercially licensed software that shares a common core with
# the OpenPBS software.  For a copy of the commercial license terms and
# conditions, go to: (http://www.pbspro.com/agreement.html) or contact the
# Altair Legal Department.
#
# Altair's dual-license business model allows companies, individuals, and
# organizations to create proprietary derivative works of OpenPBS and
# distribute them - whether embedded or bundled with other software -
# under a commercial license agreement.
#
# Use of Altair's trademarks, including but not limited to "PBS™",
# "OpenPBS®", "PBS Professional®", and "PBS Pro™" and Altair's logos is
# subject to Altair's trademark licensing policies.


declare -a listofchecks
listofchecks[0]="checkpep8"
listofchecks[1]="checkclang"

checkdir=$(readlink -f $(dirname $0))
errors_fails=0

for check in ${listofchecks[@]}
do
    echo -n "Running check: '${check}' ... "
    if [ ! -x "${checkdir}/${check}" ]; then
        echo "NOTFOUND"
        errors_fails=$((errors_fails + 1))
        continue
    fi
    ${checkdir}/${check} >out 2>err
    if [ $? -ne 0 ]; then
        echo "FAILED"
        cat err
        errors_fails=$((errors_fails + 1))
    else
        echo "OK"
        cat out
    fi
done

if [ ${errors_fails} -ne 0 ]; then
    exit 1
else
    exit 0
fi


================================================
FILE: .gitignore
================================================
# Object files
*.o
*.ko
*.obj
*.elf
*.slo

# Precompiled Headers
*.gch
*.pch

# Libraries
*.lib
*.libs
*.a
*.la
*.lo
*.lai

# module files
*.mod

# Shared objects (inc. Windows DLLs)
*.dll
*.so
*.so.*
*.dylib

# Executables
*.exe
*.out
*.app
*.i*86
*.x86_64
*.hex

# Debug files
*.dSYM/

# Eclipse project files
.project
.cproject
.pydevproject
.settings/
.autotools
.csettings/
.devcontainer/

# Files used by ctags
tags

# Files used by cscope
cscope.files
cscope.out

#Visual Studio files
*.user
*.ncb
*.suo
.vscode/
win_configure/.vs/

# Files used by gtags
GPATH
GRTAGS
GTAGS

# Files/Directory generated by PBSTestLab
ptl_test_results.html
ptl_test_results.json
test/fw/build/
test/fw/ptl/__init__.py
test/fw/setup.py
test/tests/ptl_test_results.json
test/tests/*/ptl_test_results.json

# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# Python Distribution / packaging
.Python
develop-eggs/
dist/
downloads/
eggs/
.eggs/
sdist/
*.egg-info/
.installed.cfg
*.egg

# pip Installer logs
pip-log.txt
pip-delete-this-directory.txt
*.log

# Build directory
target/
target-*/

#PyCharm project directory
.idea/

# From automake/autoconf
autom4te.cache/
autoscan.log
autoscan-*.log
configure.scan
config.status
aclocal.m4
buildutils/config.guess
buildutils/config.sub

# Libtool
libtool
m4/libtool.m4
m4/ltoptions.m4
m4/ltsugar.m4
m4/ltversion.m4
m4/lt~obsolete.m4
buildutils/ltmain.sh

# Build related files
configure
Makefile.in
Makefile
*.deps
buildutils/pbs_mkdirs
buildutils/ar-lib
buildutils/compile
buildutils/depcomp
buildutils/install-sh
buildutils/missing
buildutils/py-compile
buildutils/exclude_script
buildutils/makedepend-sh
buildutils/ylwrap

# Generated binaries

src/cmds/mpiexec
src/cmds/nqs2pbs
src/cmds/pbs_attach
src/cmds/pbs_demux
src/cmds/pbs_ds_password.bin
src/cmds/pbs_lamboot
src/cmds/pbs_mpihp
src/cmds/pbs_mpilam
src/cmds/pbs_mpirun
src/cmds/pbs_rdel
src/cmds/pbs_remsh
src/cmds/pbs_rstat
src/cmds/pbs_rsub
src/cmds/pbs_ralter
src/cmds/pbs_tmrsh
src/cmds/pbsdsh
src/cmds/pbsnodes
src/cmds/pbs_release_nodes
src/cmds/pbs_dataservice.bin
src/cmds/pbsrun
src/cmds/pbsrun_unwrap
src/cmds/pbsrun_wrap
src/cmds/qalter
src/cmds/qdel
src/cmds/qdisable
src/cmds/qenable
src/cmds/qhold
src/cmds/qmgr
src/cmds/qmove
src/cmds/qmsg
src/cmds/qorder
src/cmds/qrerun
src/cmds/qrls
src/cmds/qrun
src/cmds/qselect
src/cmds/qsig
src/cmds/qstart
src/cmds/qstat
src/cmds/qstop
src/cmds/qsub
src/cmds/qterm
src/cmds/scripts/limits.pbs_mom
src/cmds/scripts/limits.post_services
src/cmds/scripts/pbs_habitat
src/cmds/scripts/pbs_init.d
src/cmds/scripts/pbs_poerun
src/cmds/scripts/pbs_postinstall
src/cmds/scripts/pbsrun.poe
src/cmds/scripts/pbs_reload
src/iff/pbs_iff
src/mom_rcp/pbs_rcp
src/resmom/pbs_mom
src/scheduler/pbs_sched
src/scheduler/pbs_sched_bare
src/scheduler/pbsfs
src/server/pbs_comm
src/server/pbs_server.bin
src/tools/pbs_ds_monitor
src/tools/pbs_hostn
src/tools/pbs_idled
src/tools/pbs_probe
src/tools/pbs_python
src/tools/pbs_tclsh
src/tools/pbs_upgrade_job
src/tools/pbs_wish
src/tools/printjob.bin
src/tools/printjob_svr.bin
src/tools/tracejob
src/tools/wrap_tcl.sh
src/tools/pbs_sleep
src/unsupported/pbs_rmget
src/unsupported/renew-test/renew-test

# Generated source files
src/include/pbs_version.h
src/include/pbs_config.h
src/include/pbs_config.h.in
src/include/pbs_config.h.in~
src/include/job_attr_enum.h
src/include/node_attr_enum.h
src/include/queue_attr_enum.h
src/include/resc_def_enum.h
src/include/resv_attr_enum.h
src/include/sched_attr_enum.h
src/include/svr_attr_enum.h
src/lib/Libattr/queue_attr_def.c
src/lib/Libattr/resc_def_all.c
src/lib/Libattr/resv_attr_def.c
src/lib/Libattr/sched_attr_def.c
src/lib/Libattr/svr_attr_def.c
src/lib/Libattr/job_attr_def.c
src/lib/Libattr/node_attr_def.c
src/lib/Libpbs/ecl_job_attr_def.c
src/lib/Libpbs/ecl_node_attr_def.c
src/lib/Libpbs/ecl_queue_attr_def.c
src/lib/Libpbs/ecl_resc_def_all.c
src/lib/Libpbs/ecl_resv_attr_def.c
src/lib/Libpbs/ecl_sched_attr_def.c
src/lib/Libpbs/ecl_svr_attr_def.c
src/include/stamp-h1
src/lib/Libpython/pbs_ifl.i
src/lib/Libpython/pbs_ifl.py
src/lib/Libpython/pbs_ifl_wrap.c
src/lib/Libifl/pbs_ifl.py
src/lib/Libifl/pbs_ifl_wrap.c
src/include/job_attr_enum.h
src/include/node_attr_enum.h
src/include/queue_attr_enum.h
src/include/resc_def_enum.h
src/include/resv_attr_enum.h
src/include/sched_attr_enum.h
src/include/svr_attr_enum.h

#Generated source files - Windows
src/lib/Libecl/ecl_node_attr_def.c
src/lib/Libecl/ecl_job_attr_def.c
src/lib/Libecl/ecl_queue_attr_def.c
src/lib/Libecl/ecl_resc_def_all.c
src/lib/Libecl/ecl_resv_attr_def.c
src/lib/Libecl/ecl_sched_attr_def.c
src/lib/Libecl/ecl_svr_attr_def.c
win_configure/projects/pbs_ifl.i
win_configure/projects/pbs_ifl.py
win_configure/projects/pbs_ifl_wrap.c

#ci logs
ci/logs/
ci/logs/prev_LOGS/
ci/.*
ci/packages
ci/ptl_ts_tree.json
ci/docker-compose.json

# Generated scripts
src/cmds/scripts/modulefile
src/cmds/scripts/pbs.service

# Generated by make dist
*.tar.gz
src/lib/Libpbs/pbs.pc

# rpm spec file
*.spec

# Other archive file types
*.tar
*.tar.bz
*.tgz
*.zip
*.cpio
*.rpm
*.deb

# Generated directories by autotools
*.libs


================================================
FILE: CODE_OF_CONDUCT.md
================================================
#### OpenPBS Open Source Project 

## **Code of Conduct**

This code of conduct is a guide for members of the OpenPBS community. We are committed to providing an open and welcoming environment for the OpenPBS community.  We expect that all members of the community will behave according to this code of conduct.  This code of conduct is intended to explain the spirit in which we expect to communicate, not to be an exhaustive list.  This code of conduct applies to all elements of the OpenPBS community: mailing lists, bug tracking systems, etc.  Anyone who violates this code of conduct may be banned from the OpenPBS community.  It is unacceptable to follow the letter but not the spirit of this code of conduct.

Guidelines for code of conduct:

* **Be friendly and patient.**
* **Be welcoming:** We strive to be a community that welcomes and supports people of all backgrounds and identities.
* **Be considerate:** Your work will be used by other people, and you in turn will depend on the work of others. Decisions you make affect everyone in the community, so please be mindful of your actions and always choose a non-confrontational approach. Remember: this is a global community and English is not everyone's primary language.
* **Be respectful:** Disagreements may occur, but we cannot abide personal attacks. The health of the community depends on all members feeling comfortable and supported. If you don't agree, use discretion and be polite.
* **Be careful in the words that we choose:** we are a community of professionals, and we conduct ourselves professionally. Be kind to others. Do not insult or put down other participants. Harassment and other exclusionary behavior aren’t acceptable.
* **Try to understand why we disagree:** Disagreements, both social and technical, happen all the time. It is important that we resolve disagreements and differing views constructively. Different people have different perspectives on issues. Being unable to understand why someone holds a viewpoint doesn’t mean that they’re wrong. Don’t forget that it is human to err and blaming each other doesn’t get us anywhere. Instead, focus on helping to resolve issues and learning from mistakes.
In addition, our open source community members are expected to abide by the **[OpenPBS Acceptable Use Policy](https://openpbs.atlassian.net/wiki/spaces/PBSPro/pages/5537837/Acceptable+Use+Policy).

### Reporting Issues
If you experience or witness unacceptable behavior — or have any other concerns — please report it by sending e-mail to webmaster@pbspro.org. All reports will be handled with discretion. In your report please include:
* Your contact information.
* Names (real, nicknames, or pseudonyms) of any individuals involved. If there are additional witnesses, please include them as well. Your account of what occurred, and if you believe the incident is ongoing. If there is a publicly available record (e.g. a mailing list archive or a public IRC logger), please include a link.
* Any additional information that may be helpful.

After filing a report, a representative will contact you personally, review the incident, follow up with any additional questions, and make a decision as to how to respond. If the person who is harassing you is part of the response team, they will recuse themselves from handling your incident. If the complaint originates from a member of the response team, it will be handled by a different member of the response team. We will respect confidentiality requests for the purpose of protecting victims of abuse.

### Attribution & Acknowledgements
This code of conduct is based on the **[Open Code of Conduct v1.0](https://github.com/todogroup/opencodeofconduct)** from the **[TODOGroup](http://todogroup.org)**. We are thankful for their work and all the communities who have paved the way with codes of conduct.

### PBS Pro Contributor's Portal
Please see the PBS Pro Contributor's Portal for the PBS Pro **[Code of Conduct](https://openpbs.atlassian.net/wiki/spaces/PBSPro/pages/5537835/Code+of+Conduct)**.

Note: In May 2020, OpenPBS became the new name for the PBS Professional Open Source Project. (PBS Professional will be used to refer to the commercial version; OpenPBS to the Open Source version -- same code, easier naming.) As there are many parts to the project, it will take several weeks to change the name in all places, so you will continue to see references to PBS Pro (as in the above) -- stay tuned.


================================================
FILE: CONTRIBUTING.md
================================================
### Contributing to the OpenPBS Open Source Project

We're so happy that you want to contribute to OpenPBS!

Please see the Contributor's Portal for details, guidelines, and how-to tutorials.  Start at **[Becoming a Contributor to OpenPBS](https://pbspro.atlassian.net/wiki/spaces/DG/pages/20414474/Becoming+a+Contributor+to+PBS+Pro)**.

Note: In May 2020, OpenPBS became the new name for the PBS Professional Open Source Project.  (PBS Professional will be used to refer to the commercial version; OpenPBS to the Open Source version -- same code, easier naming.)  As there are many parts to the project, it will take several weeks to change the name in all places, so you will continue to see references to PBS Pro (as in the above) -- stay tuned. 


================================================
FILE: COPYRIGHT
================================================
Copyright (C) 1994-2021 Altair Engineering, Inc.
For more information, contact Altair at www.altair.com.

This file is part of both the OpenPBS software ("OpenPBS")
and the PBS Professional ("PBS Pro") software.

Open Source License Information:

OpenPBS is free software. You can redistribute it and/or modify it under
the terms of the GNU Affero General Public License as published by the
Free Software Foundation, either version 3 of the License, or (at your
option) any later version.

OpenPBS 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 Affero General Public
License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.

Commercial License Information:

PBS Pro is commercially licensed software that shares a common core with
the OpenPBS software.  For a copy of the commercial license terms and
conditions, go to: (http://www.pbspro.com/agreement.html) or contact the
Altair Legal Department.

Altair's dual-license business model allows companies, individuals, and
organizations to create proprietary derivative works of OpenPBS and
distribute them - whether embedded or bundled with other software -
under a commercial license agreement.

Use of Altair's trademarks, including but not limited to "PBS™",
"OpenPBS®", "PBS Professional®", and "PBS Pro™" and Altair's logos is
subject to Altair's trademark licensing policies.


================================================
FILE: INSTALL
================================================

--------------------------------------------------------------------

How to install PBS using the configure script.

0. Disable SELinux.

  OpenPBS does not support SELinux. With SELinux enabled, initial start fails
    with datastore permission error. You can also define proper policy but it is
    out of scope of this guide.

1. Install the prerequisite packages for building PBS.

  For CentOS-8 systems you should configure and enable powertools
  repo for hwloc-devel and libedit-devel packages.

  You should run the following commands as root:

    dnf install -y dnf-plugins-core
    dnf config-manager --set-enabled powertools

    dnf install -y gcc make rpm-build libtool hwloc-devel \
      libX11-devel libXt-devel libedit-devel libical-devel \
      ncurses-devel perl postgresql-devel postgresql-contrib python3-devel tcl-devel \
      tk-devel swig expat-devel openssl-devel libXext libXft \
      autoconf automake gcc-c++ cjson-devel

  For CentOS-7 systems you should run the following command as root:

    yum install -y gcc make rpm-build libtool hwloc-devel \
      libX11-devel libXt-devel libedit-devel libical-devel \
      ncurses-devel perl postgresql-devel postgresql-contrib python3-devel tcl-devel \
      tk-devel swig expat-devel openssl-devel libXext libXft \
      autoconf automake gcc-c++

  For openSUSE systems you should run the following command as root:

    zypper install gcc make rpm-build libtool hwloc-devel \
      libX11-devel libXt-devel libedit-devel libical-devel \
      ncurses-devel perl postgresql-devel postgresql-contrib python3-devel tcl-devel \
      tk-devel swig libexpat-devel libopenssl-devel libXext-devel \
      libXft-devel fontconfig autoconf automake gcc-c++ cJSON-devel

  For Debian systems you should run the following command as root:

    apt-get install gcc make libtool libhwloc-dev libx11-dev \
      libxt-dev libedit-dev libical-dev ncurses-dev perl \
      postgresql-server-dev-all postgresql-contrib python3-dev tcl-dev tk-dev swig \
      libexpat-dev libssl-dev libxext-dev libxft-dev autoconf \
      automake g++ libcjson-dev

  For Ubuntu-18.04 systems you should run the following command as root:

    apt install gcc make libtool libhwloc-dev libx11-dev \
      libxt-dev libedit-dev libical-dev ncurses-dev perl \
      postgresql-server-dev-all postgresql-contrib python3-dev tcl-dev tk-dev swig \
      libexpat-dev libssl-dev libxext-dev libxft-dev autoconf \
      automake g++

  For Ubuntu-24.04 systems you should run the following command as root:

    apt install gcc make libtool libhwloc-dev libx11-dev \
      libxt-dev libedit-dev libical-dev ncurses-dev perl \
      postgresql-server-dev-all postgresql-contrib python3-dev tcl-dev tk-dev swig \
      libexpat-dev libssl-dev libxext-dev libxft-dev autoconf \
      automake g++ libcjson-dev

  For macOS systems using MacPorts you should run the following command as root:

    port install autoconf automake libtool pkgconfig \
      expat hwloc libedit libical openssl postgresql14 python310 \
      swig-python tcl tk xorg-libX11 xorg-libXt

2. Install the prerequisite packages for running PBS. In addition
  to the commands below, you should also install a text editor of
  your choosing (vim, emacs, gedit, etc.).

  For CentOS systems you should run the following command as root:

    yum install -y expat libedit postgresql-server postgresql-contrib python3 \
      sendmail sudo tcl tk libical chkconfig cjson

  For openSUSE systems you should run the following command as root:

    zypper install expat libedit postgresql-server postgresql-contrib python3 \
      sendmail sudo tcl tk libical1 libcjson1

  For Debian (jessie) systems you should run the following command as root:

    apt-get install expat libedit2 postgresql python3 postgresql-contrib sendmail-bin \
      sudo tcl tk libical1a

  For Debian (stretch) systems you should run the following command as root:

    apt-get install expat libedit2 postgresql python3 postgresql-contrib sendmail-bin \
      sudo tcl tk libical2

  For Debian (buster) systems you should run the following command as root:

    apt-get install expat libedit2 postgresql python3 postgresql-contrib sendmail-bin \
      sudo tcl tk libical3 libcjson1

  For Ubuntu-18.04 systems you should run the following command as root:

    apt install expat libedit2 postgresql python3 postgresql-contrib sendmail-bin \
      sudo tcl tk libical3 postgresql-server-dev-all

  For Ubuntu-24.04 systems you should run the following command as root:

    apt install expat libedit2 postgresql python3 postgresql-contrib sendmail-bin \
      sudo tcl tk libical3 postgresql-server-dev-all

  For macOS systems using MacPorts you should run the following command as root:

    port install expat libedit libical openssl postgresql14-server python310 \
      tcl tk

3. Open a terminal as a normal (non-root) user, unpack the PBS
  tarball, and cd to the package directory.

    tar -xpvf openpbs-20.0.0.tar.gz
    cd openpbs-20.0.0

4. Generate the configure script and Makefiles. (See note 1 below)

    ./autogen.sh

5. Display the available build parameters.

    ./configure --help

6. Configure the build for your environment. You may utilize the
  parameters displayed in the previous step. (See note 2 below)

  For CentOS and Debian systems you should run the following
  command:

    ./configure --prefix=/opt/pbs

  For openSUSE systems (see note 3 below) you should run the
  following command:

    ./configure --prefix=/opt/pbs --libexecdir=/opt/pbs/libexec

  For macOS systems using MacPorts you should run the following commands:

    export CPATH=/opt/local/include/postgresql14:/opt/local/include
    export LIBRARY_PATH=/opt/local/lib/postgresql14:/opt/local/lib
    ./configure --with-swig=/opt/local --with-tcl=/opt/local

  If PTL needs to be installed along with PBS use the option
  "--enable-ptl" (see note 5 below)
    eg ./configure --prefix=/opt/pbs --enable-ptl

7. Build PBS by running "make". (See note 4 below)

    make

8. Configure sudo to allow your user account to run commands as
  root. Refer to the online manual pages for sudo, sudoers, and
  visudo.

9. Install PBS. Use sudo to run the command as root.

    sudo make install

10. Configure PBS by executing the post-install script.

    sudo /opt/pbs/libexec/pbs_postinstall

11. Edit /etc/pbs.conf to configure the PBS services that
  should be started. If you are installing PBS on only
  one system, you should change the value of PBS_START_MOM
  from zero to one. If you use vi as your editor, you would
  run:

    sudo vi /etc/pbs.conf

12. Some file permissions must be modified to add SUID privilege.

    sudo chmod 4755 /opt/pbs/sbin/pbs_iff /opt/pbs/sbin/pbs_rcp

13. Start the PBS services.

    sudo /etc/init.d/pbs start

14. All configured PBS services should now be running. Update
  your PATH and MANPATH variables by sourcing the appropriate
  PBS profile or logging out and back in.

  For Bourne shell (or similar) run the following:
    . /etc/profile.d/pbs.sh

  For C shell (or similar) run the following:
    source /etc/profile.d/pbs.csh

15. You should now be able to run PBS commands to submit
  and query jobs. Some examples follow.

bash$ qstat -B
Server             Max   Tot   Que   Run   Hld   Wat   Trn   Ext Status
---------------- ----- ----- ----- ----- ----- ----- ----- ----- -----------
host1                0     0     0     0     0     0     0     0 Active
bash$ pbsnodes -a
host1
     Mom = host1
     ntype = PBS
     state = free
     pcpus = 2
     resources_available.arch = linux
     resources_available.host = host1
     resources_available.mem = 2049248kb
     resources_available.ncpus = 2
     resources_available.vnode = host1
     resources_assigned.accelerator_memory = 0kb
     resources_assigned.mem = 0kb
     resources_assigned.naccelerators = 0
     resources_assigned.ncpus = 0
     resources_assigned.vmem = 0kb
     resv_enable = True
     sharing = default_shared
     license = l

bash$ echo "sleep 60" | qsub
0.host1
bash$ qstat -a

host1:
                                                            Req'd  Req'd   Elap
Job ID          Username Queue    Jobname    SessID NDS TSK Memory Time  S Time
--------------- -------- -------- ---------- ------ --- --- ------ ----- - -----
0.host1         mike     workq    STDIN        2122   1   1    --    --  R 00:00

bash$

--------------------------------------------------------------------

NOTES:

Note 1: If you modify configure.ac or adjust timestamps on any files
  that are automatically generated, you will need to regenerate them
  by re-running autogen.sh.

Note 2: It is advisable to create a simple shell script that calls
  configure with the appropriate options for your environment. This
  ensures configure will be called with the same arguments during
  subsequent invocations. If you have already run configure you can
  regenerate all of the Makefiles by running "./config.status".
  The first few lines of config.status will reveal the options that
  were specified when configure was run. If you set envirnment
  variables such as CFLAGS it is best to do so as an argument to
  configure (e.g. ./configure CFLAGS="-O0 -g" --prefix=/opt/pbs).
  This will ensure consistency when config.status regenerates the
  Makefiles.

Note 3: The openSUSE rpm package expands %_libexecdir to /opt/pbs/lib
  rather than /opt/pbs/libexec which causes problems for the post-
  install scripts. Providing the --libexecdir value to configure
  overrides this behavior.

Note 4: You need to use a POSIX (or nearly POSIX) make. GNU make
  works quite well in this regard; BSD make does not. If you are
  having any sort of build problems, your make should be a prime
  suspect. Tremendous effort has been expended to provide proper
  dependency generation and makefiles without relying on any
  non-POSIX features. The build should work fine with a simple call
  to make, however, complicating things by using various make flags
  is not guaranteed to work. Don't be surprised if the first thing
  that make does is call configure again.

Note 5: PTL gets installed in the parent directory of where PBS
  is installed. For example if you have given install prefix=/opt/pbs, then
  you can find PTL installation in the directory /opt/ptl . You may need to
  log out and log in from the terminal for PATH and PYTHONPATH to update.



Using valgrind with PBS.
-------------------------------------
Here is a set of steps to detect memory errors/leaks within PBS code.

1. Install the valgrind development package.

   yum install valgrind-devel (zypper for OpenSUSE).


2. Compile Python in a way that valgrind can work with it, as follows:

   ./configure --prefix=<installdir> --without-pymalloc --with-pydebug --with-valgrind
   make; make install


3. Compile PBS with the special python and in debug mode as follows:

   ./configure --prefix=<installdir> --with-python=<python-dir>  CFLAGS="-g -DPy_DEBUG -DDEBUG -Wall -Werror"


4. Run pbs daemons under valgrind.

   a) To detect memory errors (not leaks) run pbs daemons as follows:

   export LD_LIBRARY_PATH=/opt/pbs/pgsql/lib:/opt/pbs/lib:$LD_LIBRARY_PATH
   valgrind --tool=memcheck --log-file=/tmp/val.out /opt/pbs/sbin/pbs_server.bin


   b) To detect memory leaks use the supplied leaks suppression file valgrind.supp, as follows:

   export LD_LIBRARY_PATH=/opt/pbs/pgsql/lib:/opt/pbs/lib:$LD_LIBRARY_PATH
   valgrind --tool=memcheck --log-file=/tmp/val.out --suppressions=./valgrind.supp --leak-check=full --track-origins=yes /opt/pbs/sbin/pbs_server.bin


================================================
FILE: LICENSE
================================================
----------------------------------------------------
Open Source License for OpenPBS and PBS Professional
----------------------------------------------------

Copyright (C) 1994-2021 Altair Engineering, Inc.
For more information, contact Altair at www.altair.com.

This file is part of both the OpenPBS software ("OpenPBS")
and the PBS Professional ("PBS Pro") software.

Open Source License Information:

OpenPBS is free software. You can redistribute it and/or modify it under
the terms of the GNU Affero General Public License as published by the
Free Software Foundation, either version 3 of the License, or (at your
option) any later version.

OpenPBS 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 Affero General Public
License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.

Commercial License Information:

PBS Pro is commercially licensed software that shares a common core with
the OpenPBS software.  For a copy of the commercial license terms and
conditions, go to: (http://www.pbspro.com/agreement.html) or contact the
Altair Legal Department.

Altair's dual-license business model allows companies, individuals, and
organizations to create proprietary derivative works of OpenPBS and
distribute them - whether embedded or bundled with other software -
under a commercial license agreement.

Use of Altair's trademarks, including but not limited to "PBS™",
"OpenPBS®", "PBS Professional®", and "PBS Pro™" and Altair's logos is
subject to Altair's trademark licensing policies.

==============================================================================

                    GNU AFFERO GENERAL PUBLIC LICENSE
                       Version 3, 19 November 2007

 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The GNU Affero General Public License is a free, copyleft license for
software and other kinds of works, specifically designed to ensure
cooperation with the community in the case of network server software.

  The licenses for most software and other practical works are designed
to take away your freedom to share and change the works.  By contrast,
our General Public Licenses are intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.

  Developers that use our General Public Licenses protect your rights
with two steps: (1) assert copyright on the software, and (2) offer
you this License which gives you legal permission to copy, distribute
and/or modify the software.

  A secondary benefit of defending all users' freedom is that
improvements made in alternate versions of the program, if they
receive widespread use, become available for other developers to
incorporate.  Many developers of free software are heartened and
encouraged by the resulting cooperation.  However, in the case of
software used on network servers, this result may fail to come about.
The GNU General Public License permits making a modified version and
letting the public access it on a server without ever releasing its
source code to the public.

  The GNU Affero General Public License is designed specifically to
ensure that, in such cases, the modified source code becomes available
to the community.  It requires the operator of a network server to
provide the source code of the modified version running there to the
users of that server.  Therefore, public use of a modified version, on
a publicly accessible server, gives the public access to the source
code of the modified version.

  An older license, called the Affero General Public License and
published by Affero, was designed to accomplish similar goals.  This is
a different license, not a version of the Affero GPL, but Affero has
released a new version of the Affero GPL which permits relicensing under
this license.

  The precise terms and conditions for copying, distribution and
modification follow.

                       TERMS AND CONDITIONS

  0. Definitions.

  "This License" refers to version 3 of the GNU Affero General Public License.

  "Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.

  "The Program" refers to any copyrightable work licensed under this
License.  Each licensee is addressed as "you".  "Licensees" and
"recipients" may be individuals or organizations.

  To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy.  The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.

  A "covered work" means either the unmodified Program or a work based
on the Program.

  To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy.  Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.

  To "convey" a work means any kind of propagation that enables other
parties to make or receive copies.  Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.

  An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License.  If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.

  1. Source Code.

  The "source code" for a work means the preferred form of the work
for making modifications to it.  "Object code" means any non-source
form of a work.

  A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.

  The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form.  A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.

  The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities.  However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work.  For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.

  The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.

  The Corresponding Source for a work in source code form is that
same work.

  2. Basic Permissions.

  All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met.  This License explicitly affirms your unlimited
permission to run the unmodified Program.  The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work.  This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.

  You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force.  You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright.  Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.

  Conveying under any other circumstances is permitted solely under
the conditions stated below.  Sublicensing is not allowed; section 10
makes it unnecessary.

  3. Protecting Users' Legal Rights From Anti-Circumvention Law.

  No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.

  When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.

  4. Conveying Verbatim Copies.

  You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.

  You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.

  5. Conveying Modified Source Versions.

  You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:

    a) The work must carry prominent notices stating that you modified
    it, and giving a relevant date.

    b) The work must carry prominent notices stating that it is
    released under this License and any conditions added under section
    7.  This requirement modifies the requirement in section 4 to
    "keep intact all notices".

    c) You must license the entire work, as a whole, under this
    License to anyone who comes into possession of a copy.  This
    License will therefore apply, along with any applicable section 7
    additional terms, to the whole of the work, and all its parts,
    regardless of how they are packaged.  This License gives no
    permission to license the work in any other way, but it does not
    invalidate such permission if you have separately received it.

    d) If the work has interactive user interfaces, each must display
    Appropriate Legal Notices; however, if the Program has interactive
    interfaces that do not display Appropriate Legal Notices, your
    work need not make them do so.

  A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit.  Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.

  6. Conveying Non-Source Forms.

  You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:

    a) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by the
    Corresponding Source fixed on a durable physical medium
    customarily used for software interchange.

    b) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by a
    written offer, valid for at least three years and valid for as
    long as you offer spare parts or customer support for that product
    model, to give anyone who possesses the object code either (1) a
    copy of the Corresponding Source for all the software in the
    product that is covered by this License, on a durable physical
    medium customarily used for software interchange, for a price no
    more than your reasonable cost of physically performing this
    conveying of source, or (2) access to copy the
    Corresponding Source from a network server at no charge.

    c) Convey individual copies of the object code with a copy of the
    written offer to provide the Corresponding Source.  This
    alternative is allowed only occasionally and noncommercially, and
    only if you received the object code with such an offer, in accord
    with subsection 6b.

    d) Convey the object code by offering access from a designated
    place (gratis or for a charge), and offer equivalent access to the
    Corresponding Source in the same way through the same place at no
    further charge.  You need not require recipients to copy the
    Corresponding Source along with the object code.  If the place to
    copy the object code is a network server, the Corresponding Source
    may be on a different server (operated by you or a third party)
    that supports equivalent copying facilities, provided you maintain
    clear directions next to the object code saying where to find the
    Corresponding Source.  Regardless of what server hosts the
    Corresponding Source, you remain obligated to ensure that it is
    available for as long as needed to satisfy these requirements.

    e) Convey the object code using peer-to-peer transmission, provided
    you inform other peers where the object code and Corresponding
    Source of the work are being offered to the general public at no
    charge under subsection 6d.

  A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.

  A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling.  In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage.  For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product.  A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.

  "Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source.  The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.

  If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information.  But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).

  The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed.  Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.

  Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.

  7. Additional Terms.

  "Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law.  If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.

  When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it.  (Additional permissions may be written to require their own
removal in certain cases when you modify the work.)  You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.

  Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:

    a) Disclaiming warranty or limiting liability differently from the
    terms of sections 15 and 16 of this License; or

    b) Requiring preservation of specified reasonable legal notices or
    author attributions in that material or in the Appropriate Legal
    Notices displayed by works containing it; or

    c) Prohibiting misrepresentation of the origin of that material, or
    requiring that modified versions of such material be marked in
    reasonable ways as different from the original version; or

    d) Limiting the use for publicity purposes of names of licensors or
    authors of the material; or

    e) Declining to grant rights under trademark law for use of some
    trade names, trademarks, or service marks; or

    f) Requiring indemnification of licensors and authors of that
    material by anyone who conveys the material (or modified versions of
    it) with contractual assumptions of liability to the recipient, for
    any liability that these contractual assumptions directly impose on
    those licensors and authors.

  All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10.  If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term.  If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.

  If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.

  Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.

  8. Termination.

  You may not propagate or modify a covered work except as expressly
provided under this License.  Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).

  However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.

  Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.

  Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License.  If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.

  9. Acceptance Not Required for Having Copies.

  You are not required to accept this License in order to receive or
run a copy of the Program.  Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance.  However,
nothing other than this License grants you permission to propagate or
modify any covered work.  These actions infringe copyright if you do
not accept this License.  Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.

  10. Automatic Licensing of Downstream Recipients.

  Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License.  You are not responsible
for enforcing compliance by third parties with this License.

  An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations.  If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.

  You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License.  For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.

  11. Patents.

  A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based.  The
work thus licensed is called the contributor's "contributor version".

  A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version.  For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.

  Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.

  In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement).  To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.

  If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients.  "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.

  If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.

  A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License.  You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.

  Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.

  12. No Surrender of Others' Freedom.

  If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all.  For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.

  13. Remote Network Interaction; Use with the GNU General Public License.

  Notwithstanding any other provision of this License, if you modify the
Program, your modified version must prominently offer all users
interacting with it remotely through a computer network (if your version
supports such interaction) an opportunity to receive the Corresponding
Source of your version by providing access to the Corresponding Source
from a network server at no charge, through some standard or customary
means of facilitating copying of software.  This Corresponding Source
shall include the Corresponding Source for any work covered by version 3
of the GNU General Public License that is incorporated pursuant to the
following paragraph.

  Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU General Public License into a single
combined work, and to convey the resulting work.  The terms of this
License will continue to apply to the part which is the covered work,
but the work with which it is combined will remain governed by version
3 of the GNU General Public License.

  14. Revised Versions of this License.

  The Free Software Foundation may publish revised and/or new versions of
the GNU Affero General Public License from time to time.  Such new versions
will be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

  Each version is given a distinguishing version number.  If the
Program specifies that a certain numbered version of the GNU Affero General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation.  If the Program does not specify a version number of the
GNU Affero General Public License, you may choose any version ever published
by the Free Software Foundation.

  If the Program specifies that a proxy can decide which future
versions of the GNU Affero General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.

  Later license versions may give you additional or different
permissions.  However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.

  15. Disclaimer of Warranty.

  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  16. Limitation of Liability.

  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.

  17. Interpretation of Sections 15 and 16.

  If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.

                     END OF TERMS AND CONDITIONS

            How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU Affero General Public License as published by
    the Free Software Foundation, either version 3 of the License, 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 Affero General Public License for more details.

    You should have received a copy of the GNU Affero General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.

Also add information on how to contact you by electronic and paper mail.

  If your software can interact with users remotely through a computer
network, you should also make sure that it provides a way for users to
get its source.  For example, if your program is a web application, its
interface could display a "Source" link that leads users to an archive
of the code.  There are many ways you could offer source, and different
solutions will be better for different programs; see section 13 for the
specific requirements.

  You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU AGPL, see
<http://www.gnu.org/licenses/>.

==============================================================================

--------------------------------
Third Party Software Information
--------------------------------

PBS Pro includes code created by other parties which is provided under
the open source software license agreements chosen by the authors. All
unmodified files from these and other sources retain their original
copyright and license notices.

_ _ _ _ _ _

src/scheduler/sort.c

Copyright (c) 1992, 1993. Regents of the University of California.
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
   notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
   notice, this list of conditions and the following disclaimer in the
   documentation and/or other materials provided with the distribution.
3. All advertising materials mentioning features or use of this software
   must display the following acknowledgement:
     This product includes software developed by the University of
     California, Berkeley and its contributors.
4. Neither the name of the University nor the names of its contributors
   may be used to endorse or promote products derived from this software
   without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, 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.

_ _ _ _ _ _

src/lib/Libwin/rcmd.c

Copyright (c) 1983 Regents of the University of California.
All rights reserved.

Redistribution and use in source and binary forms are permitted
provided that the above copyright notice and this paragraph are
duplicated in all such forms and that any documentation,
advertising materials, and other materials related to such
distribution and use acknowledge that the software was developed
by the University of California, Berkeley.  The name of the
University may not be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.

_ _ _ _ _ _

src/resmom/popen.c

Copyright (c) 1988, 1993
     The Regents of the University of California.  All rights reserved.

This code is derived from software written by Ken Arnold and
published in UNIX Review, Vol. 6, No. 8.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
   notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
   notice, this list of conditions and the following disclaimer in the
   documentation and/or other materials provided with the distribution.
3. All advertising materials mentioning features or use of this software
   must display the following acknowledgement:
     This product includes software developed by the University of
     California, Berkeley and its contributors.
4. Neither the name of the University nor the names of its contributors
   may be used to endorse or promote products derived from this software
   without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, 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.

_ _ _ _ _ _

src/lib/Libutil/avltree.c

Copyright (c) 2000 Gregory Tseytin <tseyting@acm.org>
  All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
   notice, this list of conditions and the following disclaimer as
   the first lines of this file unmodified.
2. Redistributions in binary form must reproduce the above copyright
   notice, this list of conditions and the following disclaimer in the
   documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY Gregory Tseytin ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL Gregory Tseytin BE LIABLE FOR ANY DIRECT, 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.

_ _ _ _ _ _

buildutils/depcomp
buildutils/compile

Copyright (C) 1999-2013 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, see <http://www.gnu.org/licenses/>.

As a special exception to the GNU General Public License, if you
distribute this file as part of a program that contains a
configuration script generated by Autoconf, you may include it under
the same distribution terms that you use for the rest of that program.

_ _ _ _ _ _

buildutils/install-sh

Copyright (C) 1994 X Consortium

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
deal in the Software without restriction, including without limitation the
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Except as contained in this notice, the name of the X Consortium shall not
be used in advertising or otherwise to promote the sale, use or other deal-
ings in this Software without prior written authorization from the X Consor-
tium.

_ _ _ _ _ _

buildutils/ltmain.sh
m4/libtool.m4

  Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
                2006, 2007, 2008, 2009, 2010, 2011 Free Software
                Foundation, Inc.
  Written by Gordon Matzigkeit, 1996

  This file is part of GNU Libtool.

GNU Libtool 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 of
the License, or (at your option) any later version.

As a special exception to the GNU General Public License,
if you distribute this file as part of a program or library that
is built using GNU Libtool, you may include this file under the
same distribution terms that you use for the rest of that program.

GNU Libtool 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 GNU Libtool; see the file COPYING.  If not, a copy
can be downloaded from http://www.gnu.org/licenses/gpl.html, or
obtained by writing to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

_ _ _ _ _ _

m4/lt~obsolete.m4

  Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
  Written by Scott James Remnant, 2004. (see license below)

m4/ltoptions.m4

  Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation,
  Inc.
  Written by Gary V. Vaughan, 2004  (see license below)

m4/ltsugar.m4

Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
Written by Gary V. Vaughan, 2004   (see license below)

m4/ltversion.m4

  Copyright (C) 2004 Free Software Foundation, Inc.
  Written by Scott James Remnant, 2004.   (see license below)

m4 GNU license:

License: GPL-2+ or configure-same-as-package
 This file 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 of the License, 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.

 The full text of the GNU General Public License version 2 is available on
 Debian systems in /usr/share/common-licenses/GPL-2.

 As a special exception to the GNU General Public License, if you
 distribute this file as part of a program that contains a configuration
 script generated by Autoconf, you may include it under the same
 distribution terms that you use for the rest of that program.

_ _ _ _ _ _

buildutils/makedepend-sh

Copyright (c) 1996, 1998 The NetBSD Foundation, Inc.
All rights reserved.

This code is derived from software contributed to The NetBSD Foundation
by Lonhyn T. Jasinskyj.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
   notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
   notice, this list of conditions and the following disclaimer in the
   documentation and/or other materials provided with the distribution.
3. All advertising materials mentioning features or use of this software
   must display the following acknowledgement:
       This product includes software developed by the NetBSD
       Foundation, Inc. and its contributors.
4. Neither the name of The NetBSD Foundation nor the names of its
   contributors may be used to endorse or promote products derived
   from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
BE LIABLE FOR ANY DIRECT, 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.


================================================
FILE: Makefile.am
================================================

#
# Copyright (C) 1994-2021 Altair Engineering, Inc.
# For more information, contact Altair at www.altair.com.
#
# This file is part of both the OpenPBS software ("OpenPBS")
# and the PBS Professional ("PBS Pro") software.
#
# Open Source License Information:
#
# OpenPBS is free software. You can redistribute it and/or modify it under
# the terms of the GNU Affero General Public License as published by the
# Free Software Foundation, either version 3 of the License, or (at your
# option) any later version.
#
# OpenPBS 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 Affero General Public
# License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
# Commercial License Information:
#
# PBS Pro is commercially licensed software that shares a common core with
# the OpenPBS software.  For a copy of the commercial license terms and
# conditions, go to: (http://www.pbspro.com/agreement.html) or contact the
# Altair Legal Department.
#
# Altair's dual-license business model allows companies, individuals, and
# organizations to create proprietary derivative works of OpenPBS and
# distribute them - whether embedded or bundled with other software -
# under a commercial license agreement.
#
# Use of Altair's trademarks, including but not limited to "PBS™",
# "OpenPBS®", "PBS Professional®", and "PBS Pro™" and Altair's logos is
# subject to Altair's trademark licensing policies.

#

ACLOCAL_AMFLAGS = -I m4

SUBDIRS = buildutils src doc test
EXTRA_DIST = \
	COPYRIGHT \
	INSTALL \
	LICENSE \
	README.md \
	autogen.sh \
	openpbs-rpmlintrc \
	openpbs.spec


================================================
FILE: PBS_License.txt
================================================
Copyright (C) 1994-2021 Altair Engineering, Inc.
For more information, contact Altair at www.altair.com.

This file is part of both the OpenPBS software ("OpenPBS")
and the PBS Professional ("PBS Pro") software.

Open Source License Information:

OpenPBS is free software. You can redistribute it and/or modify it under
the terms of the GNU Affero General Public License as published by the
Free Software Foundation, either version 3 of the License, or (at your
option) any later version.

OpenPBS 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 Affero General Public
License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.

Commercial License Information:

PBS Pro is commercially licensed software that shares a common core with
the OpenPBS software.  For a copy of the commercial license terms and
conditions, go to: (http://www.pbspro.com/agreement.html) or contact the
Altair Legal Department.

Altair's dual-license business model allows companies, individuals, and
organizations to create proprietary derivative works of OpenPBS and
distribute them - whether embedded or bundled with other software -
under a commercial license agreement.

Use of Altair's trademarks, including but not limited to "PBS™",
"OpenPBS®", "PBS Professional®", and "PBS Pro™" and Altair's logos is
subject to Altair's trademark licensing policies.


================================================
FILE: README.md
================================================
### OpenPBS Open Source Project

If you are new to this project, please start at https://www.openpbs.org/

Note: In May 2020, OpenPBS became the new name for the PBS Professional Open Source Project. (PBS Professional will be used to refer to the commercial version; OpenPBS to the Open Source version -- same code, easier naming.)  As there are many parts to the project, it will take several weeks to change the name in all places, so you will continue to see references to PBS Pro -- stay tuned.

### What is OpenPBS?
OpenPBS® software optimizes job scheduling and workload management in high-performance computing (HPC) environments – clusters, clouds, and supercomputers – improving system efficiency and people’s productivity.  Built by HPC people for HPC people, OpenPBS is fast, scalable, secure, and resilient, and supports all modern infrastructure, middleware, and applications.

* **Scalability:** supports millions of cores with fast job dispatch and minimal latency; tested beyond 50,000 nodes
* **Policy-Driven Scheduling:** meets unique site goals and SLAs by balancing job turnaround time and utilization with optimal job placement
* **Resiliency:** includes automatic fail-over architecture with no single point of failure – jobs are never lost, and jobs continue to run despite failures
* **Flexible Plugin Framework:** simplifies administration with enhanced visibility and extensibility; customize implementations to meet complex requirements
* **Health Checks:** monitors and automatically mitigates faults with a comprehensive health check framework
* **Voted #1 HPC Software** by HPC Wire readers and proven for over 20 years at thousands of sites around the globe in both the private sector and public sector

### Community and Ways to Participate

OpenPBS is a community effort and there are a variety of ways to engage, from helping answer questions to benchmarking to developing new capabilities and tests.  We value being aggressively open and inclusive, but also aggressively respectful and professional.  See our [Code of Conduct](https://openpbs.atlassian.net/wiki/display/PBSPro/Code+of+Conduct).

The best place to start is by joining the community forum.  You may sign up or view the archives via:

* [Announcements](http://community.openpbs.org/c/announcements) -- important updates relevant to the entire PBS Pro community
* [Users/Site Admins](http://community.openpbs.org/c/users-site-administrators) -- general questions and discussions among end users (system admins, engineers, scientists)
* [Developers](http://community.openpbs.org/c/developers) -- technical discussions among developers

To dive in deeper and learn more about the project and what the community is up to, visit:

* [Contributor’s portal](https://openpbs.atlassian.net/wiki) -- includes roadmaps, processes, how to articles, coding standards, release notes, etc  (Uses Confluence)
* [Source code](https://github.com/OpenPBS/openpbs) -- includes full source code and test framework (Uses Github)
* [Issue tracking system](https://github.com/OpenPBS/openpbs/issues) -- includes bugs and feature requests and status (Uses Github).  Previously, we used [JIRA](https://pbspro.atlassian.net), which contains older issues.

OpenPBS is also integrated in the OpenHPC software stack. The mission of OpenHPC is to provide an integrated collection of HPC-centric components to provide full-featured HPC software stacks. OpenHPC is a Linux Foundation Collaborative Project.  Learn more at:

* [OpenHPC.community](http://openhpc.community)
* [The Linux Foundation](http://thelinuxfoundation.org)

### Our Vision:  One Scheduler for the whole HPC World

There is a huge opportunity to advance the state of the art in HPC scheduling by bringing the whole HPC world together, marrying public sector innovations with private sector enterprise know-how, and retargeting the effort wasted re-implementing the same old capabilities again and again towards pushing the outside of the envelope.  At the heart of this vision is fostering common standards (at least defacto standards like common software).  To this end, Altair has made a big investment by releasing the PBS Professional technology as OpenPBS (under an Open Source license to meet the needs of the public sector), while also continuing to offer PBS Professional (under a commercial license to meet the needs of the private sector).  One defacto standard that can work for the whole HPC community.

### Current Build status
[![Build Status](https://travis-ci.com/OpenPBS/openpbs.svg?branch=master)](https://travis-ci.com/OpenPBS/openpbs)


================================================
FILE: autogen.sh
================================================
#!/bin/sh

#
# Copyright (C) 1994-2021 Altair Engineering, Inc.
# For more information, contact Altair at www.altair.com.
#
# This file is part of both the OpenPBS software ("OpenPBS")
# and the PBS Professional ("PBS Pro") software.
#
# Open Source License Information:
#
# OpenPBS is free software. You can redistribute it and/or modify it under
# the terms of the GNU Affero General Public License as published by the
# Free Software Foundation, either version 3 of the License, or (at your
# option) any later version.
#
# OpenPBS 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 Affero General Public
# License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
# Commercial License Information:
#
# PBS Pro is commercially licensed software that shares a common core with
# the OpenPBS software.  For a copy of the commercial license terms and
# conditions, go to: (http://www.pbspro.com/agreement.html) or contact the
# Altair Legal Department.
#
# Altair's dual-license business model allows companies, individuals, and
# organizations to create proprietary derivative works of OpenPBS and
# distribute them - whether embedded or bundled with other software -
# under a commercial license agreement.
#
# Use of Altair's trademarks, including but not limited to "PBS™",
# "OpenPBS®", "PBS Professional®", and "PBS Pro™" and Altair's logos is
# subject to Altair's trademark licensing policies.


if test -d ./src/resmom; then
	echo "Generating configure script and Makefile templates."
	exec autoreconf --force --install -I m4 $*
else
	echo "Execute `basename $0` from the top level distribution directory."
fi


================================================
FILE: azure-pipelines.yml
================================================
trigger:
  branches:
    include:
      - master
      - release_*

pr:
  branches:
    include:
      - master
      - release_*

pool:
  vmImage: 'ubuntu-latest'  # Changed from ubuntu-20.04

variables:
  - name: DOCKER_BUILDKIT
    value: 1

jobs:
  - job: runcheck
    displayName: 'Code Quality Checks'
    pool:
      vmImage: 'ubuntu-latest'
    steps:
      - checkout: self
        displayName: 'Checkout code'
      
      - bash: |
          sudo apt-get update
          sudo apt-get install -y python3-pip
          sudo pip3 install --upgrade pip
          sudo pip3 install pycodestyle pep8 flake8 clang-format
          
          # Create pep8 symlink if it doesn't exist (for compatibility)
          if ! command -v pep8 &> /dev/null; then
            sudo ln -sf $(which pycodestyle) /usr/local/bin/pep8
          fi
          
          # Verify installations
          echo "Checking installed tools:"
          python3 --version
          pip3 --version
          pep8 --version || pycodestyle --version
          clang-format --version
          
          # Check if runchecks script exists
          if [ -f ".github/runchecks" ]; then
            chmod +x .github/runchecks
            ./.github/runchecks
          else
            echo "Warning: .github/runchecks script not found"
            # Run basic checks if script is missing
            echo "Running basic Python style checks..."
            find . -name "*.py" -exec pep8 {} \; || true
          fi
        displayName: 'Run code quality checks'

  - job: ubuntu_2004_build
    displayName: 'Ubuntu 20.04'
    dependsOn: runcheck
    pool:
      vmImage: 'ubuntu-latest'
    variables:
      OS_TYPE: "ubuntu:20.04"
      PKG_INSTALL_CMD: "apt-get -y update && apt-get -y upgrade && apt-get install -y python3 build-essential"
      DOCKER_EXTRA_ARG: "-e DEBIAN_FRONTEND=noninteractive -e LANGUAGE=C.UTF-8 -e LANG=C.UTF-8 -e LC_ALL=C.UTF-8"
      CI_CMD: "./ci --local"
      CONTAINER_NAME: "ubuntu2004-$(Build.BuildId)"
    steps:
    - checkout: self
      displayName: 'Checkout code'
      
    - script: |
        echo "Starting build for Ubuntu 20.04"
        echo "OS Type: $(OS_TYPE)"
        echo "Package Install: $(PKG_INSTALL_CMD)"
        echo "Docker Args: $(DOCKER_EXTRA_ARG)"
        echo "CI Command: $(CI_CMD)"
        echo "Container Name: $(CONTAINER_NAME)"
      displayName: 'Display build configuration'
      
    - script: |
        # Pull the Docker image
        docker pull $(OS_TYPE)
        
        # Start the container with proper init to handle zombie processes
        docker run -d \
          $(DOCKER_EXTRA_ARG) \
          -h pbs.dev.local \
          --name $(CONTAINER_NAME) \
          -v $(pwd):$(pwd) \
          --privileged \
          --init \
          -w $(pwd) \
          $(OS_TYPE) \
          /bin/bash -c "sleep 3600"
          
        # Verify container is running
        docker ps | grep $(CONTAINER_NAME)
        
      displayName: 'Start Docker container'
      
    - script: |
        # Install packages
        docker exec $(CONTAINER_NAME) bash -c "$(PKG_INSTALL_CMD)"
        
        # Install additional tools for process management
        docker exec $(CONTAINER_NAME) bash -c "apt-get install -y procps psmisc"
        
        # Verify Python installation
        docker exec $(CONTAINER_NAME) python3 --version
        
      displayName: 'Install dependencies'
      
    - script: |
        # Monitor processes before running CI
        echo "=== Process monitoring before CI ==="
        docker exec $(CONTAINER_NAME) bash -c "
          echo 'Current processes:'
          ps aux | head -20
          echo ''
          echo 'Checking for zombie/defunct processes:'
          ps aux | grep -E 'defunct|<zombie>' || echo 'No zombie processes found'
          echo ''
          echo 'PBS-related processes:'
          ps aux | grep -E 'pbs_|openpbs' || echo 'No PBS processes found'
        "
      displayName: 'Monitor processes before CI'
      
    - script: |
        # Check if ci directory and script exist
        docker exec $(CONTAINER_NAME) bash -c "ls -la"
        docker exec $(CONTAINER_NAME) bash -c "if [ -d 'ci' ]; then ls -la ci/; else echo 'ci directory not found'; fi"
        
        # Run CI script if it exists
        if docker exec $(CONTAINER_NAME) bash -c "[ -f 'ci/ci' ] || [ -f './ci' ]"; then
          docker exec --privileged $(CONTAINER_NAME) bash -c "cd ci && $(CI_CMD)"
        else
          echo "CI script not found, running basic build test"
          docker exec $(CONTAINER_NAME) bash -c "python3 -c 'print(\"Python test successful\")'"
        fi
        
        # Check for any PBS processes and stop them properly
        echo "Checking for PBS processes..."
        docker exec $(CONTAINER_NAME) bash -c "ps aux | grep -E 'pbs_|openpbs' || echo 'No PBS processes found'"
        
        # Stop PBS services properly if they're running
        docker exec $(CONTAINER_NAME) bash -c "
          if command -v pbs_server &> /dev/null; then
            echo 'Stopping PBS services...'
            pkill -TERM pbs_server || true
            pkill -TERM pbs_sched || true
            pkill -TERM pbs_mom || true
            pkill -TERM pbs_ds_monitor || true
            sleep 2
            # Force kill if still running
            pkill -KILL pbs_server || true
            pkill -KILL pbs_sched || true
            pkill -KILL pbs_mom || true
            pkill -KILL pbs_ds_monitor || true
          fi
        " || true
        
      displayName: 'Run CI tests'
      
    - script: |
        # Proper PBS cleanup and container shutdown
        echo "Cleaning up PBS processes and container..."
        
        # Stop PBS services gracefully first
        docker exec $(CONTAINER_NAME) bash -c "
          echo 'Stopping PBS services gracefully...'
          if command -v qterm &> /dev/null; then
            qterm -t quick || true
          fi
          
          # Stop individual PBS components
          pkill -TERM pbs_server || true
          pkill -TERM pbs_sched || true  
          pkill -TERM pbs_mom || true
          pkill -TERM pbs_ds_monitor || true
          
          # Wait a bit for graceful shutdown
          sleep 3
          
          # Force kill any remaining PBS processes
          pkill -KILL pbs_server || true
          pkill -KILL pbs_sched || true
          pkill -KILL pbs_mom || true
          pkill -KILL pbs_ds_monitor || true
          
          # Clean up any remaining zombie processes
          ps aux | grep -E 'defunct|<zombie>' || echo 'No zombie processes found'
        " || true
        
        # Stop and remove container
        docker stop $(CONTAINER_NAME) || true
        docker rm $(CONTAINER_NAME) || true
        
      displayName: 'Cleanup Docker container'
      condition: always()

  - job: ubuntu_2404_build
    displayName: 'Ubuntu 24.04'
    dependsOn: runcheck
    pool:
      vmImage: 'ubuntu-latest'
    variables:
      OS_TYPE: "ubuntu:24.04"
      PKG_INSTALL_CMD: "apt-get -y update && apt-get -y upgrade && apt-get install -y python3 build-essential"
      DOCKER_EXTRA_ARG: "-e DEBIAN_FRONTEND=noninteractive -e LANGUAGE=C.UTF-8 -e LANG=C.UTF-8 -e LC_ALL=C.UTF-8"
      CI_CMD: "./ci --local"
      CONTAINER_NAME: "ubuntu2404-$(Build.BuildId)"
    steps:
    - checkout: self
      displayName: 'Checkout code'
      
    - script: |
        echo "Starting build for Ubuntu 24.04"
        echo "OS Type: $(OS_TYPE)"
        echo "Package Install: $(PKG_INSTALL_CMD)"
        echo "Docker Args: $(DOCKER_EXTRA_ARG)"
        echo "CI Command: $(CI_CMD)"
        echo "Container Name: $(CONTAINER_NAME)"
      displayName: 'Display build configuration'
      
    - script: |
        # Pull the Docker image
        docker pull $(OS_TYPE)
        
        # Start the container with proper init to handle zombie processes
        docker run -d \
          $(DOCKER_EXTRA_ARG) \
          -h pbs.dev.local \
          --name $(CONTAINER_NAME) \
          -v $(pwd):$(pwd) \
          --privileged \
          --init \
          -w $(pwd) \
          $(OS_TYPE) \
          /bin/bash -c "sleep 3600"
          
        # Verify container is running
        docker ps | grep $(CONTAINER_NAME)
        
      displayName: 'Start Docker container'
      
    - script: |
        # Install packages
        docker exec $(CONTAINER_NAME) bash -c "$(PKG_INSTALL_CMD)"
        
        # Install additional tools for process management
        docker exec $(CONTAINER_NAME) bash -c "apt-get install -y procps psmisc"
        
        # Verify Python installation
        docker exec $(CONTAINER_NAME) python3 --version
        
      displayName: 'Install dependencies'
      
    - script: |
        # Monitor processes before running CI
        echo "=== Process monitoring before CI ==="
        docker exec $(CONTAINER_NAME) bash -c "
          echo 'Current processes:'
          ps aux | head -20
          echo ''
          echo 'Checking for zombie/defunct processes:'
          ps aux | grep -E 'defunct|<zombie>' || echo 'No zombie processes found'
          echo ''
          echo 'PBS-related processes:'
          ps aux | grep -E 'pbs_|openpbs' || echo 'No PBS processes found'
        "
      displayName: 'Monitor processes before CI'
      
    - script: |
        # Check if ci directory and script exist
        docker exec $(CONTAINER_NAME) bash -c "ls -la"
        docker exec $(CONTAINER_NAME) bash -c "if [ -d 'ci' ]; then ls -la ci/; else echo 'ci directory not found'; fi"
        
        # Run CI script if it exists
        if docker exec $(CONTAINER_NAME) bash -c "[ -f 'ci/ci' ] || [ -f './ci' ]"; then
          docker exec --privileged $(CONTAINER_NAME) bash -c "cd ci && $(CI_CMD)"
        else
          echo "CI script not found, running basic build test"
          docker exec $(CONTAINER_NAME) bash -c "python3 -c 'print(\"Python test successful\")'"
        fi
        
        # Check for any PBS processes and stop them properly
        echo "Checking for PBS processes..."
        docker exec $(CONTAINER_NAME) bash -c "ps aux | grep -E 'pbs_|openpbs' || echo 'No PBS processes found'"
        
        # Stop PBS services properly if they're running
        docker exec $(CONTAINER_NAME) bash -c "
          if command -v pbs_server &> /dev/null; then
            echo 'Stopping PBS services...'
            pkill -TERM pbs_server || true
            pkill -TERM pbs_sched || true
            pkill -TERM pbs_mom || true
            pkill -TERM pbs_ds_monitor || true
            sleep 2
            # Force kill if still running
            pkill -KILL pbs_server || true
            pkill -KILL pbs_sched || true
            pkill -KILL pbs_mom || true
            pkill -KILL pbs_ds_monitor || true
          fi
        " || true
        
      displayName: 'Run CI tests'
      
    - script: |
        # Proper PBS cleanup and container shutdown
        echo "Cleaning up PBS processes and container..."
        
        # Stop PBS services gracefully first
        docker exec $(CONTAINER_NAME) bash -c "
          echo 'Stopping PBS services gracefully...'
          if command -v qterm &> /dev/null; then
            qterm -t quick || true
          fi
          
          # Stop individual PBS components
          pkill -TERM pbs_server || true
          pkill -TERM pbs_sched || true  
          pkill -TERM pbs_mom || true
          pkill -TERM pbs_ds_monitor || true
          
          # Wait a bit for graceful shutdown
          sleep 3
          
          # Force kill any remaining PBS processes
          pkill -KILL pbs_server || true
          pkill -KILL pbs_sched || true
          pkill -KILL pbs_mom || true
          pkill -KILL pbs_ds_monitor || true
          
          # Clean up any remaining zombie processes
          ps aux | grep -E 'defunct|<zombie>' || echo 'No zombie processes found'
        " || true
        
        # Stop and remove container
        docker stop $(CONTAINER_NAME) || true
        docker rm $(CONTAINER_NAME) || true
        
      displayName: 'Cleanup Docker container'
      condition: always()

  - job: rocky_sanitize_build
    displayName: 'Rocky Linux 9 Sanitize'
    dependsOn: runcheck
    pool:
      vmImage: 'ubuntu-latest'
    variables:
      OS_TYPE: "rockylinux/rockylinux:9.2"
      PKG_INSTALL_CMD: "yum -y update && yum -y install python3 gcc gcc-c++ make"
      DOCKER_EXTRA_ARG: "-e BUILD_MODE=sanitize"
      CI_CMD: "./ci --local=sanitize"
      CONTAINER_NAME: "rocky-sanitize-$(Build.BuildId)"
    steps:
    - checkout: self
      displayName: 'Checkout code'
      
    - script: |
        echo "Starting build for Rocky Linux 9 Sanitize"
        echo "OS Type: $(OS_TYPE)"
        echo "Package Install: $(PKG_INSTALL_CMD)"
        echo "Docker Args: $(DOCKER_EXTRA_ARG)"
        echo "CI Command: $(CI_CMD)"
        echo "Container Name: $(CONTAINER_NAME)"
      displayName: 'Display build configuration'
      
    - script: |
        # Pull the Docker image
        docker pull $(OS_TYPE)
        
        # Start the container with proper init to handle zombie processes
        docker run -d \
          $(DOCKER_EXTRA_ARG) \
          -h pbs.dev.local \
          --name $(CONTAINER_NAME) \
          -v $(pwd):$(pwd) \
          --privileged \
          --init \
          -w $(pwd) \
          $(OS_TYPE) \
          /bin/bash -c "sleep 3600"
          
        # Verify container is running
        docker ps | grep $(CONTAINER_NAME)
        
      displayName: 'Start Docker container'
      
    - script: |
        # Install packages
        docker exec $(CONTAINER_NAME) bash -c "$(PKG_INSTALL_CMD)"
        
        # Install additional tools for process management
        docker exec $(CONTAINER_NAME) bash -c "yum install -y procps-ng psmisc || dnf install -y procps-ng psmisc"
        
        # Verify Python installation
        docker exec $(CONTAINER_NAME) python3 --version
        
      displayName: 'Install dependencies'
      
    - script: |
        # Monitor processes before running CI
        echo "=== Process monitoring before CI ==="
        docker exec $(CONTAINER_NAME) bash -c "
          echo 'Current processes:'
          ps aux | head -20
          echo ''
          echo 'Checking for zombie/defunct processes:'
          ps aux | grep -E 'defunct|<zombie>' || echo 'No zombie processes found'
          echo ''
          echo 'PBS-related processes:'
          ps aux | grep -E 'pbs_|openpbs' || echo 'No PBS processes found'
        "
      displayName: 'Monitor processes before CI'
      
    - script: |
        # Check if ci directory and script exist
        docker exec $(CONTAINER_NAME) bash -c "ls -la"
        docker exec $(CONTAINER_NAME) bash -c "if [ -d 'ci' ]; then ls -la ci/; else echo 'ci directory not found'; fi"
        
        # Run CI script if it exists
        if docker exec $(CONTAINER_NAME) bash -c "[ -f 'ci/ci' ] || [ -f './ci' ]"; then
          docker exec --privileged $(CONTAINER_NAME) bash -c "cd ci && $(CI_CMD)"
        else
          echo "CI script not found, running basic build test"
          docker exec $(CONTAINER_NAME) bash -c "python3 -c 'print(\"Python test successful\")'"
        fi
        
        # Check for any PBS processes and stop them properly
        echo "Checking for PBS processes..."
        docker exec $(CONTAINER_NAME) bash -c "ps aux | grep -E 'pbs_|openpbs' || echo 'No PBS processes found'"
        
        # Stop PBS services properly if they're running
        docker exec $(CONTAINER_NAME) bash -c "
          if command -v pbs_server &> /dev/null; then
            echo 'Stopping PBS services...'
            pkill -TERM pbs_server || true
            pkill -TERM pbs_sched || true
            pkill -TERM pbs_mom || true
            pkill -TERM pbs_ds_monitor || true
            sleep 2
            # Force kill if still running
            pkill -KILL pbs_server || true
            pkill -KILL pbs_sched || true
            pkill -KILL pbs_mom || true
            pkill -KILL pbs_ds_monitor || true
          fi
        " || true
        
      displayName: 'Run CI tests'
      
    - script: |
        # Proper PBS cleanup and container shutdown
        echo "Cleaning up PBS processes and container..."
        
        # Stop PBS services gracefully first
        docker exec $(CONTAINER_NAME) bash -c "
          echo 'Stopping PBS services gracefully...'
          if command -v qterm &> /dev/null; then
            qterm -t quick || true
          fi
          
          # Stop individual PBS components
          pkill -TERM pbs_server || true
          pkill -TERM pbs_sched || true  
          pkill -TERM pbs_mom || true
          pkill -TERM pbs_ds_monitor || true
          
          # Wait a bit for graceful shutdown
          sleep 3
          
          # Force kill any remaining PBS processes
          pkill -KILL pbs_server || true
          pkill -KILL pbs_sched || true
          pkill -KILL pbs_mom || true
          pkill -KILL pbs_ds_monitor || true
          
          # Clean up any remaining zombie processes
          ps aux | grep -E 'defunct|<zombie>' || echo 'No zombie processes found'
        " || true
        
        # Stop and remove container
        docker stop $(CONTAINER_NAME) || true
        docker rm $(CONTAINER_NAME) || true
        
      displayName: 'Cleanup Docker container'
      condition: always()

  - job: rocky_kerberos_build
    displayName: 'Rocky Linux 9 Kerberos'
    dependsOn: runcheck
    pool:
      vmImage: 'ubuntu-latest'
    variables:
      OS_TYPE: "rockylinux/rockylinux:9.2"
      PKG_INSTALL_CMD: "yum -y update && yum -y install python3 gcc gcc-c++ make"
      DOCKER_EXTRA_ARG: "-e BUILD_MODE=kerberos"
      CI_CMD: "./ci --local"
      CONTAINER_NAME: "rocky-kerberos-$(Build.BuildId)"
    steps:
    - checkout: self
      displayName: 'Checkout code'
      
    - script: |
        echo "Starting build for Rocky Linux 9 Kerberos"
        echo "OS Type: $(OS_TYPE)"
        echo "Package Install: $(PKG_INSTALL_CMD)"
        echo "Docker Args: $(DOCKER_EXTRA_ARG)"
        echo "CI Command: $(CI_CMD)"
        echo "Container Name: $(CONTAINER_NAME)"
      displayName: 'Display build configuration'
      
    - script: |
        # Pull the Docker image
        docker pull $(OS_TYPE)
        
        # Start the container with proper init to handle zombie processes
        docker run -d \
          $(DOCKER_EXTRA_ARG) \
          -h pbs.dev.local \
          --name $(CONTAINER_NAME) \
          -v $(pwd):$(pwd) \
          --privileged \
          --init \
          -w $(pwd) \
          $(OS_TYPE) \
          /bin/bash -c "sleep 3600"
          
        # Verify container is running
        docker ps | grep $(CONTAINER_NAME)
        
      displayName: 'Start Docker container'
      
    - script: |
        # Install packages
        docker exec $(CONTAINER_NAME) bash -c "$(PKG_INSTALL_CMD)"
        
        # Install additional tools for process management
        docker exec $(CONTAINER_NAME) bash -c "yum install -y procps-ng psmisc || dnf install -y procps-ng psmisc"
        
        # Verify Python installation
        docker exec $(CONTAINER_NAME) python3 --version
        
      displayName: 'Install dependencies'
      
    - script: |
        # Monitor processes before running CI
        echo "=== Process monitoring before CI ==="
        docker exec $(CONTAINER_NAME) bash -c "
          echo 'Current processes:'
          ps aux | head -20
          echo ''
          echo 'Checking for zombie/defunct processes:'
          ps aux | grep -E 'defunct|<zombie>' || echo 'No zombie processes found'
          echo ''
          echo 'PBS-related processes:'
          ps aux | grep -E 'pbs_|openpbs' || echo 'No PBS processes found'
        "
      displayName: 'Monitor processes before CI'
      
    - script: |
        # Check if ci directory and script exist
        docker exec $(CONTAINER_NAME) bash -c "ls -la"
        docker exec $(CONTAINER_NAME) bash -c "if [ -d 'ci' ]; then ls -la ci/; else echo 'ci directory not found'; fi"
        
        # Run CI script if it exists
        if docker exec $(CONTAINER_NAME) bash -c "[ -f 'ci/ci' ] || [ -f './ci' ]"; then
          docker exec --privileged $(CONTAINER_NAME) bash -c "cd ci && $(CI_CMD)"
        else
          echo "CI script not found, running basic build test"
          docker exec $(CONTAINER_NAME) bash -c "python3 -c 'print(\"Python test successful\")'"
        fi
        
        # Check for any PBS processes and stop them properly
        echo "Checking for PBS processes..."
        docker exec $(CONTAINER_NAME) bash -c "ps aux | grep -E 'pbs_|openpbs' || echo 'No PBS processes found'"
        
        # Stop PBS services properly if they're running
        docker exec $(CONTAINER_NAME) bash -c "
          if command -v pbs_server &> /dev/null; then
            echo 'Stopping PBS services...'
            pkill -TERM pbs_server || true
            pkill -TERM pbs_sched || true
            pkill -TERM pbs_mom || true
            pkill -TERM pbs_ds_monitor || true
            sleep 2
            # Force kill if still running
            pkill -KILL pbs_server || true
            pkill -KILL pbs_sched || true
            pkill -KILL pbs_mom || true
            pkill -KILL pbs_ds_monitor || true
          fi
        " || true
        
      displayName: 'Run CI tests'
      
    - script: |
        # Proper PBS cleanup and container shutdown
        echo "Cleaning up PBS processes and container..."
        
        # Stop PBS services gracefully first
        docker exec $(CONTAINER_NAME) bash -c "
          echo 'Stopping PBS services gracefully...'
          if command -v qterm &> /dev/null; then
            qterm -t quick || true
          fi
          
          # Stop individual PBS components
          pkill -TERM pbs_server || true
          pkill -TERM pbs_sched || true  
          pkill -TERM pbs_mom || true
          pkill -TERM pbs_ds_monitor || true
          
          # Wait a bit for graceful shutdown
          sleep 3
          
          # Force kill any remaining PBS processes
          pkill -KILL pbs_server || true
          pkill -KILL pbs_sched || true
          pkill -KILL pbs_mom || true
          pkill -KILL pbs_ds_monitor || true
          
          # Clean up any remaining zombie processes
          ps aux | grep -E 'defunct|<zombie>' || echo 'No zombie processes found'
        " || true
        
        # Stop and remove container
        docker stop $(CONTAINER_NAME) || true
        docker rm $(CONTAINER_NAME) || true
        
      displayName: 'Cleanup Docker container'
      condition: always()


================================================
FILE: buildutils/Makefile.am
================================================

#
# Copyright (C) 1994-2021 Altair Engineering, Inc.
# For more information, contact Altair at www.altair.com.
#
# This file is part of both the OpenPBS software ("OpenPBS")
# and the PBS Professional ("PBS Pro") software.
#
# Open Source License Information:
#
# OpenPBS is free software. You can redistribute it and/or modify it under
# the terms of the GNU Affero General Public License as published by the
# Free Software Foundation, either version 3 of the License, or (at your
# option) any later version.
#
# OpenPBS 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 Affero General Public
# License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
# Commercial License Information:
#
# PBS Pro is commercially licensed software that shares a common core with
# the OpenPBS software.  For a copy of the commercial license terms and
# conditions, go to: (http://www.pbspro.com/agreement.html) or contact the
# Altair Legal Department.
#
# Altair's dual-license business model allows companies, individuals, and
# organizations to create proprietary derivative works of OpenPBS and
# distribute them - whether embedded or bundled with other software -
# under a commercial license agreement.
#
# Use of Altair's trademarks, including but not limited to "PBS™",
# "OpenPBS®", "PBS Professional®", and "PBS Pro™" and Altair's logos is
# subject to Altair's trademark licensing policies.

#

EXTRA_DIST = \
	attr_parser.py


================================================
FILE: buildutils/attr_parser.py
================================================
# coding: utf-8
# Copyright (C) 1994-2021 Altair Engineering, Inc.
# For more information, contact Altair at www.altair.com.
#
# This file is part of both the OpenPBS software ("OpenPBS")
# and the PBS Professional ("PBS Pro") software.
#
# Open Source License Information:
#
# OpenPBS is free software. You can redistribute it and/or modify it under
# the terms of the GNU Affero General Public License as published by the
# Free Software Foundation, either version 3 of the License, or (at your
# option) any later version.
#
# OpenPBS 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 Affero General Public
# License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
# Commercial License Information:
#
# PBS Pro is commercially licensed software that shares a common core with
# the OpenPBS software.  For a copy of the commercial license terms and
# conditions, go to: (http://www.pbspro.com/agreement.html) or contact the
# Altair Legal Department.
#
# Altair's dual-license business model allows companies, individuals, and
# organizations to create proprietary derivative works of OpenPBS and
# distribute them - whether embedded or bundled with other software -
# under a commercial license agreement.
#
# Use of Altair's trademarks, including but not limited to "PBS™",
# "OpenPBS®", "PBS Professional®", and "PBS Pro™" and Altair's logos is
# subject to Altair's trademark licensing policies.


"""
    attr_parser.py will parse xml files also called master attribute files
containing all the members of both server and ecl files,and will generate
two corresponding files one for server and one for ecl
"""
import getopt
import os
import pdb
import re
import string
import sys
import enum
import xml.dom.minidom
import xml.parsers.expat

list_ecl = []
list_svr = []
list_defs = []

global attr_type
global newattr

class PropType(enum.Enum):
    '''
    BOTH - Write information for this tag to all the output files
    SERVER - Write information for this tag to the SERVER file only
    ECL - Write information for this tag to the ECL file only
    '''
    BOTH = 0
    SERVER = 1
    ECL = 2

class switch(object):
    """
    This class provides the functionality which is equivalent
    to switch/case statements in C. It only needs to be defined
    once.
    """

    def __init__(self, value):
        self.value = value
        self.fall = False

    def __iter__(self):
        """Return the match method once, then stop"""
        yield self.match

    def match(self, *args):
        """Indicate whether or not to enter a case suite"""
        if self.fall or not args:
            return True
        elif self.value in args:  # changed for v1.5, see below
            self.fall = True
            return True
        else:
            return False


def fileappend(prop_type, line):
    '''
    Selects files to append line to dependig on prop_type
    prop_type - BOTH, SERVER, ECL
    line - The string line to append to the file(s)
    '''
    global attr_type

    if prop_type == PropType.SERVER:
        if attr_type == PropType.SERVER or attr_type == PropType.BOTH:
            list_svr.append(line)
    elif prop_type == PropType.ECL:
        if attr_type == PropType.ECL or attr_type == PropType.BOTH:
            list_ecl.append(line)
    elif prop_type == PropType.BOTH:
        if attr_type == PropType.SERVER or attr_type == PropType.BOTH:
            list_svr.append(line)
        if attr_type == PropType.ECL or attr_type == PropType.BOTH:
            list_ecl.append(line)
    return None


def getText(svr_file, ecl_file, defines_file):
    '''
    getText function - (writes the data stored in lists to file)
    svr_file - the server side output file
    ecl_file - the output file to be used by the ECL layer
    defines_file - the output file containing the macro definitions for the
                   index positions
    '''
    buff = "".join(list_svr)
    for line in buff:
        svr_file.write(line)

    buff = "".join(list_ecl)
    for line in buff:
        ecl_file.write(line)

    buff = "".join(list_defs)
    for line in buff:
        defines_file.write(line)


def do_head(node):
    '''
    Processes the head element of the node passed
    '''
    alist = node.getElementsByTagName('head')
    for a in alist:
        list_svr.append("/*Disclaimer: This is a machine generated file.*/" +
                        '\n')
        list_svr.append("/*For modifying any attribute change corresponding "
                        "XML file */" + '\n')
        list_ecl.append("/*Disclaimer: This is a machine generated file.*/" +
                        '\n')
        list_ecl.append("/*For modifying any attribute change corresponding "
                        "XML file */" + '\n')
        blist = a.getElementsByTagName('SVR')
        blist_ecl = a.getElementsByTagName('ECL')
        for s in blist:
            text1 = s.childNodes[0].nodeValue
            text1 = text1.strip(' \t')
            list_svr.append(text1)
        for e in blist_ecl:
            text2 = e.childNodes[0].nodeValue
            text2 = text2.strip(' \t')
            list_ecl.append(text2)


def do_index(attr):
    '''
    Processes the member_index attribute attr
    '''
    li = None
    li = attr.getElementsByTagName('member_index')
    if li:
        for v in li:
            buf = v.childNodes[0].nodeValue
            list_defs.append("\n\t" + buf + ",")


def do_member(attr, p_flag, tag_name):
    '''
    Processes the member identified by tage_name
    attr - the attribute definition node
    p_flag - property flag - SVR, ECL, BOTH
    tag_name - the tag_name string to process
    '''
    global newattr
    buf = None
    comma = ','
    if newattr:
        comma = ''

    newattr = False
    li = attr.getElementsByTagName(tag_name)
    if li:
        svr = li[0].getElementsByTagName('SVR')
        if svr:
            value = svr
            for v in value:
                buf = v.childNodes[0].nodeValue
                fileappend(PropType.SERVER, comma + '\n' + '\t' + '\t' + buf)

        ecl = li[0].getElementsByTagName('ECL')
        if ecl:
            value = ecl
            for v in value:
                buf = v.childNodes[0].nodeValue
                fileappend(PropType.ECL, comma + '\n' + '\t' + '\t' + buf)

        value = li
        for v in value:
            buf = v.childNodes[0].nodeValue
            if buf:
                s = buf.strip('\n \t')
                if s:
                    fileappend(p_flag, comma + '\n' + '\t' + '\t' + buf)


def process(master_file, svr_file, ecl_file, defines_file):
    '''
    process the master xml file and produce the outputs files as requested
    master_file - the Master XML files to process
    svr_file - the server side output file
    ecl_file - the output file to be used by the ECL layer
    defines_file - the output file containing the macro definitions for the
                   index positions
    '''
    from xml.dom import minidom

    global attr_type
    global newattr
    newattr = False

    doc = minidom.parse(master_file)
    nodes = doc.getElementsByTagName('data')

    for node in nodes:
        do_head(node)
    
        at_list = node.getElementsByTagName('attributes')
        for attr in at_list:
            attr_type = PropType.BOTH
            newattr  = True

            flag_name = attr.getAttribute('flag')
            if flag_name == 'SVR':
                attr_type = PropType.SERVER
            if flag_name == 'ECL':
                attr_type = PropType.ECL

            inc_name =  attr.getAttribute('include')
            if inc_name:
                fileappend(PropType.SERVER, '\n' + inc_name)

            mem_list = attr.childNodes[0].nodeValue
            mem_list = mem_list.strip(' \t')
            fileappend(PropType.BOTH, mem_list)

            macro_name = attr.getAttribute('macro')
            if macro_name:
                fileappend(PropType.BOTH, '\n' + macro_name + "\n")

            do_index(attr)
            fileappend(PropType.BOTH, '\t{')

            do_member(attr, PropType.BOTH, 'member_name')
            do_member(attr, PropType.SERVER, 'member_at_decode')
            do_member(attr, PropType.SERVER, 'member_at_encode')
            do_member(attr, PropType.SERVER, 'member_at_set')
            do_member(attr, PropType.SERVER, 'member_at_comp')
            do_member(attr, PropType.SERVER, 'member_at_free')
            do_member(attr, PropType.SERVER, 'member_at_action')
            do_member(attr, PropType.BOTH, 'member_at_flags')
            do_member(attr, PropType.BOTH, 'member_at_type')
            do_member(attr, PropType.SERVER, 'member_at_parent')
            do_member(attr, PropType.ECL, 'member_verify_function')
            do_member(attr, PropType.SERVER, 'member_at_entlim')
            do_member(attr, PropType.SERVER, 'member_at_struct')

            fileappend(PropType.BOTH, '\n\t}')
            fileappend(PropType.BOTH, ",")

            if macro_name:
                fileappend(PropType.BOTH, '\n#else')
                fileappend(PropType.BOTH, '\n\t{\n\t\t"noop"\n\t},')
                fileappend(PropType.BOTH, '\n#endif')

        tail_list = node.getElementsByTagName('tail')
        for t in tail_list:
            tail_value = t.childNodes[0].nodeValue
            if tail_value is None:
                pass
            fileappend(PropType.BOTH, '\n')
            tail_both = t.getElementsByTagName('both')
            tail_svr = t.getElementsByTagName('SVR')
            tail_ecl = t.getElementsByTagName('ECL')
            for tb in tail_both:
                b = tb.childNodes[0].nodeValue
                b = b.strip(' \t')
                list_ecl.append(b)
                list_svr.append(b)
            for ts in tail_svr:
                s = ts.childNodes[0].nodeValue
                s = s.strip(' \t')
                list_svr.append(s)
            for te in tail_ecl:
                e = te.childNodes[0].nodeValue
                e = e.strip(' \t')
                list_ecl.append(e)

        getText(svr_file, ecl_file, defines_file)


def main(argv):
    '''
    Opens files,and calls appropriate functions based on Object values.
    '''
    global SVR_FILENAME
    global ECL_FILENAME
    global DEFINES_FILENAME
    global MASTER_FILENAME

    SVR_FILENAME = "/dev/null"
    ECL_FILENAME = "/dev/null"
    DEFINES_FILENAME = "/dev/null"
    MASTER_FILENAME = "/dev/null"

    if len(sys.argv) == 2:
        usage()
        sys.exit(1)
    try:
        opts, args = getopt.getopt(
            argv, "m:s:e:d:h",
            ["master=", "svr=", "ecl=", "attr=", "help=", "defines="])
    except getopt.error as err:
        print(str(err))
        usage()
        sys.exit(1)
    for opt, arg in opts:
        if opt in ('-h', "--help"):
            usage()
            sys.exit(1)
        elif opt in ("-m", "--master"):
            MASTER_FILENAME = arg
        elif opt in ("-s", "--svr"):
            SVR_FILENAME = arg
        elif opt in ("-d", "--defines"):
            DEFINES_FILENAME = arg
        elif opt in ("-e", "--ecl"):
            ECL_FILENAME = arg
        else:
            print("Invalid Option!")
            sys.exit(1)
#    Error conditions are checked here.

    if (MASTER_FILENAME is None or not os.path.isfile(MASTER_FILENAME) or
            not os.path.getsize(MASTER_FILENAME) > 0):
        print("Master file not found or data is not present in File")
        sys.exit(1)

    try:
        master_file = open(MASTER_FILENAME, encoding='utf-8')
    except IOError as err:
        print(str(err))
        print('Cannot open master file ' + MASTER_FILENAME)
        sys.exit(1)

    try:
        svr_file = open(SVR_FILENAME, 'w', encoding='utf-8')
    except IOError as err:
        print(str(err))
        print('Cannot open ferver file ' + SVR_FILENAME)
        sys.exit(1)

    try:
        defines_file = open(DEFINES_FILENAME, 'w', encoding='utf-8')
    except IOError as err:
        print(str(err))
        print('Cannot open defines file ' + DEFINES_FILENAME)
        sys.exit(1)

    try:
        ecl_file = open(ECL_FILENAME, 'w', encoding='utf-8')
    except IOError as err:
        print(str(err))
        print('Cannot open ecl file ' + ECL_FILENAME)
        sys.exit(1)

    process(master_file, svr_file, ecl_file, defines_file)

    master_file.close()
    svr_file.close()
    ecl_file.close()


def usage():
    """
    Usage (depicts the usage of the script)
    """
    print("usage: prog -m <MASTER_FILENAME> -s <svr_attr_file> "
          "-e <ecl_attr_file> -d <defines_file>")


if __name__ == "__main__":
    main(sys.argv[1:])


================================================
FILE: ci/README.md
================================================
Instant-CI is a developer tool which aims at providing continous integration to the developers locally on their development systems.
Users can build, install PBS and run PTL tests with a single command. For this, the user need not worry about any underlying dependencies.
It also supports build and test history in the form of logs.

Dependencies for this tool are:
* python3.5 or above
* docker (17.12.0+)
* docker-compose

***How to setup:***

Simply invoke the following command:

` ./ci`

***CLI interface for ci:***

* **./ci :** This is the primary command for ci. It starts the container (if not already running), builds PBS dependencies. Will configure(if required), make and install PBS. If the tests option are given it will run PTL with the same. It does not take any argument.
```bash
./ci
 ```

* **./ci --params:** The params option can be used to run ci with a custom configuration.
Following parameters can be set.
| os | nodes | configure | tests |
> os: used to set OS platform of the container (single node) <br>
> nodes: used to define multi-node configuration for container <br>
> configure: will hold the value of configure options for PBS <br>
> tests: will hold the value for pbs_benchpress argument for PTL; if set empty will skip PTL tests <br>

```bash
# When the params command is called without any arguments it will display the currently set "configuration" and then proceed to run ci
# as the following example.
./ci --params
# or
./ci -p


# The following command is an example of how to provide a custom configure option for PBS. Everything to the right of the first '=' after configure will
# be taken as it is and given as an argument to the configure file in PBS. The same convention follows for other configuration options as well
./ci --params 'configure=CFLAGS=" -O2 -Wall -Werror" --prefix=/tmp/pbs --enable-ptl'

# You can also pass multiple parameter with this option for example
./ci -p 'configure=--enable-ptl --prefix=/opt/pbs' -p 'tests=-t SmokeTest.test_basic'


# The following are examples how to define a custom test case for pbs_benchpress.
# NOTE: The string is passed to pbs_benchpress command therefore one can use all available options of pbs_benchpress here.
# By default the test option is set to '-t SmokeTest'
./ci --params 'tests=-f pbs_smoketest.py'
./ci --params 'tests=--tags=smoke'


# If you wish to not run any PTL tests then use the below command. This will set tests as empty thus not invoking PTL.
./ci --params 'tests='


# Below is an example of setting the container operating system. This will setup a single container running PBS server.
# NOTE: ci uses cached image to increase performance. These cached images are saved on the local system
#		with the suffix '-ci-pbs'. If you do not wish to use the cached image(s) delete them using <docker rmi {image_name}>.
# OS platform can be defined by any image from docker-hub
./ci --params 'os=centos:7'


# Following is an example of how to define multi node setup for PBS.
# You can define multiple 'mom' or 'comm' nodes but only one 'server' node
./ci --params 'nodes=mom=centos:7;server=ubuntu:16.04;comm=ubuntu:18.04;mom=centos:8'

```


* **./ci --build-pkgs:** Invoke this command to build PBS packages. By default it will build packages for the platform ci container is started for.
Optionally accepts argument for other platform. The packages can be found in 'ci/packages' folder.

```bash
# Below command builds package for the platform ci was started/currently running on.
./ci --build-pkgs
# or
./ci -b

```

* **./ci --delete:** This will delete any containers created by this tool and take a backup of logs. The current logs can be found in the "logs" folder in the ci folder. The backup of previous sessions logs can be can be found in the ci/logs/session-{date}-{timestamp} folder.

```bash
# If you want to delete the container simply invoke this command.
./ci --delete
# or
./ci -d
```

* **./ci --local:** This will build, install PBS, and run smoke tests on the local machine. This option can not be combined with other options. It does not take configurations from params but runs with predefined params(as run in travis).
```bash
# The command to run
./ci --local
#or
./ci -l

# Optionally one can run the sanitize version (works only on centos:7) with the following argument
./ci --local sanitize
```


================================================
FILE: ci/ci
================================================
#!/usr/bin/env python3

# Copyright (C) 1994-2021 Altair Engineering, Inc.
# For more information, contact Altair at www.altair.com.
#
# This file is part of both the OpenPBS software ("OpenPBS")
# and the PBS Professional ("PBS Pro") software.
#
# Open Source License Information:
#
# OpenPBS is free software. You can redistribute it and/or modify it under
# the terms of the GNU Affero General Public License as published by the
# Free Software Foundation, either version 3 of the License, or (at your
# option) any later version.
#
# OpenPBS 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 Affero General Public
# License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
# Commercial License Information:
#
# PBS Pro is commercially licensed software that shares a common core with
# the OpenPBS software.  For a copy of the commercial license terms and
# conditions, go to: (http://www.pbspro.com/agreement.html) or contact the
# Altair Legal Department.
#
# Altair's dual-license business model allows companies, individuals, and
# organizations to create proprietary derivative works of OpenPBS and
# distribute them - whether embedded or bundled with other software -
# under a commercial license agreement.
#
# Use of Altair's trademarks, including but not limited to "PBS™",
# "OpenPBS®", "PBS Professional®", and "PBS Pro™" and Altair's logos is
# subject to Altair's trademark licensing policies.

import argparse
import configparser
import copy
import fileinput
import json
import os
import platform
import re
import shlex
import shutil
import subprocess
import sys
import textwrap
import threading
import time
from argparse import RawTextHelpFormatter
from string import Template

ci_dirname = ''
default_platform = ''
MACROS = {}


def read_macros():
    for line in open(os.path.join(ci_dirname, 'etc', 'macros')):
        var, value = line.split('=')
        MACROS[var] = value.replace('\n', '')


requirements_template = Template('''num_servers=${num_servers}
num_moms=${num_moms}
num_comms=${num_comms}
no_mom_on_server=${no_mom_on_server}
no_comm_on_server=${no_comm_on_server}
no_comm_on_mom=${no_comm_on_mom}
''')

service_template_prist = Template('''{
"image": "${image}",
"volumes": [
    "../:/pbssrc",
    "./:/src",
    "./logs:/logs",
    "./etc:/workspace/etc"
],
"entrypoint": "/workspace/etc/container-init",
"environment": [
    "NODE_TYPE=${node_type}",
    "LANG=en_US.utf-8"
],
"networks": {
    "ci.local": { }
},
"domainname": "ci.local",
"container_name": "${hostname}",
"hostname": "${hostname}",
"user": "root",
"privileged": true,
"stdin_open": true,
"tty": true
}''')


def log_error(msg):
    print("ERROR ::: " + str(msg))


def log_info(msg):
    t = time.localtime()
    current_time = time.strftime("%H:%M:%S", t)
    print(current_time + " ---> " + str(msg))


def log_warning(msg):
    print("WARNING ::: " + str(msg))


def get_services_list():
    _ps = subprocess.run(
        ["docker-compose", "-f", "docker-compose.json",
         "ps", "--filter", "status=running", "--services"],
        stdout=subprocess.PIPE)
    _p = str((_ps.stdout).decode('utf-8'))
    return [x for x in _p.splitlines() if len(x) > 0]


def get_compose_file_services_list():
    compose_file = os.path.join(ci_dirname, 'docker-compose.json')
    with open(compose_file) as f:
        compose_file = json.loads(f.read())
    return list(compose_file['services'].keys())


def run_cmd(cmd, return_output=False):
    '''
    Run a terminal command, and if needed return output of the command.
    '''
    cmd = shlex.split(cmd)
    try:
        a = subprocess.Popen(cmd, stdout=subprocess.PIPE)
        out, err = a.communicate()
        if a.returncode != 0:
            log_error("command failed")
            log_error(str(err))
        else:
            if return_output:
                return str(out)
    except Exception as e:
        log_error("The command failed.")
        log_error(e)


def run_docker_cmd(run_cmd, run_on='all'):
    '''
    Runs a docker command and on failure redirects user to
    the container terminal
    '''
    services = get_services_list()
    services.sort(reverse=True)  # we want server cmds to run first
    for service in services:
        cmd = "docker-compose -f docker-compose.json exec "
        cmd += service + " bash -c \'" + run_cmd + "\'"
        if run_on != 'all' and service.find(run_on) == -1:
            log_info('Skipping on ' + service +
                     ' as command only to be run on ' + run_on)
            continue
        try:
            log_info(cmd)
            docker_cmd = shlex.split(cmd)
            a = subprocess.Popen(docker_cmd)
            a.communicate()
            if a.returncode != 0:
                _msg = "docker cmd returned with non zero exit code,"
                _msg += "redirecting you to container terminal"
                log_error(_msg)
                _docker_cmd = "docker-compose -f docker-compose.json exec "
                _docker_cmd += service + " bash -c \'cd /pbssrc && /bin/bash\'"
                docker_cmd = shlex.split(_docker_cmd)
                subprocess.run(docker_cmd)
                os._exit(1)
        except Exception as e:
            log_error("Failed\n:")
            log_error(e)


def write_to_file(file_path, value):
    with open(file_path, "w+") as f:
        f.write(value)


def read_from_file(file_path):
    if not os.path.isfile(file_path):
        open(file_path, 'a').close()
    with open(file_path, 'r+') as f:
        val = f.read()
    return val


def commit_docker_image():
    '''
    Watch for readiness of ci containers to commit a new image
    '''

    images_to_commit = {}
    time_spent = 0
    services = get_services_list()
    service_count = len(services)
    timeout = 1 * 60 * 60
    while service_count > 0:
        # Do not want to check constantly as it increases cpu load
        time.sleep(15)
        time_spent = time_spent + 15
        if time_spent > timeout:
            log_error("build is taking too long, timed out")
            sys.exit(1)
        status = read_from_file(os.path.join(
            ci_dirname, MACROS['CONFIG_DIR'], MACROS['STATUS_FILE']))
        for service in services:
            if str(status).find(service) != -1:
                services.remove(service)
                service_count -= 1
                image = (service.split('-', 1)[1][:-2]).replace('-', ':')
                image = image.replace("_", ".")
                images_to_commit[image] = service
    for key in images_to_commit:
        try:
            build_id = 'docker-compose -f docker-compose.json ps -q ' + \
                images_to_commit[key]
            build_id = run_cmd(build_id, True)
            build_id = build_id.split("'")[1]
            build_id = build_id[:12]
            image_name = (str(key).replace(':', '-')
                          ).replace('.', '_') + '-ci-pbs'
            # shortening the build id to 12 characters as is displayed by
            # 'docker ps' unlike 'docker-compose ps'  which shows full id
            cmd = 'docker commit '+build_id+' '+image_name+':latest'
            log_info(cmd)
            run_cmd(cmd)
        except Exception as e:
            log_error(e)
        try:
            bad_images = "docker images -qa -f'dangling=true'"
            bad_images = run_cmd(bad_images, True)
            if bad_images != "b''":
                bad_images = (bad_images.split("'")[1]).replace("\\n", " ")
                print("The following untagged images will be removed -> " +
                      bad_images)
                cmd = 'docker rmi ' + bad_images
                run_cmd(cmd)
        except Exception as e:
            log_warning(
                "could not remove bad (dangling) images, \
                please remove manually")
            print(e)
    return True


def create_ts_tree_json():
    benchpress_opt = os.path.join(
        ci_dirname, MACROS['CONFIG_DIR'], MACROS['BENCHPRESS_OPT_FILE'])
    benchpress_value = read_from_file(benchpress_opt)
    try:
        cmd = '/src/etc/gen_ptl_json.sh "' + benchpress_value + '"'
        run_docker_cmd(cmd, run_on='server')
    except Exception:
        log_error('Failed to generate testsuite info json')
        sys.exit(1)


def get_node_config(node_image=default_platform):
    '''
    Calculate the required node configuration for given
    requirements decorator and return node config
    '''
    json_data = {}
    max_servers_needed = 1
    max_moms_needed = 1
    max_comms_needed = 1
    no_mom_on_server_flag = False
    no_comm_on_mom_flag = True
    no_comm_on_server_flag = False
    try:
        with open(os.path.join(ci_dirname, 'ptl_ts_tree.json')) as f:
            json_data = json.load(f)
    except Exception:
        log_error('Could not find ptl tree json file')
    for ts in json_data.values():
        for tclist in ts['tclist'].values():
            max_moms_needed = max(
                tclist['requirements']['num_moms'], max_moms_needed)
            max_servers_needed = max(
                tclist['requirements']['num_servers'], max_servers_needed)
            max_comms_needed = max(
                tclist['requirements']['num_comms'], max_comms_needed)
            no_mom_on_server_flag = tclist['requirements']['no_mom_on_server']\
                or no_mom_on_server_flag
            no_comm_on_server_flag = tclist['requirements']['no_comm_on_server']\
                or no_comm_on_server_flag
            no_comm_on_mom_flag = tclist['requirements']['no_comm_on_mom']\
                or no_comm_on_mom_flag
    # Create a bash readable requirements decorator file
    write_to_file(os.path.join(ci_dirname, MACROS['CONFIG_DIR'],
                               MACROS['REQUIREMENT_DECORATOR_FILE']),
                  requirements_template.substitute(num_servers=max_servers_needed,
                                                   num_moms=max_moms_needed,
                                                   num_comms=max_comms_needed,
                                                   no_mom_on_server=no_mom_on_server_flag,
                                                   no_comm_on_server=no_comm_on_server_flag,
                                                   no_comm_on_mom=no_comm_on_mom_flag))

    server_nodes = []
    mom_nodes = []
    comm_nodes = []
    # get required number of servers and moms
    for _ in range(max_servers_needed):
        server_nodes.append(node_image)
    if not no_mom_on_server_flag:
        max_moms_needed = max(max_moms_needed, max_servers_needed)
        if max_moms_needed > max_servers_needed:
            for _ in range(max_moms_needed - max_servers_needed):
                mom_nodes.append(node_image)
    else:
        for _ in range(max_moms_needed):
            mom_nodes.append(node_image)

    only_moms = len(mom_nodes)
    # get required num of comms
    if no_comm_on_mom_flag and no_comm_on_server_flag:
        for _ in range(max_comms_needed):
            comm_nodes.append(node_image)
    elif no_comm_on_mom_flag and not no_comm_on_server_flag:
        if max_comms_needed > max_servers_needed:
            for _ in range(max_comms_needed-max_servers_needed):
                comm_nodes.append(node_image)
    else:
        if max_comms_needed > only_moms:
            for _ in range(max_comms_needed - only_moms):
                comm_nodes.append(node_image)

    # remove the trailing ';' from the node_config string
    mom_nodes = ['mom=' + x for x in mom_nodes]
    server_nodes = ['server=' + x for x in server_nodes]
    comm_nodes = ['comm=' + x for x in comm_nodes]
    node_images = ";".join(server_nodes + mom_nodes + comm_nodes)
    return node_images


def tail_build_log():
    server_name = ''
    build_log_path = get_services_list()
    for i in build_log_path:
        if i.find('server') != -1:
            build_log_path = i
            server_name = i
    build_log_path = os.path.join(
        ci_dirname, 'logs', 'build-' + build_log_path)
    prev = ''
    next = ''
    with open(build_log_path, 'rb') as f:
        while True:
            f.seek(-2, os.SEEK_END)
            while f.read(1) != b'\n':
                f.seek(-2, os.SEEK_CUR)
            next = f.readline().decode()
            if next != prev:
                print(next, end='')
                prev = next
            else:
                status = os.path.join(
                    ci_dirname, MACROS['CONFIG_DIR'], MACROS['STATUS_FILE'])
                status = read_from_file(status)
                if status.find(server_name) != -1:
                    return


def check_for_existing_image(val=default_platform):
    '''
    This function will check whether an existing image with the
    post-fix of '-ci-pbs' exists or not for the given docker image.
    '''
    if val.find('-ci-pbs') == -1:
        search_str = val.replace(":", "-")
        search_str = search_str.replace(".", '_')
        search_str += '-ci-pbs'
    cmd = 'docker images -q ' + search_str
    search_result = run_cmd(cmd, True)
    if search_result != "b''":
        return True, search_str
    else:
        return False, val


def get_current_setup():
    '''
    Returns the node config for currently running ci containers
    '''
    compose_file = os.path.join(ci_dirname, 'docker-compose.json')
    node_config = ''
    with open(compose_file) as f:
        compose_file = json.loads(f.read())
    for service in compose_file['services']:
        image = compose_file["services"][service]['image']
        if image[-7:] == '-ci-pbs':
            image = image[:-7][::-1].replace('-', ':', 1)[::-1]
        node_type = compose_file["services"][service]['environment'][0]
        node_type = node_type.split('=')[1]
        node_config += node_type + '=' + image + ';'
    node_config = node_config[:-1]
    return node_config


def load_conf():
    conf_file = os.path.join(
        ci_dirname, MACROS['CONFIG_DIR'], MACROS['CONF_JSON_FILE'])
    with open(conf_file) as f:
        conf_file = json.loads(f.read())
    return conf_file


def show_set_opts():
    conf_opts = load_conf()
    os_file_list = get_compose_file_services_list()
    os_file_list = [(x.split('-', 1)[0] + '=' + x.split('-', 1)[1][:-2]
                     ).replace('-', ':').replace('_', '.')
                    for x in os_file_list]
    os_file_list.sort()
    conf_opts['OS'] = os_file_list
    print(json.dumps(conf_opts, indent=2, sort_keys=True))


def create_param_file():
    '''
    Create param file with necessary node configuration for
    multi node PTL tests.
    '''
    moms = []
    comms = []
    include_server_mom = False
    include_server_comm = False
    include_mom_comm = False
    reqs = read_from_file(os.path.join(
        ci_dirname, MACROS['CONFIG_DIR'],
        MACROS['REQUIREMENT_DECORATOR_FILE']))
    if reqs.find('no_mom_on_server=False') != -1:
        include_server_mom = True
    if reqs.find('no_comm_on_server=False') != -1:
        include_server_comm = True
    if reqs.find('no_comm_on_mom=False') != -1:
        include_mom_comm = True
    for service in get_services_list():
        service = service+'.ci.local'
        if service.find('server') != -1:
            if include_server_mom:
                moms.append(service)
            if include_server_comm:
                comms.append(service)
        if service.find('mom') != -1:
            moms.append(service)
            if include_mom_comm:
                comms.append(service)
        if service.find('comm') != -1:
            comms.append(service)
    write_str = ''
    if len(moms) != 0:
        write_str = 'moms=' + ':'.join(moms) + '\n'
    if len(comms) != 0:
        write_str += 'comms=' + ':'.join(comms)
    param_path = os.path.join(
        ci_dirname, MACROS['CONFIG_DIR'], MACROS['PARAM_FILE'])
    write_to_file(param_path, write_str)


def unpack_node_string(nodes):
    '''
    Helper function to expand abbreviated node config
    '''
    for x in nodes:
        if x.find('*') != -1:
            num = x.split('*')[0]
            try:
                num = int(num)
            except Exception:
                log_error('invalid string provided for "nodes" configuration')
                sys.exit(1)
            val = x.split('*')[1]
            nodes.remove(x)
            for _ in range(num):
                nodes.append(val)
    return ';'.join(nodes)


def build_compose_file(nodes):
    '''
    Build docker-compose file for given node config in function parameter
    '''
    compose_template = {
        "version": "3.5",
        "networks": {
            "ci.local": {
                "name": "ci.local"
            }
        },
        "services": {}
    }
    if nodes.find("*") != -1:
        nodes = unpack_node_string(nodes.split(';'))
    count = 0
    server = ''
    for n in nodes.split(';'):
        count = count + 1
        node_key, node_val = n.split('=')
        if (node_val not in MACROS['SUPPORTED_PLATFORMS'].split(',')
                and ''.join(sys.argv).find(node_val) != -1):
            log_warning("Given platform '" + node_val + "' is not supported by" +
                        " ci, will result in unexpected behaviour")
            log_warning("Supported platforms are " +
                        MACROS['SUPPORTED_PLATFORMS'])
        node_name = node_key + '-' + \
            (node_val.replace(':', '-')).replace('.', '_') + '-' + str(count)
        image_value = node_val
        _, image_value = check_for_existing_image(node_val)
        service_template = json.loads(service_template_prist.substitute(
            image=image_value, node_type=node_key,
            hostname=node_name))
        if node_key == 'server':
            server = node_name
        compose_template['services'][node_name] = service_template
    for service in compose_template['services']:
        compose_template['services'][service]['environment'].append(
            "SERVER="+server)
    f = open(os.path.join(ci_dirname, 'docker-compose.json'), 'w')
    json.dump(compose_template, f, indent=2, sort_keys=True)
    f.close()
    log_info("Configured nodes for ci")


def ensure_ci_running():
    '''
    Check for running ci container; if not start ci container.
    '''
    try:
        service_count = len(get_services_list())
        if service_count == 0:
            log_info("No running service found")
            try:
                log_info('Attempting to start container')
                os.chdir(ci_dirname)
                subprocess.run(["docker-compose", "-f",
                                "docker-compose.json", "down",
                                "--remove-orphans"],
                               stdout=subprocess.DEVNULL)
                if os.path.exists(os.path.join(ci_dirname,
                                               MACROS['CONFIG_DIR'],
                                               MACROS['STATUS_FILE'])):
                    os.remove(os.path.join(
                        ci_dirname, MACROS['CONFIG_DIR'],
                        MACROS['STATUS_FILE']))
                write_to_file(os.path.join(
                    ci_dirname, MACROS['CONFIG_DIR'],
                    MACROS['STATUS_FILE']), '')
                subprocess.run(
                    ["docker-compose", "-f",
                     "docker-compose.json", "up", "-d"])
                log_info('Waiting for container build to complete ')
                build_log_path = os.path.join(ci_dirname, 'logs')
                log_info("Build logs can be found in " + build_log_path)
                # wait for build to complete and commit newly built container
                tail_build_log()
                commit_docker_image()
            except Exception as e:
                log_error(e)
        else:
            log_info("running container found")
            return 0
    except Exception:
        log_error(e)


def check_prerequisites():
    '''
    This function will check whether docker docker-compose commands
    are available. Also check docker version is minimum required.
    '''
    cmd = "where" if platform.system() == "Windows" else "which"

    try:
        subprocess.run([cmd, "docker"], stdout=subprocess.DEVNULL)
    except Exception:
        log_error("docker not found in PATH")
        sys.exit(1)

    def version_tuple(s: str):
        return tuple(int(x) for x in s.split("."))

    try:
        version = subprocess.run(
            ["docker", "--version"], stdout=subprocess.PIPE)
        version = re.findall(r'\s*([\d.]+)', version.stdout.decode('utf-8'))
        req_version = MACROS['REQ_DOCKER_VERSION']
        if version_tuple(version[0]) < version_tuple(req_version):
            print(version[0])
            print("Docker version less than minimum required " + req_version)
            sys.exit(1)
    except Exception:
        log_error("Failed to get docker version")
        sys.exit(1)

    try:
        subprocess.run([cmd, "docker-compose"], stdout=subprocess.DEVNULL)
    except Exception:
        log_error("docker-compose not found in PATH")
        sys.exit(1)


def is_restart_required():
    '''
    This function checks if the number of nodes currently running meet
    requirement for the given test case. If not builds new docker-compose file
    and returns bool value to restart ci.
    '''
    create_ts_tree_json()
    current_file_services_list = get_compose_file_services_list()
    current_node_image = current_file_services_list[0].split(
        '-', 1)[1][:-2].replace('-', ':')
    node_config = get_node_config(node_image=current_node_image)
    potential_list = []
    for val in node_config.split(';'):
        val = val.replace('=', '-')
        val = val.replace(':', '-')
        potential_list.append(val)
    current_file_services_list = [i[:-2] for i in current_file_services_list]
    # compare without platform names
    current_file_services_list = [
        i.split('-', 1)[0] for i in current_file_services_list]
    potential_list = [i.split('-', 1)[0] for i in potential_list]
    potential_list.sort()
    current_file_services_list.sort()
    if current_file_services_list != potential_list:
        build_compose_file(node_config)
        return True
    else:
        return False


def setup_config_dir():
    '''
    Initializes config directory and files for ci
    '''
    command_path = os.path.join(ci_dirname, MACROS['CONFIG_DIR'])
    if not os.path.exists(command_path):
        os.mkdir(command_path)
    target_path = os.path.join(command_path, MACROS['CONF_JSON_FILE'])
    if not os.path.exists(target_path):
        value = '{ "configure": "--prefix=/opt/pbs '
        value += '--enable-ptl", "tests" : "-t SmokeTest" }'
        write_to_file(target_path, value)
    target_path = os.path.join(command_path, MACROS['CONFIGURE_OPT_FILE'])
    if not os.path.exists(target_path):
        value = "--prefix=/opt/pbs --enable-ptl"
        write_to_file(target_path, value)
    target_path = os.path.join(command_path, MACROS['BENCHPRESS_OPT_FILE'])
    if not os.path.exists(target_path):
        value = "-t SmokeTest"
        write_to_file(target_path, value)
    target_path = os.path.join(ci_dirname, 'docker-compose.json')
    if not os.path.exists(target_path):
        build_compose_file('server=' + default_platform)
        run_cmd('docker-compose -f docker-compose.json down --remove-orphans')


def delete_ci():
    '''
    Takes backup of logs and deletes running containers.
    '''
    services = get_services_list()
    if len(services) != 0:
        build_compose_file(nodes=get_current_setup())
        cmd = '/src/etc/killit.sh backup'
        run_docker_cmd(cmd, run_on='server')
        log_warning('Removed logs file')
        log_info('backup files can be found in ' + build_log_path)
    else:
        log_info('No running container found, nothing to backup')
    try:
        os.chdir(ci_dirname)
        run_cmd(
            "docker-compose -f docker-compose.json down --remove-orphans")
        log_info(
            "done delete container and services")
    except Exception as e:
        log_error("Failed to destroy container and services: " + e)


def parse_params(params_list):
    '''
    Update given params
    '''
    if params_list[0] != 'called':
        container_running = False
        conf_opts = load_conf()
        for set_opts in params_list:
            key, value = (set_opts).split('=', 1)
            service_count = len(get_services_list())
            if service_count > 0:
                container_running = True
            if key.lower() == 'nodes':
                if container_running:
                    log_warning(
                        "Deleting existing containers first,\
                        find backup in logs folder")
                    delete_ci()
                build_compose_file(value)
            elif key.lower() == 'os':
                if container_running:
                    log_warning(
                        "Deleting existing containers first, \
                        find backup in logs folder")
                    delete_ci()
                node_string = value.replace('"', '')
                node_string = 'server=' + node_string
                build_compose_file(node_string)
            else:
                if key in conf_opts:
                    conf_opts[key] = value
                    f = open(os.path.join(
                        ci_dirname, MACROS['CONFIG_DIR'],
                        MACROS['CONF_JSON_FILE']), 'w')
                    json.dump(conf_opts, f, indent=2, sort_keys=True)
                    f.close()
                else:
                    log_error("Unrecognised key in parameter: '" +
                              key + "' , nothing updated")
                    sys.exit(1)


def run_ci_local(local):
    '''
    Run ci locally on host without spawning containers
    '''
    os.chdir(ci_dirname)
    # using subprocess.run instead of run_cmd function
    # so we dont supress stdout and stderr
    if local == 'normal':
        exit_code = subprocess.run("./etc/do.sh")
        sys.exit(exit_code.returncode)
    if local == 'sanitize':
        exit_code = subprocess.run("./etc/do_sanitize_mode.sh")
        sys.exit(exit_code.returncode)


def run_ci(build_pkgs=False):
    '''
    Run PBS configure, install PBS and run PTL tests, if build_pkgs
    is set to True it will instead run package build script only
    '''
    # Display Current options
    log_info("Running ci with the following options")
    show_set_opts()
    if len(get_services_list()) > 0:
        build_compose_file(get_current_setup())
    ret = ensure_ci_running()
    if ret == 1:
        log_error(
            "container build failed, build logs can be found in " +
            build_log_path)
        sys.exit(1)
    command_path = os.path.join(ci_dirname, MACROS['CONFIG_DIR'])
    conf_opts = load_conf()
    if build_pkgs:
        build_cmd = '/src/etc/build-pbs-packages.sh'
        log_info('The package build logs can be found in logs/pkglogs')
        run_docker_cmd(build_cmd + ' | tee /logs/pkglogs',
                       run_on='server')
        sys.exit(0)
    if conf_opts['tests'] != '':
        target_path = os.path.join(command_path, MACROS['BENCHPRESS_OPT_FILE'])
        write_to_file(target_path, conf_opts['tests'])
        if is_restart_required():
            delete_ci()
            ensure_ci_running()
    target_path = os.path.join(command_path, MACROS['CONFIGURE_OPT_FILE'])
    if conf_opts['configure'] != read_from_file(target_path):
        write_to_file(target_path, conf_opts['configure'])
        cmd = ' export ONLY_CONFIGURE=1 && /src/etc/do.sh 2>&1 \
            | tee -a /logs/build-$(hostname -s) '
        run_docker_cmd(cmd)
    cmd = ' export ONLY_REBUILD=1 && /src/etc/do.sh 2>&1 \
        | tee -a /logs/build-$(hostname -s) '
    run_docker_cmd(cmd)
    cmd = ' export ONLY_INSTALL=1 && /src/etc/do.sh 2>&1 \
        | tee -a /logs/build-$(hostname -s) '
    run_docker_cmd(cmd)
    target_path = os.path.join(command_path, MACROS['BENCHPRESS_OPT_FILE'])
    if conf_opts['tests'] == '':
        write_to_file(target_path, conf_opts['tests'])
        log_warning("No tests assigned, skipping PTL run")
    else:
        create_param_file()
        write_to_file(target_path, conf_opts['tests'])
        cmd = 'export RUN_TESTS=1 && export ONLY_TEST=1 && /src/etc/do.sh '
        run_docker_cmd(cmd, run_on='server')


if __name__ == "__main__":

    ci_dirname = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    ci_dirname = os.path.join(ci_dirname, 'ci')
    os.chdir(ci_dirname)
    read_macros()
    _help = '''
    Examples of using arguments.
        ./ci -p 'OS=centos:7'
        ./ci -p 'tests=-t SmokeTest'
        ./ci -p 'configure=CFLAGS="-g -O2" --enable-ptl'
        ./ci -p 'nodes=mom=centos:7;server=ubuntu:16.04'
        ./ci -d or ./ci --delete
        ./ci -b or ./ci --build
        ./ci -l or ./ci --local
    Note: Set tests as empty if you dont want to run PTL'
    '''
    _help += 'Supported platforms are ' + MACROS['SUPPORTED_PLATFORMS']
    ap = argparse.ArgumentParser(prog='ci',
                                 description='Runs the ci tool for pbs',
                                 formatter_class=argparse.RawTextHelpFormatter,
                                 epilog=textwrap.dedent(_help),
                                 conflict_handler='resolve')
    _help = 'set configuration values for os | nodes | configure | tests'
    ap.add_argument('-p', '--params', nargs='+',
                    action='append', help=_help, metavar='param')
    _help = 'destroy pbs container'
    ap.add_argument('-d', '--delete', action='store_true', help=_help)
    _help = 'build packages for the current platform.'
    ap.add_argument('-b', '--build-pkgs', nargs='?', const='called',
                    help=_help)
    _help = 'Simply run the tests locally, without spawning any containers.'
    _help += '\ntype can be one of normal (default) or sanitize'
    ap.add_argument('-l', '--local', nargs='?', const='normal',
                    help=_help, metavar='type')
    args = ap.parse_args()
    build_pkgs = False
    default_platform = MACROS['DEFAULT_PLATFORM']
    build_log_path = os.path.join(ci_dirname, 'logs')
    not_local_run = sys.argv.count('-l') == 0 \
        and sys.argv.count('--local') == 0 \
        and sys.argv.count('-l=sanitize') == 0\
        and sys.argv.count('--local=sanitize') == 0 \
        and sys.argv.count('-l=normal') == 0 \
        and sys.argv.count('--local=normal') == 0
    if not_local_run:
        setup_config_dir()
        check_prerequisites()
    if (not args.delete) and not_local_run and (args.params is None):
        ret = ensure_ci_running()
        if ret == 1:
            log_error(
                "container build failed, build logs can be found in " +
                build_log_path)
            sys.exit(1)
    try:
        if args.params is not None:
            for p in args.params:
                parse_params(p)
        if args.build_pkgs is not None:
            build_pkgs = True
        if args.delete is True:
            confirm = input(
                'Are you sure you want to delete containers (Y/N)?: ')
            if confirm[0].lower() == 'n':
                sys.exit(0)
            elif confirm[0].lower() == 'y':
                delete_ci()
            else:
                log_error("Invalid option provided")
            sys.exit(0)
        if args.local is not None:
            run_ci_local(args.local)
    except Exception as e:
        ap.print_help()
        log_error(e)

    run_ci(build_pkgs)


================================================
FILE: ci/etc/build-pbs-packages.sh
================================================
#! /bin/bash -xe

# Copyright (C) 1994-2021 Altair Engineering, Inc.
# For more information, contact Altair at www.altair.com.
#
# This file is part of both the OpenPBS software ("OpenPBS")
# and the PBS Professional ("PBS Pro") software.
#
# Open Source License Information:
#
# OpenPBS is free software. You can redistribute it and/or modify it under
# the terms of the GNU Affero General Public License as published by the
# Free Software Foundation, either version 3 of the License, or (at your
# option) any later version.
#
# OpenPBS 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 Affero General Public
# License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
# Commercial License Information:
#
# PBS Pro is commercially licensed software that shares a common core with
# the OpenPBS software.  For a copy of the commercial license terms and
# conditions, go to: (http://www.pbspro.com/agreement.html) or contact the
# Altair Legal Department.
#
# Altair's dual-license business model allows companies, individuals, and
# organizations to create proprietary derivative works of OpenPBS and
# distribute them - whether embedded or bundled with other software -
# under a commercial license agreement.
#
# Use of Altair's trademarks, including but not limited to "PBS™",
# "OpenPBS®", "PBS Professional®", and "PBS Pro™" and Altair's logos is
# subject to Altair's trademark licensing policies.

. /etc/os-release

pbsdir=/pbssrc
rpm_dir=/root/rpmbuild

rm -rf /src/packages
mkdir -p /src/packages
mkdir -p ${rpm_dir}/{BUILD,RPMS,SOURCES,SPECS,SRPMS}

if [ "x${ID}" == "xcentos" -a "x${VERSION_ID}" == "x8" ]; then
	export LANG="C.utf8"
	swig_opt="--with-swig=/usr/local"
	if [ ! -f /tmp/swig/swig/configure ]; then
		# source install swig
		dnf -y install gcc-c++ byacc pcre-devel
		mkdir -p /tmp/swig/
		cd /tmp/swig
		git clone https://github.com/swig/swig --branch rel-4.0.0 --single-branch
		cd swig
		./autogen.sh
		./configure
		make -j8
		make install
		cd ${PBS_DIR}
	fi
fi

cp -r $pbsdir /tmp/pbs
cd /tmp/pbs
./autogen.sh
mkdir -p target
cd target
../configure --prefix=/opt/pbs --enable-ptl ${swig_opt}
make dist
cp *.tar.gz ${rpm_dir}/SOURCES
cp ../*-rpmlintrc ${rpm_dir}/SOURCES
cp *.spec ${rpm_dir}/SPECS
cflags="-g -O2 -Wall -Werror"
cxxflags="-g -O2 -Wall -Werror"
if [ "x${ID}" == "xdebian" -o "x${ID}" == "xubuntu" ]; then
	CFLAGS="${cflags} -Wno-unused-result" CXXFLAGS="${cxxflags} -Wno-unused-result" rpmbuild -ba --nodeps *.spec --with ptl
else
	if [ "x${ID}" == "xcentos" -a "x${VERSION_ID}" == "x8" ]; then
		CFLAGS="${cflags}" CXXFLAGS="${cxxflags}" rpmbuild -ba *.spec --with ptl -D "_with_swig ${swig_opt}"
	else
		CFLAGS="${cflags}" CXXFLAGS="${cxxflags}" rpmbuild -ba *.spec --with ptl
	fi
fi

cp ${pbsdir}/README.md /src/packages/
cp ${pbsdir}/LICENSE /src/packages/
cp ${pbsdir}/COPYRIGHT /src/packages/
mv ${rpm_dir}/RPMS/*/*pbs* /src/packages/
mv ${rpm_dir}/SRPMS/*pbs* /src/packages/
cd /src/packages
rm -rf /tmp/pbs

if [ "x${ID}" == "xdebian" -o "x${ID}" == "xubuntu" ]; then
	_target_arch=$(dpkg --print-architecture)
	fakeroot alien --to-deb --scripts --target=${_target_arch} *-debuginfo*.rpm -g
	_dir=$(/bin/ls -1d *debuginfo* | grep -vE '(rpm|orig)')
	mv ${_dir}/opt/pbs/usr/ ${_dir}/
	rm -rf ${_dir}/opt
	(
		cd ${_dir}
		dpkg-buildpackage -d -b -us -uc
	)
	rm -rf ${_dir} ${_dir}.orig *debuginfo*.buildinfo *debuginfo*.changes *debuginfo*.rpm
	fakeroot alien --to-deb --scripts --target=${_target_arch} *.rpm
	rm -f *.rpm
fi


================================================
FILE: ci/etc/ci-script-wrapper.service
================================================
# Copyright (C) 1994-2021 Altair Engineering, Inc.
# For more information, contact Altair at www.altair.com.
#
# This file is part of both the OpenPBS software ("OpenPBS")
# and the PBS Professional ("PBS Pro") software.
#
# Open Source License Information:
#
# OpenPBS is free software. You can redistribute it and/or modify it under
# the terms of the GNU Affero General Public License as published by the
# Free Software Foundation, either version 3 of the License, or (at your
# option) any later version.
#
# OpenPBS 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 Affero General Public
# License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
# Commercial License Information:
#
# PBS Pro is commercially licensed software that shares a common core with
# the OpenPBS software.  For a copy of the commercial license terms and
# conditions, go to: (http://www.pbspro.com/agreement.html) or contact the
# Altair Legal Department.
#
# Altair's dual-license business model allows companies, individuals, and
# organizations to create proprietary derivative works of OpenPBS and
# distribute them - whether embedded or bundled with other software -
# under a commercial license agreement.
#
# Use of Altair's trademarks, including but not limited to "PBS™",
# "OpenPBS®", "PBS Professional®", and "PBS Pro™" and Altair's logos is
# subject to Altair's trademark licensing policies.

[Unit]
Description=Run ci docker entrypoint script at startup after all systemd services are loaded
After=getty.target

[Service]
Type=forking
RemainAfterExit=yes
EnvironmentFile=/.env-file
ExecStart=/src/etc/docker-entrypoint
TimeoutStartSec=0

[Install]
WantedBy=default.target


================================================
FILE: ci/etc/configure_node.sh
================================================
#! /bin/bash -x

# Copyright (C) 1994-2021 Altair Engineering, Inc.
# For more information, contact Altair at www.altair.com.
#
# This file is part of both the OpenPBS software ("OpenPBS")
# and the PBS Professional ("PBS Pro") software.
#
# Open Source License Information:
#
# OpenPBS is free software. You can redistribute it and/or modify it under
# the terms of the GNU Affero General Public License as published by the
# Free Software Foundation, either version 3 of the License, or (at your
# option) any later version.
#
# OpenPBS 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 Affero General Public
# License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
# Commercial License Information:
#
# PBS Pro is commercially licensed software that shares a common core with
# the OpenPBS software.  For a copy of the commercial license terms and
# conditions, go to: (http://www.pbspro.com/agreement.html) or contact the
# Altair Legal Department.
#
# Altair's dual-license business model allows companies, individuals, and
# organizations to create proprietary derivative works of OpenPBS and
# distribute them - whether embedded or bundled with other software -
# under a commercial license agreement.
#
# Use of Altair's trademarks, including but not limited to "PBS™",
# "OpenPBS®", "PBS Professional®", and "PBS Pro™" and Altair's logos is
# subject to Altair's trademark licensing policies.

. /src/etc/macros
if [ -f /src/${CONFIG_DIR}/${REQUIREMENT_DECORATOR_FILE} ]; then
	. /src/${CONFIG_DIR}/${REQUIREMENT_DECORATOR_FILE}
fi

if [ "x${NODE_TYPE}" == "xmom" ]; then
	sed -i "s@PBS_SERVER=.*@PBS_SERVER=${SERVER}@" /etc/pbs.conf
	sed -i "s@PBS_START_SERVER=.*@PBS_START_SERVER=0@" /etc/pbs.conf
	ssh -t root@${SERVER} " /opt/pbs/bin/qmgr -c 'c n $(hostname -s)'"
	if [ "x${no_comm_on_mom}" == "xTrue" ]; then
		sed -i "s@PBS_START_COMM=.*@PBS_START_COMM=0@" /etc/pbs.conf
	else
		sed -i "s@PBS_START_COMM=.*@PBS_START_COMM=1@" /etc/pbs.conf
	fi
	sed -i "s@PBS_START_SCHED=.*@PBS_START_SCHED=0@" /etc/pbs.conf
fi

if [ "x${NODE_TYPE}" == "xserver" ]; then
	sed -i "s@PBS_SERVER=.*@PBS_SERVER=$(hostname)@" /etc/pbs.conf
	if [ "x${no_comm_on_server}" == "xTrue" ]; then
		sed -i "s@PBS_START_COMM=.*@PBS_START_COMM=0@" /etc/pbs.conf
	else
		sed -i "s@PBS_START_COMM=.*@PBS_START_COMM=1@" /etc/pbs.conf
	fi
	if [ "x${no_mom_on_server}" == "xTrue" ]; then
		sed -i "s@PBS_START_MOM=.*@PBS_START_MOM=0@" /etc/pbs.conf
	else
		sed -i "s@PBS_START_MOM=.*@PBS_START_MOM=1@" /etc/pbs.conf
	fi
	sed -i "s@PBS_START_SERVER=.*@PBS_START_SERVER=1@" /etc/pbs.conf
	sed -i "s@PBS_START_SCHED=.*@PBS_START_SCHED=1@" /etc/pbs.conf
fi

if [ "x${NODE_TYPE}" == "xcomm" ]; then
	sed -i "s@PBS_START_COMM=.*@PBS_START_COMM=1@" /etc/pbs.conf
	sed -i "s@PBS_SERVER=.*@PBS_SERVER=${SERVER}@" /etc/pbs.conf
	sed -i "s@PBS_START_MOM=.*@PBS_START_MOM=0@" /etc/pbs.conf
	sed -i "s@PBS_START_SERVER=.*@PBS_START_SERVER=0@" /etc/pbs.conf
	sed -i "s@PBS_START_SCHED=.*@PBS_START_SCHED=0@" /etc/pbs.conf
fi


================================================
FILE: ci/etc/container-env-setup.sh
================================================
# Copyright (C) 1994-2021 Altair Engineering, Inc.
# For more information, contact Altair at www.altair.com.
#
# This file is part of both the OpenPBS software ("OpenPBS")
# and the PBS Professional ("PBS Pro") software.
#
# Open Source License Information:
#
# OpenPBS is free software. You can redistribute it and/or modify it under
# the terms of the GNU Affero General Public License as published by the
# Free Software Foundation, either version 3 of the License, or (at your
# option) any later version.
#
# OpenPBS 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 Affero General Public
# License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
# Commercial License Information:
#
# PBS Pro is commercially licensed software that shares a common core with
# the OpenPBS software.  For a copy of the commercial license terms and
# conditions, go to: (http://www.pbspro.com/agreement.html) or contact the
# Altair Legal Department.
#
# Altair's dual-license business model allows companies, individuals, and
# organizations to create proprietary derivative works of OpenPBS and
# distribute them - whether embedded or bundled with other software -
# under a commercial license agreement.
#
# Use of Altair's trademarks, including but not limited to "PBS™",
# "OpenPBS®", "PBS Professional®", and "PBS Pro™" and Altair's logos is
# subject to Altair's trademark licensing policies.

export container=docker
export TERM=xterm
if [ -e /etc/debian_version ]; then
  export DEBIAN_FRONTEND=noninteractive
fi
export LOGNAME=${LOGNAME:-"$(id -un)"}
export USER=${USER:-"$(id -un)"}
export TZ=UTC
export PBS_TZID=UTC
export PATH="$(printf "%s" "/usr/local/bin:/usr/local/sbin:${PATH}" | awk -v RS=: -v ORS=: '!($0 in a) {a[$0]; print}')"
export DOMAIN=$(hostname -d)
export PERL5LIB=${HOME}/AUTO/lib/perl5/site_perl
export PERL5LIB=${PERL5LIB}:${HOME}/AUTO/lib/site_perl
export PERL5LIB=${PERL5LIB}:${HOME}/AUTO/share/perl5
export PERL5LIB=${PERL5LIB}:${HOME}/AUTO/share/perl
export PBS_TEST_DEBUG=1
export PBS_TEST_VERBOSE=1
export PBS_PRINT_STACK_TRACE=1
export MAIL="${MAIL:-"/var/mail/$(id -un)"}"


================================================
FILE: ci/etc/container-init
================================================
#!/bin/bash -x

# Copyright (C) 1994-2021 Altair Engineering, Inc.
# For more information, contact Altair at www.altair.com.
#
# This file is part of both the OpenPBS software ("OpenPBS")
# and the PBS Professional ("PBS Pro") software.
#
# Open Source License Information:
#
# OpenPBS is free software. You can redistribute it and/or modify it under
# the terms of the GNU Affero General Public License as published by the
# Free Software Foundation, either version 3 of the License, or (at your
# option) any later version.
#
# OpenPBS 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 Affero General Public
# License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
# Commercial License Information:
#
# PBS Pro is commercially licensed software that shares a common core with
# the OpenPBS software.  For a copy of the commercial license terms and
# conditions, go to: (http://www.pbspro.com/agreement.html) or contact the
# Altair Legal Department.
#
# Altair's dual-license business model allows companies, individuals, and
# organizations to create proprietary derivative works of OpenPBS and
# distribute them - whether embedded or bundled with other software -
# under a commercial license agreement.
#
# Use of Altair's trademarks, including but not limited to "PBS™",
# "OpenPBS®", "PBS Professional®", and "PBS Pro™" and Altair's logos is
# subject to Altair's trademark licensing policies.

/workspace/etc/install-system-packages 2>&1 | tee -a /logs/build-$(hostname -s)

# set environment var file
touch /.env-file
set >/.env-file

capsh --print | grep -Eq '*cap_sys_admin*'
if [ $? -eq 0 ]; then
	if [ -x "/usr/lib/systemd/systemd" ]; then
		exec /usr/lib/systemd/systemd --system
	elif [ -x "/lib/systemd/systemd" ]; then
		exec /lib/systemd/systemd --system
	elif [ -x "/usr/sbin/init" ]; then
		exec /usr/sbin/init
	elif [ -x "/sbin/init" ]; then
		exec /sbin/init
	else
		echo "Couldn't start container in systemd mode, starting in default mode"
	fi
fi


================================================
FILE: ci/etc/do.sh
================================================
#!/bin/bash -xe

# Copyright (C) 1994-2021 Altair Engineering, Inc.
# For more information, contact Altair at www.altair.com.
#
# This file is part of both the OpenPBS software ("OpenPBS")
# and the PBS Professional ("PBS Pro") software.
#
# Open Source License Information:
#
# OpenPBS is free software. You can redistribute it and/or modify it under
# the terms of the GNU Affero General Public License as published by the
# Free Software Foundation, either version 3 of the License, or (at your
# option) any later version.
#
# OpenPBS 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 Affero General Public
# License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
# Commercial License Information:
#
# PBS Pro is commercially licensed software that shares a common core with
# the OpenPBS software.  For a copy of the commercial license terms and
# conditions, go to: (http://www.pbspro.com/agreement.html) or contact the
# Altair Legal Department.
#
# Altair's dual-license business model allows companies, individuals, and
# organizations to create proprietary derivative works of OpenPBS and
# distribute them - whether embedded or bundled with other software -
# under a commercial license agreement.
#
# Use of Altair's trademarks, including but not limited to "PBS™",
# "OpenPBS®", "PBS Professional®", and "PBS Pro™" and Altair's logos is
# subject to Altair's trademark licensing policies.

if [ $(id -u) -ne 0 ]; then
  echo "This script must be run by root user"
  exit 1
fi

if [ -f /src/ci ]; then
  IS_CI_BUILD=1
  FIRST_TIME_BUILD=$1
  . /src/etc/macros
  config_dir=/src/${CONFIG_DIR}
  chmod -R 755 ${config_dir}
  logdir=/logs
  chmod -R 755 ${logdir}
  PBS_DIR=/pbssrc
else
  PBS_DIR=$(readlink -f $0 | awk -F'/ci/' '{print $1}')
fi

cd ${PBS_DIR}
. /etc/os-release
# Extract major version number
MAJOR_VERSION="${VERSION_ID%%.*}"
SPEC_FILE=$(/bin/ls -1 ${PBS_DIR}/*.spec)
REQ_FILE=${PBS_DIR}/test/fw/requirements.txt
if [ ! -r ${SPEC_FILE} -o ! -r ${REQ_FILE} ]; then
  echo "Couldn't find pbs spec file or ptl requirements file"
  exit 1
fi

if [ "x${IS_CI_BUILD}" != "x1" ] || [ "x${FIRST_TIME_BUILD}" == "x1" -a "x${IS_CI_BUILD}" == "x1" ]; then
  if [ "x${ID}" == "xcentos" -a "x${VERSION_ID}" == "x7" ]; then
    yum clean all
    yum -y install yum-utils epel-release rpmdevtools
    yum -y install python3-pip sudo which net-tools man-db time.x86_64 \
      expat libedit postgresql-server postgresql-contrib python3 \
      sendmail sudo tcl tk libical libasan llvm git
    rpmdev-setuptree
    yum-builddep -y ${SPEC_FILE}
    yum -y install $(rpmspec --requires -q ${SPEC_FILE} | awk '{print $1}' | sort -u | grep -vE '^(/bin/)?(ba)?sh$')
    pip3 install --trusted-host pypi.org --trusted-host files.pythonhosted.org -r ${REQ_FILE}
    if [ "x${BUILD_MODE}" == "xkerberos" ]; then
      yum -y install krb5-libs krb5-devel libcom_err libcom_err-devel
    fi
    yum -y install cmake3
    rm -rf cJSON
    git clone https://github.com/DaveGamble/cJSON.git
    cd cJSON; mkdir build; cd build; cmake3 .. -DCMAKE_INSTALL_PREFIX=/usr; make; make install; cd ../../
  elif [ "x${ID}" == "xcentos" -a "x${VERSION_ID}" == "x8" ]; then
    export LANG="C.utf8"
    sed -i -e "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-*
    sed -i -e "s|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g" /etc/yum.repos.d/CentOS-*
    dnf -y clean all
    dnf -y install 'dnf-command(config-manager)'
    dnf -y config-manager --set-enabled powertools
    dnf -y install epel-release
    dnf -y install python3-pip sudo which net-tools man-db time.x86_64 \
      expat libedit postgresql-server postgresql-contrib python3 \
      sendmail sudo tcl tk libical libasan llvm git
    dnf -y builddep ${SPEC_FILE}
    dnf -y install $(rpmspec --requires -q ${SPEC_FILE} | awk '{print $1}' | sort -u | grep -vE '^(/bin/)?(ba)?sh$')
    pip3 install --trusted-host pypi.org --trusted-host files.pythonhosted.org -r ${REQ_FILE}
    if [ "x${BUILD_MODE}" == "xkerberos" ]; then
      dnf -y install krb5-libs krb5-devel libcom_err libcom_err-devel
    fi
  elif [ "x${ID}" == "xrocky" -a "x${MAJOR_VERSION}" == "x9" ]; then
    export LANG="C.utf8"
    dnf -y clean all
    yum -y install yum-utils
    dnf -y install 'dnf-command(config-manager)'
    dnf config-manager --set-enabled crb
    dnf -y install epel-release
    dnf -y install python3-pip sudo which net-tools man-db time.x86_64 procps \
      expat libedit postgresql-server postgresql-contrib python3 \
      sendmail sudo tcl tk libical libasan llvm git chkconfig
    dnf -y builddep ${SPEC_FILE}
    dnf -y install $(rpmspec --requires -q ${SPEC_FILE} | awk '{print $1}' | sort -u | grep -vE '^(/bin/)?(ba)?sh$')
    pip3 install --trusted-host pypi.org --trusted-host files.pythonhosted.org -r ${REQ_FILE}
    if [ "x${BUILD_MODE}" == "xkerberos" ]; then
      dnf -y install krb5-libs krb5-devel libcom_err libcom_err-devel
    fi
  elif [ "x${ID}" == "xopensuse" -o "x${ID}" == "xopensuse-leap" ]; then
    zypper -n ref
    zypper -n install rpmdevtools python3-pip sudo which net-tools man time.x86_64 git
    rpmdev-setuptree
    zypper -n install --force-resolution $(rpmspec --buildrequires -q ${SPEC_FILE} | sort -u | grep -vE '^(/bin/)?(ba)?sh$')
    zypper -n install --force-resolution $(rpmspec --requires -q ${SPEC_FILE} | sort -u | grep -vE '^(/bin/)?(ba)?sh$')
    pip3 install --trusted-host pypi.org --trusted-host files.pythonhosted.org -r ${REQ_FILE}
  elif [ "x${ID}" == "xdebian" ]; then
    if [ "x${DEBIAN_FRONTEND}" == "x" ]; then
      export DEBIAN_FRONTEND=noninteractive
    fi
    apt-get -y update
    apt-get install -y build-essential dpkg-dev autoconf libtool rpm alien libssl-dev \
      libxt-dev libpq-dev libexpat1-dev libedit-dev libncurses5-dev \
      libical-dev libhwloc-dev pkg-config tcl-dev tk-dev python3-dev \
      swig expat postgresql postgresql-contrib python3-pip sudo \
      man-db git elfutils libcjson-dev
    pip3 install --trusted-host pypi.org --trusted-host files.pythonhosted.org -r ${REQ_FILE}
  elif [ "x${ID}" == "xubuntu" ]; then
    if [ "x${DEBIAN_FRONTEND}" == "x" ]; then
      export DEBIAN_FRONTEND=noninteractive
    fi
    apt-get -y update
    apt-get install -y build-essential dpkg-dev autoconf libtool rpm alien libssl-dev \
      libxt-dev libpq-dev libexpat1-dev libedit-dev libncurses5-dev \
      libical-dev libhwloc-dev pkg-config tcl-dev tk-dev python3-dev \
      swig expat postgresql python3-pip sudo man-db git elfutils libcjson-dev
    if [[ $(printf '%s\n' "24.04" "$VERSION_ID" | sort -V | head -n1) == "24.04" ]]; then
	apt-get -y install python3-nose python3-bs4 python3-defusedxml python3-pexpect
    else
        pip3 install --trusted-host pypi.org --trusted-host files.pythonhosted.org -r ${REQ_FILE}
    fi
  else
    echo "Unknown platform..."
    exit 1
  fi
fi

if [ "x${FIRST_TIME_BUILD}" == "x1" -a "x${IS_CI_BUILD}" == "x1" ]; then
  echo "### First time build is complete ###"
  echo "READY:$(hostname -s)" >>${config_dir}/${STATUS_FILE}
  exit 0
fi

if [ "x${ID}" == "xcentos" -a "x${VERSION_ID}" == "x8" ]; then
  export LANG="C.utf8"
  swig_opt="--with-swig=/usr/local"
  if [ ! -f /tmp/swig/swig/configure ]; then
    # source install swig
    dnf -y install gcc-c++ byacc pcre-devel
    mkdir -p /tmp/swig/
    cd /tmp/swig
    git clone https://github.com/swig/swig --branch rel-4.0.0 --single-branch
    cd swig
    ./autogen.sh
    ./configure
    make -j8
    make install
    cd ${PBS_DIR}
  fi
fi

if [ "x${ONLY_INSTALL_DEPS}" == "x1" ]; then
  exit 0
fi
_targetdirname=target-${ID}-$(hostname -s)
if [ "x${ONLY_INSTALL}" != "x1" -a "x${ONLY_REBUILD}" != "x1" -a "x${ONLY_TEST}" != "x1" ]; then
  rm -rf ${_targetdirname}
fi
mkdir -p ${_targetdirname}
[[ -f Makefile ]] && make distclean || true
if [ ! -f ./${SPEC_FILE} ]; then
  git config --global --add safe.directory ${PBS_DIR}
  git checkout ${SPEC_FILE}
fi
if [ ! -f ./configure ]; then
  ./autogen.sh
fi
if [ "x${ONLY_REBUILD}" != "x1" -a "x${ONLY_INSTALL}" != "x1" -a "x${ONLY_TEST}" != "x1" ]; then
  _cflags="-g -O2 -Wall -Werror"
  if [ "x${ID}" == "xubuntu" ]; then
    _cflags="${_cflags} -Wno-unused-result"
  fi
  cd ${_targetdirname}
  if [ -f /src/ci ]; then
    if [ -f ${config_dir}/${CONFIGURE_OPT_FILE} ]; then
      PYTHON_CODE=$(cat <<END
with open('${config_dir}/${CONFIGURE_OPT_FILE}') as f:
  x = f.read()
import re
if len(x.split("'")) > 1:
  if re.search(r"CFLAGS=(\"|\').*(\"|\')",x) != None:
    print(re.search(r"CFLAGS=(\"|\').*(\"|\')",x).group(0).split('\'')[1])
else:
  if re.search(r"CFLAGS=(\"|\').*(\"|\')",x) != None:
    print(re.search(r"CFLAGS=(\"|\').*(\"|\')",x).group(0).split('"')[1])
END
)
      _cflags="$(python3 -c "$PYTHON_CODE")"
      PYTHON_CODE=$(cat <<END
with open('${config_dir}/${CONFIGURE_OPT_FILE}') as f:
  x = f.read()
import re
print(re.sub(r"CFLAGS=(\"|\').*(\"|\')","",x))
END
)
    configure_opt="$(python3 -c "$PYTHON_CODE")"
    else
      configure_opt='--prefix=/opt/pbs --enable-ptl'
    fi
    if [ -z "${_cflags}" ]; then
      ../configure ${configure_opt} ${swig_opt}
    else
      ../configure CFLAGS="${_cflags}" ${configure_opt} ${swig_opt}
    fi
    if [ "x${ONLY_CONFIGURE}" == "x1" ]; then
      exit 0
    fi
  else
    configure_opt='--prefix=/opt/pbs --enable-ptl'
    if [ "x${BUILD_MODE}" == "xkerberos" ]; then
      configure_opt="${configure_opt} --with-krbauth PATH_KRB5_CONFIG=/usr/bin/krb5-config"
    fi
    ../configure CFLAGS="${_cflags}" ${configure_opt} ${swig_opt}
  fi
  cd -
fi
cd ${_targetdirname}
prefix=$(cat ${config_dir}/${CONFIGURE_OPT_FILE} | awk -F'prefix=' '{print $2}' | awk -F' ' '{print $1}')
if [ "x${prefix}" == "x" ]; then
  prefix='/opt/pbs'
fi
if [ "x${ONLY_INSTALL}" == "x1" -o "x${ONLY_TEST}" == "x1" ]; then
  echo "skipping make"
else
  if [ ! -f ${PBS_DIR}/${_targetdirname}/Makefile ]; then
    if [ -f ${config_dir}/${CONFIGURE_OPT_FILE} ]; then
      PYTHON_CODE=$(cat <<END
with open('${config_dir}/${CONFIGURE_OPT_FILE}') as f:
  x = f.read()
import re
if len(x.split("'")) > 1:
  if re.search(r"CFLAGS=(\"|\').*(\"|\')",x) != None:
    print(re.search(r"CFLAGS=(\"|\').*(\"|\')",x).group(0).split('\'')[1])
else:
  if re.search(r"CFLAGS=(\"|\').*(\"|\')",x) != None:
    print(re.search(r"CFLAGS=(\"|\').*(\"|\')",x).group(0).split('"')[1])
END
)
      _cflags="$(python3 -c "$PYTHON_CODE")"
      PYTHON_CODE=$(cat <<END
with open('${config_dir}/${CONFIGURE_OPT_FILE}') as f:
  x = f.read()
import re
print(re.sub(r"CFLAGS=(\"|\').*(\"|\')","",x))
END
)
      configure_opt="$(python3 -c "$PYTHON_CODE")"
    else
      configure_opt='--prefix=/opt/pbs --enable-ptl'
    fi
    if [ -z "${_cflags}" ]; then
      ../configure ${configure_opt}
    else
      ../configure CFLAGS="${_cflags}" ${configure_opt}
    fi
  fi
  make -j8
fi
if [ "x${ONLY_REBUILD}" == "x1" ]; then
  exit 0
fi
if [ "x${ONLY_TEST}" != "x1" ]; then
  if [ ! -f ${PBS_DIR}/${_targetdirname}/Makefile ]; then
    if [ -f ${config_dir}/${CONFIGURE_OPT_FILE} ]; then
      PYTHON_CODE=$(cat <<END
with open('${config_dir}/${CONFIGURE_OPT_FILE}') as f:
  x = f.read()
import re
if len(x.split("'")) > 1:
  if re.search(r"CFLAGS=(\"|\').*(\"|\')",x) != None:
    print(re.search(r"CFLAGS=(\"|\').*(\"|\')",x).group(0).split('\'')[1])
else:
  if re.search(r"CFLAGS=(\"|\').*(\"|\')",x) != None:
    print(re.search(r"CFLAGS=(\"|\').*(\"|\')",x).group(0).split('"')[1])
END
)
      _cflags="$(python3 -c "$PYTHON_CODE")"
      PYTHON_CODE=$(cat <<END
with open('${config_dir}/${CONFIGURE_OPT_FILE}') as f:
  x = f.read()
import re
print(re.sub(r"CFLAGS=(\"|\').*(\"|\')","",x))
END
)
    configure_opt="$(python3 -c "$PYTHON_CODE")"
    else
      configure_opt='--prefix=/opt/pbs --enable-ptl'
    fi
    if [ -z "${_cflags}" ]; then
      ../configure ${configure_opt}
    else
      ../configure CFLAGS="${_cflags}" ${configure_opt}
    fi
    make -j8
  fi
  make -j8 install
  chmod 4755 ${prefix}/sbin/pbs_iff ${prefix}/sbin/pbs_rcp
  if [ "x${DONT_START_PBS}" != "x1" ]; then
    ${prefix}/libexec/pbs_postinstall server
    sed -i "s@PBS_START_MOM=0@PBS_START_MOM=1@" /etc/pbs.conf
    if [ "x$IS_CI_BUILD" == "x1" ]; then
      /src/etc/configure_node.sh
    fi
    /etc/init.d/pbs restart
  fi
fi

if [ "x${BUILD_MODE}" == "xkerberos" ]; then
  echo "PTL with Kerberos support not implemented yet."
  exit 0
fi

set +e
. /etc/profile.d/ptl.sh
set -e
pbs_config --make-ug

if [ "x${RUN_TESTS}" == "x1" ]; then
  if [ "x${ID}" == "xcentos" ]; then
    export LC_ALL=en_US.utf-8
    export LANG=en_US.utf-8
  elif [ "x${ID}" == "xopensuse" ]; then
    export LC_ALL=C.utf8
  fi
  ptl_tests_dir=/pbssrc/test/tests
  cd ${ptl_tests_dir}/
  benchpress_opt="$(cat ${config_dir}/${BENCHPRESS_OPT_FILE})"
  eval_tag="$(echo ${benchpress_opt} | awk -F'"' '{print $2}')"
  benchpress_opt="$(echo ${benchpress_opt} | sed -e 's/--eval-tags=\".*\"//g')"
  params="--param-file=${config_dir}/${PARAM_FILE}"
  time_stamp=$(date -u "+%Y-%m-%d-%H%M%S")
  ptl_log_file=${logdir}/logfile-${time_stamp}
  chown pbsroot ${logdir}
  if [ -z "${eval_tag}" ]; then
    sudo -Hiu pbsroot pbs_benchpress ${benchpress_opt} --db-type=html --db-name=${logdir}/result.html -o ${ptl_log_file} ${params}
  else
    sudo -Hiu pbsroot pbs_benchpress --eval-tags="'${eval_tag}'" ${benchpress_opt} --db-type=html --db-name=${logdir}/result.html -o ${ptl_log_file} ${params}
  fi
fi

if [ "x${IS_CI_BUILD}" != "x1" ]; then
  cd /opt/ptl/tests/
  /opt/pbs/bin/pbsnodes -av
  ps -ef | grep pbs
#Azure pipeline : on Suse platform man page test is failing. Need to analyze.
#for time being skipping man page test case
  pbs_benchpress --tags=smoke --exclude=SmokeTest.test_man_pages
  /opt/pbs/bin/pbsnodes -av
fi


================================================
FILE: ci/etc/do_sanitize_mode.sh
================================================
#!/bin/bash -xe

# Copyright (C) 1994-2021 Altair Engineering, Inc.
# For more information, contact Altair at www.altair.com.
#
# This file is part of both the OpenPBS software ("OpenPBS")
# and the PBS Professional ("PBS Pro") software.
#
# Open Source License Information:
#
# OpenPBS is free software. You can redistribute it and/or modify it under
# the terms of the GNU Affero General Public License as published by the
# Free Software Foundation, either version 3 of the License, or (at your
# option) any later version.
#
# OpenPBS 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 Affero General Public
# License for more details.
#
# You should 
Download .txt
gitextract_2t7z1zdf/

├── .clang-format
├── .github/
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── checkclang
│   ├── checkpep8
│   └── runchecks
├── .gitignore
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── COPYRIGHT
├── INSTALL
├── LICENSE
├── Makefile.am
├── PBS_License.txt
├── README.md
├── autogen.sh
├── azure-pipelines.yml
├── buildutils/
│   ├── Makefile.am
│   └── attr_parser.py
├── ci/
│   ├── README.md
│   ├── ci
│   └── etc/
│       ├── build-pbs-packages.sh
│       ├── ci-script-wrapper.service
│       ├── configure_node.sh
│       ├── container-env-setup.sh
│       ├── container-init
│       ├── do.sh
│       ├── do_sanitize_mode.sh
│       ├── docker-entrypoint
│       ├── gen_ptl_json.sh
│       ├── id_rsa
│       ├── id_rsa.pub
│       ├── install-system-packages
│       ├── killit.sh
│       ├── macros
│       └── sudoers-overrides
├── configure.ac
├── doc/
│   ├── Makefile.am
│   ├── man1/
│   │   ├── pbs_hook_attributes.7B
│   │   ├── pbs_job_attributes.7B
│   │   ├── pbs_login.1B
│   │   ├── pbs_module.7B
│   │   ├── pbs_node_attributes.7B
│   │   ├── pbs_professional.7B
│   │   ├── pbs_python.1B
│   │   ├── pbs_queue_attributes.7B
│   │   ├── pbs_ralter.1B
│   │   ├── pbs_rdel.1B
│   │   ├── pbs_release_nodes.1B
│   │   ├── pbs_resources.7B
│   │   ├── pbs_resv_attributes.7B
│   │   ├── pbs_rstat.1B
│   │   ├── pbs_rsub.1B
│   │   ├── pbs_sched_attributes.7B
│   │   ├── pbs_server_attributes.7B
│   │   ├── pbsdsh.1B
│   │   ├── qalter.1B
│   │   ├── qdel.1B
│   │   ├── qhold.1B
│   │   ├── qmove.1B
│   │   ├── qmsg.1B
│   │   ├── qorder.1B
│   │   ├── qrerun.1B
│   │   ├── qrls.1B
│   │   ├── qselect.1B
│   │   ├── qsig.1B
│   │   ├── qstat.1B
│   │   └── qsub.1B
│   ├── man3/
│   │   ├── pbs_alterjob.3B
│   │   ├── pbs_asyrunjob.3B
│   │   ├── pbs_confirmresv.3B
│   │   ├── pbs_connect.3B
│   │   ├── pbs_default.3B
│   │   ├── pbs_deljob.3B
│   │   ├── pbs_delresv.3B
│   │   ├── pbs_disconnect.3B
│   │   ├── pbs_geterrmsg.3B
│   │   ├── pbs_holdjob.3B
│   │   ├── pbs_locjob.3B
│   │   ├── pbs_manager.3B
│   │   ├── pbs_modify_resv.3B
│   │   ├── pbs_movejob.3B
│   │   ├── pbs_msgjob.3B
│   │   ├── pbs_orderjob.3B
│   │   ├── pbs_preempt_jobs.3B
│   │   ├── pbs_relnodesjob.3B
│   │   ├── pbs_rerunjob.3B
│   │   ├── pbs_rescquery.3B
│   │   ├── pbs_rescreserve.3B
│   │   ├── pbs_rlsjob.3B
│   │   ├── pbs_runjob.3B
│   │   ├── pbs_selectjob.3B
│   │   ├── pbs_selstat.3B
│   │   ├── pbs_sigjob.3B
│   │   ├── pbs_stagein.3B
│   │   ├── pbs_statfree.3B
│   │   ├── pbs_stathook.3B
│   │   ├── pbs_stathost.3B
│   │   ├── pbs_statjob.3B
│   │   ├── pbs_statnode.3B
│   │   ├── pbs_statque.3B
│   │   ├── pbs_statresv.3B
│   │   ├── pbs_statrsc.3B
│   │   ├── pbs_statsched.3B
│   │   ├── pbs_statserver.3B
│   │   ├── pbs_statvnode.3B
│   │   ├── pbs_submit.3B
│   │   ├── pbs_submit_resv.3B
│   │   ├── pbs_submitresv.3B
│   │   ├── pbs_tclapi.3B
│   │   ├── pbs_terminate.3B
│   │   ├── rm.3B
│   │   └── tm.3
│   └── man8/
│       ├── mpiexec.8B
│       ├── pbs.8B
│       ├── pbs.conf.8B
│       ├── pbs_account.8B
│       ├── pbs_attach.8B
│       ├── pbs_comm.8B
│       ├── pbs_dataservice.8B
│       ├── pbs_ds_password.8B
│       ├── pbs_hostn.8B
│       ├── pbs_idled.8B
│       ├── pbs_iff.8B
│       ├── pbs_interactive.8B
│       ├── pbs_lamboot.8B
│       ├── pbs_mkdirs.8B
│       ├── pbs_mom.8B
│       ├── pbs_mpihp.8B
│       ├── pbs_mpilam.8B
│       ├── pbs_mpirun.8B
│       ├── pbs_probe.8B
│       ├── pbs_sched.8B
│       ├── pbs_server.8B
│       ├── pbs_snapshot.8B
│       ├── pbs_tclsh.8B
│       ├── pbs_tmrsh.8B
│       ├── pbs_topologyinfo.8B
│       ├── pbs_wish.8B
│       ├── pbsfs.8B
│       ├── pbsnodes.8B
│       ├── pbsrun.8B
│       ├── pbsrun_unwrap.8B
│       ├── pbsrun_wrap.8B
│       ├── printjob.8B
│       ├── qdisable.8B
│       ├── qenable.8B
│       ├── qmgr.8B
│       ├── qrun.8B
│       ├── qstart.8B
│       ├── qstop.8B
│       ├── qterm.8B
│       ├── tracejob.8B
│       └── win_postinstall.py.8B
├── m4/
│   ├── disable_shell_pipe.m4
│   ├── disable_syslog.m4
│   ├── enable_alps.m4
│   ├── enable_ptl.m4
│   ├── pbs_decl_epoll.m4
│   ├── pbs_decl_epoll_pwait.m4
│   ├── pbs_decl_h_errno.m4
│   ├── pbs_decl_ppoll.m4
│   ├── pbs_decl_socklen_t.m4
│   ├── pbs_patch_libtool.m4
│   ├── pbs_systemd_unitdir.m4
│   ├── pbs_version.m4
│   ├── security_check.m4
│   ├── with_cjson.m4
│   ├── with_core_limit.m4
│   ├── with_database_dir.m4
│   ├── with_database_port.m4
│   ├── with_database_user.m4
│   ├── with_editline.m4
│   ├── with_expat.m4
│   ├── with_hwloc.m4
│   ├── with_krbauth.m4
│   ├── with_libical.m4
│   ├── with_libz.m4
│   ├── with_min_stack_limit.m4
│   ├── with_pbs_conf_file.m4
│   ├── with_pmix.m4
│   ├── with_python.m4
│   ├── with_sendmail.m4
│   ├── with_server_home.m4
│   ├── with_server_name_file.m4
│   ├── with_swig.m4
│   ├── with_tcl.m4
│   ├── with_tclatrsep.m4
│   ├── with_tmpdir.m4
│   ├── with_unsupported_dir.m4
│   └── with_xauth.m4
├── openpbs-rpmlintrc
├── openpbs.spec.in
├── src/
│   ├── Makefile.am
│   ├── cmds/
│   │   ├── Makefile.am
│   │   ├── mpiexec.in
│   │   ├── pbs_attach.c
│   │   ├── pbs_attach_sup.c
│   │   ├── pbs_dataservice.c
│   │   ├── pbs_demux.c
│   │   ├── pbs_ds_password.c
│   │   ├── pbs_lamboot.in
│   │   ├── pbs_mpihp.in
│   │   ├── pbs_mpilam.in
│   │   ├── pbs_mpirun.in
│   │   ├── pbs_ralter.c
│   │   ├── pbs_rdel.c
│   │   ├── pbs_release_nodes.c
│   │   ├── pbs_remsh.in
│   │   ├── pbs_rstat.c
│   │   ├── pbs_rsub.c
│   │   ├── pbs_tmrsh.c
│   │   ├── pbsdsh.c
│   │   ├── pbsnodes.c
│   │   ├── pbsrun.in
│   │   ├── pbsrun_unwrap.in
│   │   ├── pbsrun_wrap.in
│   │   ├── qalter.c
│   │   ├── qdel.c
│   │   ├── qdisable.c
│   │   ├── qenable.c
│   │   ├── qhold.c
│   │   ├── qmgr.c
│   │   ├── qmgr_sup.c
│   │   ├── qmove.c
│   │   ├── qmsg.c
│   │   ├── qorder.c
│   │   ├── qrerun.c
│   │   ├── qrls.c
│   │   ├── qrun.c
│   │   ├── qselect.c
│   │   ├── qsig.c
│   │   ├── qstart.c
│   │   ├── qstat.c
│   │   ├── qstop.c
│   │   ├── qsub.c
│   │   ├── qsub_sup.c
│   │   ├── qterm.c
│   │   ├── sample.qstatrc
│   │   └── scripts/
│   │       ├── Makefile.am
│   │       ├── limits.pbs_mom.compat
│   │       ├── limits.post_services.compat
│   │       ├── modulefile.in
│   │       ├── pbs.csh
│   │       ├── pbs.service.in
│   │       ├── pbs.sh
│   │       ├── pbs_bootcheck.py
│   │       ├── pbs_dataservice
│   │       ├── pbs_ds_password
│   │       ├── pbs_habitat.in
│   │       ├── pbs_init.d.in
│   │       ├── pbs_poerun.in
│   │       ├── pbs_postinstall.in
│   │       ├── pbs_posttrans
│   │       ├── pbs_preuninstall
│   │       ├── pbs_reload.in
│   │       ├── pbs_server
│   │       ├── pbs_snapshot
│   │       ├── pbs_topologyinfo
│   │       ├── pbs_topologyinfo.py
│   │       ├── pbsrun.ch_gm.init.in
│   │       ├── pbsrun.ch_mx.init.in
│   │       ├── pbsrun.gm_mpd.init.in
│   │       ├── pbsrun.intelmpi.init.in
│   │       ├── pbsrun.mpich2.init.in
│   │       ├── pbsrun.mvapich1.init.in
│   │       ├── pbsrun.mvapich2.init.in
│   │       ├── pbsrun.mx_mpd.init.in
│   │       ├── pbsrun.poe.in
│   │       ├── pbsrun.poe.init.in
│   │       ├── printjob
│   │       └── sgiMPI.awk
│   ├── hooks/
│   │   ├── Makefile.am
│   │   └── cgroups/
│   │       ├── pbs_cgroups.CF
│   │       ├── pbs_cgroups.HK
│   │       └── pbs_cgroups.PY
│   ├── iff/
│   │   ├── Makefile.am
│   │   └── iff2.c
│   ├── include/
│   │   ├── Long.h
│   │   ├── Long_.h
│   │   ├── Makefile.am
│   │   ├── acct.h
│   │   ├── attribute.h
│   │   ├── auth.h
│   │   ├── avltree.h
│   │   ├── basil.h
│   │   ├── batch_request.h
│   │   ├── bitfield.h
│   │   ├── cmds.h
│   │   ├── credential.h
│   │   ├── dedup_jobids.h
│   │   ├── dis.h
│   │   ├── grunt.h
│   │   ├── hook.h
│   │   ├── hook_func.h
│   │   ├── ifl_internal.h
│   │   ├── job.h
│   │   ├── libauth.h
│   │   ├── libpbs.h
│   │   ├── libsec.h
│   │   ├── libutil.h
│   │   ├── list_link.h
│   │   ├── log.h
│   │   ├── mom_func.h
│   │   ├── mom_hook_func.h
│   │   ├── mom_server.h
│   │   ├── mom_vnode.h
│   │   ├── net_connect.h
│   │   ├── pbs_array_list.h
│   │   ├── pbs_assert.h
│   │   ├── pbs_client_thread.h
│   │   ├── pbs_db.h
│   │   ├── pbs_ecl.h
│   │   ├── pbs_entlim.h
│   │   ├── pbs_error.h
│   │   ├── pbs_idx.h
│   │   ├── pbs_ifl.h
│   │   ├── pbs_internal.h
│   │   ├── pbs_json.h
│   │   ├── pbs_license.h
│   │   ├── pbs_mpp.h
│   │   ├── pbs_nodes.h
│   │   ├── pbs_python.h
│   │   ├── pbs_python_private.h
│   │   ├── pbs_reliable.h
│   │   ├── pbs_sched.h
│   │   ├── pbs_share.h
│   │   ├── pbs_v1_module_common.i
│   │   ├── pbs_version.h.in
│   │   ├── placementsets.h
│   │   ├── port_forwarding.h
│   │   ├── portability.h
│   │   ├── provision.h
│   │   ├── qmgr.h
│   │   ├── queue.h
│   │   ├── range.h
│   │   ├── reservation.h
│   │   ├── resmon.h
│   │   ├── resource.h
│   │   ├── resv_node.h
│   │   ├── rm.h
│   │   ├── sched_cmds.h
│   │   ├── server.h
│   │   ├── server_limits.h
│   │   ├── site_job_attr_def.h
│   │   ├── site_job_attr_enum.h
│   │   ├── site_qmgr_node_print.h
│   │   ├── site_qmgr_que_print.h
│   │   ├── site_qmgr_sched_print.h
│   │   ├── site_qmgr_svr_print.h
│   │   ├── site_que_attr_def.h
│   │   ├── site_que_attr_enum.h
│   │   ├── site_queue.h
│   │   ├── site_resc_attr_def.h
│   │   ├── site_resv_attr_def.h
│   │   ├── site_resv_attr_enum.h
│   │   ├── site_sched_attr_def.h
│   │   ├── site_sched_attr_enum.h
│   │   ├── site_svr_attr_def.h
│   │   ├── site_svr_attr_enum.h
│   │   ├── svrfunc.h
│   │   ├── ticket.h
│   │   ├── tm.h
│   │   ├── tm_.h
│   │   ├── tpp.h
│   │   ├── tracking.h
│   │   ├── user.h
│   │   └── work_task.h
│   ├── lib/
│   │   ├── Libattr/
│   │   │   ├── Long_.c
│   │   │   ├── Makefile.am
│   │   │   ├── attr_atomic.c
│   │   │   ├── attr_fn_acl.c
│   │   │   ├── attr_fn_arst.c
│   │   │   ├── attr_fn_b.c
│   │   │   ├── attr_fn_c.c
│   │   │   ├── attr_fn_entlim.c
│   │   │   ├── attr_fn_f.c
│   │   │   ├── attr_fn_hold.c
│   │   │   ├── attr_fn_intr.c
│   │   │   ├── attr_fn_l.c
│   │   │   ├── attr_fn_ll.c
│   │   │   ├── attr_fn_resc.c
│   │   │   ├── attr_fn_size.c
│   │   │   ├── attr_fn_str.c
│   │   │   ├── attr_fn_time.c
│   │   │   ├── attr_fn_unkn.c
│   │   │   ├── attr_func.c
│   │   │   ├── attr_node_func.c
│   │   │   ├── attr_resc_func.c
│   │   │   ├── master_job_attr_def.xml
│   │   │   ├── master_node_attr_def.xml
│   │   │   ├── master_queue_attr_def.xml
│   │   │   ├── master_resc_def_all.xml
│   │   │   ├── master_resv_attr_def.xml
│   │   │   ├── master_sched_attr_def.xml
│   │   │   ├── master_svr_attr_def.xml
│   │   │   ├── resc_map.c
│   │   │   ├── strToL.c
│   │   │   ├── strTouL.c
│   │   │   └── uLTostr.c
│   │   ├── Libauth/
│   │   │   ├── Makefile.am
│   │   │   ├── README.md
│   │   │   ├── gss/
│   │   │   │   ├── Makefile.am
│   │   │   │   └── pbs_gss.c
│   │   │   └── munge/
│   │   │       ├── Makefile.am
│   │   │       └── munge_supp.c
│   │   ├── Libcmds/
│   │   │   ├── batch_status.c
│   │   │   ├── check_job_script.c
│   │   │   ├── chk_Jrange.c
│   │   │   ├── ck_job_name.c
│   │   │   ├── cmds_common.c
│   │   │   ├── cnt2server.c
│   │   │   ├── cs_error.c
│   │   │   ├── cvtdate.c
│   │   │   ├── err_handling.c
│   │   │   ├── get_attr.c
│   │   │   ├── get_dataservice_usr.c
│   │   │   ├── get_server.c
│   │   │   ├── isjobid.c
│   │   │   ├── locate_job.c
│   │   │   ├── parse_at.c
│   │   │   ├── parse_depend.c
│   │   │   ├── parse_destid.c
│   │   │   ├── parse_equal.c
│   │   │   ├── parse_jobid.c
│   │   │   ├── parse_stage.c
│   │   │   ├── prepare_path.c
│   │   │   ├── set_attr.c
│   │   │   └── set_resource.c
│   │   ├── Libdb/
│   │   │   ├── Makefile.am
│   │   │   └── pgsql/
│   │   │       ├── Makefile.am
│   │   │       ├── db_attr.c
│   │   │       ├── db_common.c
│   │   │       ├── db_job.c
│   │   │       ├── db_node.c
│   │   │       ├── db_postgres.h
│   │   │       ├── db_que.c
│   │   │       ├── db_resv.c
│   │   │       ├── db_sched.c
│   │   │       ├── db_svr.c
│   │   │       ├── pbs_db_env
│   │   │       ├── pbs_db_schema.sql
│   │   │       ├── pbs_db_utility
│   │   │       ├── pbs_ds_systemd
│   │   │       └── pbs_schema_upgrade
│   │   ├── Libdis/
│   │   │   ├── dis.c
│   │   │   ├── dis_.h
│   │   │   ├── dis_helpers.c
│   │   │   ├── discui_.c
│   │   │   ├── discul_.c
│   │   │   ├── discull_.c
│   │   │   ├── disi10d_.c
│   │   │   ├── disi10l_.c
│   │   │   ├── disiui_.c
│   │   │   ├── disp10d_.c
│   │   │   ├── disp10l_.c
│   │   │   ├── disrcs.c
│   │   │   ├── disrd.c
│   │   │   ├── disrf.c
│   │   │   ├── disrfcs.c
│   │   │   ├── disrfst.c
│   │   │   ├── disrl.c
│   │   │   ├── disrl_.c
│   │   │   ├── disrsc.c
│   │   │   ├── disrsi.c
│   │   │   ├── disrsi_.c
│   │   │   ├── disrsl.c
│   │   │   ├── disrsl_.c
│   │   │   ├── disrsll_.c
│   │   │   ├── disrss.c
│   │   │   ├── disrst.c
│   │   │   ├── disruc.c
│   │   │   ├── disrui.c
│   │   │   ├── disrul.c
│   │   │   ├── disrull.c
│   │   │   ├── disrus.c
│   │   │   ├── diswcs.c
│   │   │   ├── diswf.c
│   │   │   ├── diswl_.c
│   │   │   ├── diswsi.c
│   │   │   ├── diswsl.c
│   │   │   ├── diswui.c
│   │   │   ├── diswui_.c
│   │   │   ├── diswul.c
│   │   │   ├── diswull.c
│   │   │   └── ps_dis.c
│   │   ├── Libecl/
│   │   │   ├── ecl_verify.c
│   │   │   ├── ecl_verify_datatypes.c
│   │   │   ├── ecl_verify_object_name.c
│   │   │   ├── ecl_verify_values.c
│   │   │   └── pbs_client_thread.c
│   │   ├── Libifl/
│   │   │   ├── DIS_decode.c
│   │   │   ├── DIS_encode.c
│   │   │   ├── Makefile.am
│   │   │   ├── PBS_attr.c
│   │   │   ├── advise.c
│   │   │   ├── auth.c
│   │   │   ├── conn_table.c
│   │   │   ├── dec_DelJobList.c
│   │   │   ├── dec_reply.c
│   │   │   ├── enc_reply.c
│   │   │   ├── entlim_parse.c
│   │   │   ├── get_svrport.c
│   │   │   ├── grunt_parse.c
│   │   │   ├── ifl_impl.c
│   │   │   ├── ifl_pointers.c
│   │   │   ├── ifl_util.c
│   │   │   ├── int_cred.c
│   │   │   ├── int_hook.c
│   │   │   ├── int_jcred.c
│   │   │   ├── int_manage2.c
│   │   │   ├── int_manager.c
│   │   │   ├── int_modify_resv.c
│   │   │   ├── int_msg2.c
│   │   │   ├── int_rdrpy.c
│   │   │   ├── int_sig2.c
│   │   │   ├── int_status.c
│   │   │   ├── int_status2.c
│   │   │   ├── int_submit.c
│   │   │   ├── int_submit_resv.c
│   │   │   ├── int_ucred.c
│   │   │   ├── list_link.c
│   │   │   ├── pbsD_Preempt_Jobs.c
│   │   │   ├── pbsD_alterjob.c
│   │   │   ├── pbsD_confirmresv.c
│   │   │   ├── pbsD_connect.c
│   │   │   ├── pbsD_defschreply.c
│   │   │   ├── pbsD_deljob.c
│   │   │   ├── pbsD_deljoblist.c
│   │   │   ├── pbsD_delresv.c
│   │   │   ├── pbsD_holdjob.c
│   │   │   ├── pbsD_locjob.c
│   │   │   ├── pbsD_manager.c
│   │   │   ├── pbsD_modify_resv.c
│   │   │   ├── pbsD_movejob.c
│   │   │   ├── pbsD_msgjob.c
│   │   │   ├── pbsD_orderjo.c
│   │   │   ├── pbsD_rerunjo.c
│   │   │   ├── pbsD_resc.c
│   │   │   ├── pbsD_rlsjob.c
│   │   │   ├── pbsD_runjob.c
│   │   │   ├── pbsD_selectj.c
│   │   │   ├── pbsD_sigjob.c
│   │   │   ├── pbsD_stagein.c
│   │   │   ├── pbsD_stathook.c
│   │   │   ├── pbsD_stathost.c
│   │   │   ├── pbsD_statjob.c
│   │   │   ├── pbsD_statnode.c
│   │   │   ├── pbsD_statque.c
│   │   │   ├── pbsD_statresv.c
│   │   │   ├── pbsD_statrsc.c
│   │   │   ├── pbsD_statsched.c
│   │   │   ├── pbsD_statsrv.c
│   │   │   ├── pbsD_submit.c
│   │   │   ├── pbsD_submit_resv.c
│   │   │   ├── pbsD_termin.c
│   │   │   ├── pbs_delstatfree.c
│   │   │   ├── pbs_get_attribute_errors.c
│   │   │   ├── pbs_geterrmg.c
│   │   │   ├── pbs_geterrno.c
│   │   │   ├── pbs_ifl.i
│   │   │   ├── pbs_loadconf.c
│   │   │   ├── pbs_quote_parse.c
│   │   │   ├── pbs_statfree.c
│   │   │   ├── rm.c
│   │   │   ├── strsep.c
│   │   │   ├── tcp_dis.c
│   │   │   ├── tm.c
│   │   │   └── xml_encode_decode.c
│   │   ├── Libjson/
│   │   │   ├── Makefile.am
│   │   │   └── cJSON/
│   │   │       ├── Makefile.am
│   │   │       └── pbs_cjson.c
│   │   ├── Liblicensing/
│   │   │   ├── Makefile.am
│   │   │   ├── liblicense.h
│   │   │   └── license_client.c
│   │   ├── Liblog/
│   │   │   ├── Makefile.am
│   │   │   ├── chk_file_sec.c
│   │   │   ├── log_event.c
│   │   │   ├── pbs_log.c
│   │   │   ├── pbs_messages.c
│   │   │   └── setup_env.c
│   │   ├── Libnet/
│   │   │   ├── Makefile.am
│   │   │   ├── get_hostaddr.c
│   │   │   ├── hnls.c
│   │   │   ├── net_client.c
│   │   │   ├── net_server.c
│   │   │   ├── net_set_clse.c
│   │   │   └── port_forwarding.c
│   │   ├── Libpbs/
│   │   │   ├── Makefile.am
│   │   │   └── pbs.pc.in
│   │   ├── Libpython/
│   │   │   ├── Makefile.am
│   │   │   ├── common_python_utils.c
│   │   │   ├── module_pbs_v1.c
│   │   │   ├── pbs_python_external.c
│   │   │   ├── pbs_python_import_types.c
│   │   │   ├── pbs_python_svr_external.c
│   │   │   ├── pbs_python_svr_internal.c
│   │   │   ├── pbs_python_svr_size_type.c
│   │   │   └── shared_python_utils.c
│   │   ├── Libsec/
│   │   │   ├── Makefile.am
│   │   │   └── cs_standard.c
│   │   ├── Libsite/
│   │   │   ├── Makefile.am
│   │   │   ├── site_allow_u.c
│   │   │   ├── site_alt_rte.c
│   │   │   ├── site_check_u.c
│   │   │   ├── site_map_usr.c
│   │   │   ├── site_mom_chu.c
│   │   │   ├── site_mom_ckp.c
│   │   │   └── site_mom_jst.c
│   │   ├── Libtpp/
│   │   │   ├── Makefile.am
│   │   │   ├── tpp_client.c
│   │   │   ├── tpp_em.c
│   │   │   ├── tpp_internal.h
│   │   │   ├── tpp_platform.c
│   │   │   ├── tpp_router.c
│   │   │   ├── tpp_transport.c
│   │   │   └── tpp_util.c
│   │   ├── Libutil/
│   │   │   ├── Makefile.am
│   │   │   ├── avltree.c
│   │   │   ├── daemon_protect.c
│   │   │   ├── dedup_jobids.c
│   │   │   ├── entlim.c
│   │   │   ├── execvnode_seq_util.c
│   │   │   ├── get_hostname.c
│   │   │   ├── hook.c
│   │   │   ├── misc_utils.c
│   │   │   ├── pbs_aes_encrypt.c
│   │   │   ├── pbs_array_list.c
│   │   │   ├── pbs_ical.c
│   │   │   ├── pbs_idx.c
│   │   │   ├── pbs_secrets.c
│   │   │   ├── range.c
│   │   │   ├── thread_utils.c
│   │   │   └── work_task.c
│   │   └── Makefile.am
│   ├── modules/
│   │   ├── Makefile.am
│   │   └── python/
│   │       ├── Makefile.am
│   │       ├── pbs/
│   │       │   ├── __init__.py
│   │       │   └── v1/
│   │       │       ├── __init__.py
│   │       │       ├── _attr_types.py
│   │       │       ├── _base_types.py
│   │       │       ├── _exc_types.py
│   │       │       ├── _export_types.py
│   │       │       ├── _pmi_cray.py
│   │       │       ├── _pmi_none.py
│   │       │       ├── _pmi_sgi.py
│   │       │       ├── _pmi_types.py
│   │       │       ├── _pmi_utils.py
│   │       │       └── _svr_types.py
│   │       ├── pbs_hooks/
│   │       │   ├── PBS_alps_inventory_check.HK
│   │       │   ├── PBS_alps_inventory_check.PY
│   │       │   ├── PBS_cray_atom.CF
│   │       │   ├── PBS_cray_atom.HK
│   │       │   ├── PBS_cray_atom.PY
│   │       │   ├── PBS_power.CF
│   │       │   ├── PBS_power.HK
│   │       │   ├── PBS_power.PY
│   │       │   ├── PBS_xeon_phi_provision.HK
│   │       │   └── PBS_xeon_phi_provision.PY
│   │       ├── pbs_v1_module_init.c
│   │       ├── setup.cfg
│   │       └── setup.py
│   ├── mom_rcp/
│   │   ├── Makefile.am
│   │   ├── README
│   │   ├── extern.h
│   │   ├── pathnames.h
│   │   ├── pbs_stat.h
│   │   ├── rcp.c
│   │   ├── replace.c
│   │   └── util.c
│   ├── resmom/
│   │   ├── Makefile.am
│   │   ├── catch_child.c
│   │   ├── job_recov_fs.c
│   │   ├── linux/
│   │   │   ├── alps.c
│   │   │   ├── mom_func.c
│   │   │   ├── mom_mach.c
│   │   │   ├── mom_mach.h
│   │   │   ├── mom_start.c
│   │   │   └── pe_input.c
│   │   ├── mock_run.c
│   │   ├── mock_run.h
│   │   ├── mom_comm.c
│   │   ├── mom_hook_func.c
│   │   ├── mom_inter.c
│   │   ├── mom_main.c
│   │   ├── mom_pmix.c
│   │   ├── mom_pmix.h
│   │   ├── mom_server.c
│   │   ├── mom_updates_bundle.c
│   │   ├── mom_vnode.c
│   │   ├── mom_walltime.c
│   │   ├── popen.c
│   │   ├── prolog.c
│   │   ├── renew_creds.c
│   │   ├── renew_creds.h
│   │   ├── requests.c
│   │   ├── rm_dep.h
│   │   ├── stage_func.c
│   │   ├── start_exec.c
│   │   └── vnode_storage.c
│   ├── scheduler/
│   │   ├── Makefile.am
│   │   ├── buckets.cpp
│   │   ├── buckets.h
│   │   ├── check.cpp
│   │   ├── check.h
│   │   ├── config.h
│   │   ├── constant.h
│   │   ├── data_types.h
│   │   ├── dedtime.cpp
│   │   ├── dedtime.h
│   │   ├── fairshare.cpp
│   │   ├── fairshare.h
│   │   ├── fifo.cpp
│   │   ├── fifo.h
│   │   ├── get_4byte.cpp
│   │   ├── globals.cpp
│   │   ├── globals.h
│   │   ├── job_info.cpp
│   │   ├── job_info.h
│   │   ├── limits.cpp
│   │   ├── limits_if.h
│   │   ├── list_order.awk
│   │   ├── misc.cpp
│   │   ├── misc.h
│   │   ├── multi_threading.cpp
│   │   ├── multi_threading.h
│   │   ├── node_info.cpp
│   │   ├── node_info.h
│   │   ├── node_partition.cpp
│   │   ├── node_partition.h
│   │   ├── parse.cpp
│   │   ├── parse.h
│   │   ├── pbs_bitmap.cpp
│   │   ├── pbs_bitmap.h
│   │   ├── pbs_dedicated
│   │   ├── pbs_holidays
│   │   ├── pbs_holidays.2017
│   │   ├── pbs_resource_group
│   │   ├── pbs_sched.cpp
│   │   ├── pbs_sched_bare.cpp
│   │   ├── pbs_sched_config
│   │   ├── pbs_sched_utils.cpp
│   │   ├── pbsfs.cpp
│   │   ├── prev_job_info.cpp
│   │   ├── prev_job_info.h
│   │   ├── prime.cpp
│   │   ├── prime.h
│   │   ├── queue.cpp
│   │   ├── queue.h
│   │   ├── queue_info.cpp
│   │   ├── queue_info.h
│   │   ├── resource.cpp
│   │   ├── resource.h
│   │   ├── resource_resv.cpp
│   │   ├── resource_resv.h
│   │   ├── resv_info.cpp
│   │   ├── resv_info.h
│   │   ├── sched_exception.cpp
│   │   ├── sched_ifl_wrappers.cpp
│   │   ├── server_info.cpp
│   │   ├── server_info.h
│   │   ├── simulate.cpp
│   │   ├── simulate.h
│   │   ├── site_code.cpp
│   │   ├── site_code.h
│   │   ├── site_data.h
│   │   ├── sort.cpp
│   │   ├── sort.h
│   │   ├── state_count.cpp
│   │   └── state_count.h
│   ├── server/
│   │   ├── Makefile.am
│   │   ├── accounting.c
│   │   ├── array_func.c
│   │   ├── attr_recov.c
│   │   ├── attr_recov_db.c
│   │   ├── checkkey.c
│   │   ├── daemon_info.c
│   │   ├── dis_read.c
│   │   ├── failover.c
│   │   ├── geteusernam.c
│   │   ├── hook_func.c
│   │   ├── issue_request.c
│   │   ├── jattr_get_set.c
│   │   ├── job_func.c
│   │   ├── job_recov_db.c
│   │   ├── job_route.c
│   │   ├── license_client.c
│   │   ├── licensing_func.c
│   │   ├── mom_info.c
│   │   ├── nattr_get_set.c
│   │   ├── node_func.c
│   │   ├── node_manager.c
│   │   ├── node_recov_db.c
│   │   ├── pbs_comm.c
│   │   ├── pbs_db_func.c
│   │   ├── pbsd_init.c
│   │   ├── pbsd_main.c
│   │   ├── process_request.c
│   │   ├── qattr_get_set.c
│   │   ├── queue_func.c
│   │   ├── queue_recov_db.c
│   │   ├── rattr_get_set.c
│   │   ├── reply_send.c
│   │   ├── req_cred.c
│   │   ├── req_delete.c
│   │   ├── req_getcred.c
│   │   ├── req_holdjob.c
│   │   ├── req_jobobit.c
│   │   ├── req_locate.c
│   │   ├── req_manager.c
│   │   ├── req_message.c
│   │   ├── req_modify.c
│   │   ├── req_movejob.c
│   │   ├── req_preemptjob.c
│   │   ├── req_quejob.c
│   │   ├── req_register.c
│   │   ├── req_rerun.c
│   │   ├── req_rescq.c
│   │   ├── req_runjob.c
│   │   ├── req_select.c
│   │   ├── req_shutdown.c
│   │   ├── req_signal.c
│   │   ├── req_stat.c
│   │   ├── req_track.c
│   │   ├── resc_attr.c
│   │   ├── run_sched.c
│   │   ├── sattr_get_set.c
│   │   ├── sched_attr_get_set.c
│   │   ├── sched_func.c
│   │   ├── setup_resc.c
│   │   ├── stat_job.c
│   │   ├── svr_chk_owner.c
│   │   ├── svr_connect.c
│   │   ├── svr_credfunc.c
│   │   ├── svr_func.c
│   │   ├── svr_jobfunc.c
│   │   ├── svr_mail.c
│   │   ├── svr_movejob.c
│   │   ├── svr_recov_db.c
│   │   ├── svr_resccost.c
│   │   ├── user_func.c
│   │   └── vnparse.c
│   ├── tools/
│   │   ├── Makefile.am
│   │   ├── chk_tree.c
│   │   ├── create_env_file.sh
│   │   ├── hostn.c
│   │   ├── pbsTclInit.c
│   │   ├── pbsTkInit.c
│   │   ├── pbs_ds_monitor.c
│   │   ├── pbs_idled.c
│   │   ├── pbs_probe.c
│   │   ├── pbs_python.c
│   │   ├── pbs_sleep.c
│   │   ├── pbs_tclWrap.c
│   │   ├── pbs_upgrade_job.c
│   │   ├── printjob.c
│   │   ├── rstester.c
│   │   ├── site_tclWrap.c
│   │   ├── tracejob.c
│   │   ├── tracejob.h
│   │   └── wrap_tcl.sh.in
│   └── unsupported/
│       ├── Makefile.am
│       ├── NodeHealthCheck.json
│       ├── NodeHealthCheck.py
│       ├── README
│       ├── ReliableJobStartup.py
│       ├── cray_readme
│       ├── load_balance.py
│       ├── mom_dyn_res.py
│       ├── pbs-mailer/
│       │   ├── README.md
│       │   ├── debian/
│       │   │   ├── changelog
│       │   │   ├── compat
│       │   │   ├── conffiles
│       │   │   ├── control
│       │   │   ├── pbs-mailer.service
│       │   │   └── rules
│       │   ├── pbs_mail.json
│       │   ├── pbs_mail_saver
│       │   ├── pbs_mail_sender
│       │   ├── release-deb.sh
│       │   └── release-rpm.sh
│       ├── pbs_config
│       ├── pbs_jobs_at.8B
│       ├── pbs_loganalyzer
│       ├── pbs_output.py
│       ├── pbs_rescquery.3B
│       ├── pbs_rmget.8B
│       ├── pbs_rmget.c
│       ├── pbs_stat
│       ├── rapid_inter.py
│       ├── renew-test/
│       │   ├── base64.c
│       │   ├── base64.h
│       │   └── renew-test.c
│       ├── run_pelog_shell.ini
│       ├── run_pelog_shell.py
│       ├── sgiICEplacement.sh
│       ├── sgiICEvnode.sh
│       └── sgigenvnodelist.awk
├── test/
│   ├── Makefile.am
│   ├── fw/
│   │   ├── MANIFEST.in
│   │   ├── Makefile.am
│   │   ├── bin/
│   │   │   ├── pbs_as
│   │   │   ├── pbs_benchpress
│   │   │   ├── pbs_compare_results
│   │   │   ├── pbs_config
│   │   │   ├── pbs_cov
│   │   │   ├── pbs_loganalyzer
│   │   │   ├── pbs_py_spawn
│   │   │   ├── pbs_snapshot
│   │   │   ├── pbs_stat
│   │   │   ├── pbs_swigify
│   │   │   └── pbs_sys_report
│   │   ├── doc/
│   │   │   ├── caveats.rst
│   │   │   ├── commands.rst
│   │   │   ├── conf.py
│   │   │   ├── howtotest.rst
│   │   │   ├── index.rst
│   │   │   ├── install.rst
│   │   │   ├── intro.rst
│   │   │   ├── make.bat
│   │   │   ├── ptl.rst
│   │   │   └── tutorial.rst
│   │   ├── ptl/
│   │   │   ├── __init__.py.in
│   │   │   ├── lib/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── pbs_api_to_cli.py
│   │   │   │   ├── pbs_ifl_mock.py
│   │   │   │   ├── pbs_testlib.py
│   │   │   │   ├── ptl_batchutils.py
│   │   │   │   ├── ptl_comm.py
│   │   │   │   ├── ptl_config.py
│   │   │   │   ├── ptl_constants.py
│   │   │   │   ├── ptl_entities.py
│   │   │   │   ├── ptl_error.py
│   │   │   │   ├── ptl_expect_action.py
│   │   │   │   ├── ptl_fairshare.py
│   │   │   │   ├── ptl_mom.py
│   │   │   │   ├── ptl_object.py
│   │   │   │   ├── ptl_resourceresv.py
│   │   │   │   ├── ptl_sched.py
│   │   │   │   ├── ptl_server.py
│   │   │   │   ├── ptl_service.py
│   │   │   │   ├── ptl_types.py
│   │   │   │   └── ptl_wrappers.py
│   │   │   └── utils/
│   │   │       ├── __init__.py
│   │   │       ├── pbs_anonutils.py
│   │   │       ├── pbs_cliutils.py
│   │   │       ├── pbs_covutils.py
│   │   │       ├── pbs_crayutils.py
│   │   │       ├── pbs_dshutils.py
│   │   │       ├── pbs_logutils.py
│   │   │       ├── pbs_procutils.py
│   │   │       ├── pbs_snaputils.py
│   │   │       ├── pbs_testsuite.py
│   │   │       ├── pbs_testusers.py
│   │   │       └── plugins/
│   │   │           ├── __init__.py
│   │   │           ├── ptl_report_json.py
│   │   │           ├── ptl_test_data.py
│   │   │           ├── ptl_test_db.py
│   │   │           ├── ptl_test_info.py
│   │   │           ├── ptl_test_loader.py
│   │   │           ├── ptl_test_runner.py
│   │   │           └── ptl_test_tags.py
│   │   ├── ptl.csh
│   │   ├── ptl.sh
│   │   ├── ptlreport
│   │   ├── requirements.txt
│   │   └── setup.py.in
│   ├── scripts/
│   │   └── qsub_multi.sh
│   └── tests/
│       ├── Makefile.am
│       ├── __init__.py
│       ├── functional/
│       │   ├── __init__.py
│       │   ├── pbs_Rrecord_resources_used.py
│       │   ├── pbs_acct_log.py
│       │   ├── pbs_accumulate_resc_used.py
│       │   ├── pbs_acl_groups.py
│       │   ├── pbs_acl_host_moms.py
│       │   ├── pbs_acl_host_queue.py
│       │   ├── pbs_acl_host_server.py
│       │   ├── pbs_admin_suspend.py
│       │   ├── pbs_allpart.py
│       │   ├── pbs_alps_inventory_check_hook.py
│       │   ├── pbs_alps_release_tunables.py
│       │   ├── pbs_array_job_mail.py
│       │   ├── pbs_basil_parser_err.py
│       │   ├── pbs_basil_support.py
│       │   ├── pbs_calendaring.py
│       │   ├── pbs_cgroups_hook.py
│       │   ├── pbs_check_job_attrib.py
│       │   ├── pbs_checkpoint.py
│       │   ├── pbs_client_response.py
│       │   ├── pbs_complete_running_parent_job.py
│       │   ├── pbs_conf_resv_stale_vnode.py
│       │   ├── pbs_config.py
│       │   ├── pbs_cpuset.py
│       │   ├── pbs_cray_check_node_exclusivity.py
│       │   ├── pbs_cray_hyperthread.py
│       │   ├── pbs_cray_pagg_id.py
│       │   ├── pbs_cray_reliable_job_startup.py
│       │   ├── pbs_cray_smoketest.py
│       │   ├── pbs_cray_suspend_resume.py
│       │   ├── pbs_cray_vnode_per_numa.py
│       │   ├── pbs_cray_vnode_pool.py
│       │   ├── pbs_daemon_service_user.py
│       │   ├── pbs_dup_acc_log_for_resv.py
│       │   ├── pbs_eligible_time.py
│       │   ├── pbs_equiv_classes.py
│       │   ├── pbs_exceeded_resources_notification.py
│       │   ├── pbs_execjob_susp_resume.py
│       │   ├── pbs_fairshare.py
│       │   ├── pbs_gen_nodefile_on_sister_mom.py
│       │   ├── pbs_grunt.py
│       │   ├── pbs_highreslog.py
│       │   ├── pbs_holidays.py
│       │   ├── pbs_hook_config_os_env.py
│       │   ├── pbs_hook_crosslink_mom.py
│       │   ├── pbs_hook_debug_input.py
│       │   ├── pbs_hook_debug_nocrash.py
│       │   ├── pbs_hook_exechost_periodic.py
│       │   ├── pbs_hook_execjob_abort.py
│       │   ├── pbs_hook_execjob_end.py
│       │   ├── pbs_hook_execjob_prologue.py
│       │   ├── pbs_hook_jobobit.py
│       │   ├── pbs_hook_management.py
│       │   ├── pbs_hook_modifyvnode_state_changes.py
│       │   ├── pbs_hook_perf_stat.py
│       │   ├── pbs_hook_postqueuejob.py
│       │   ├── pbs_hook_set_attr.py
│       │   ├── pbs_hook_set_interrupt.py
│       │   ├── pbs_hook_set_jobenv.py
│       │   ├── pbs_hook_set_nonexist.py
│       │   ├── pbs_hook_timeout.py
│       │   ├── pbs_hook_unset_res.py
│       │   ├── pbs_hooksmoketest.py
│       │   ├── pbs_hookswig.py
│       │   ├── pbs_indirect_resources.py
│       │   ├── pbs_init_script.py
│       │   ├── pbs_job_array.py
│       │   ├── pbs_job_array_comment.py
│       │   ├── pbs_job_comment_on_resume.py
│       │   ├── pbs_job_default_group.py
│       │   ├── pbs_job_dependency.py
│       │   ├── pbs_job_purge.py
│       │   ├── pbs_job_requeue_timeout_error.py
│       │   ├── pbs_job_routing.py
│       │   ├── pbs_job_script.py
│       │   ├── pbs_job_sort_formula.py
│       │   ├── pbs_job_status_after_mom_hup.py
│       │   ├── pbs_job_task.py
│       │   ├── pbs_maintenance_reservations.py
│       │   ├── pbs_modifyresv_hook.py
│       │   ├── pbs_mom_hook_sync.py
│       │   ├── pbs_mom_hooks_test.py
│       │   ├── pbs_mom_job_dir.py
│       │   ├── pbs_mom_local_nodename.py
│       │   ├── pbs_mom_mock_run.py
│       │   ├── pbs_mom_walltime.py
│       │   ├── pbs_moved_job.py
│       │   ├── pbs_moved_job_local.py
│       │   ├── pbs_multi_sched.py
│       │   ├── pbs_multiple_execjob_launch_hook.py
│       │   ├── pbs_node_buckets.py
│       │   ├── pbs_node_jobs_restart.py
│       │   ├── pbs_node_jobs_restart_multinode.py
│       │   ├── pbs_node_rampdown.py
│       │   ├── pbs_node_rampdown_keep_select.py
│       │   ├── pbs_node_sleep_state.py
│       │   ├── pbs_nodes_json.py
│       │   ├── pbs_nodes_queues.py
│       │   ├── pbs_nonprint_characters.py
│       │   ├── pbs_offline_vnodes.py
│       │   ├── pbs_one_event_multiple_hooks.py
│       │   ├── pbs_only_explicit_psets.py
│       │   ├── pbs_only_small_files_over_tpp.py
│       │   ├── pbs_passing_environment_variable.py
│       │   ├── pbs_pbsnodes.py
│       │   ├── pbs_pbsnodes_output_trimmed.py
│       │   ├── pbs_peer.py
│       │   ├── pbs_periodic_constant.py
│       │   ├── pbs_power_provisioning_cray.py
│       │   ├── pbs_power_provisioning_sgi.py
│       │   ├── pbs_preemption.py
│       │   ├── pbs_printjob.py
│       │   ├── pbs_provisioning.py
│       │   ├── pbs_provisioning_enhancement.py
│       │   ├── pbs_python_restart_settings.py
│       │   ├── pbs_python_test.py
│       │   ├── pbs_qdel.py
│       │   ├── pbs_qmgr.py
│       │   ├── pbs_qrun.py
│       │   ├── pbs_qselect.py
│       │   ├── pbs_qstat.py
│       │   ├── pbs_qstat_2servers.py
│       │   ├── pbs_qstat_count.py
│       │   ├── pbs_qstat_formats.py
│       │   ├── pbs_qsub_direct_write.py
│       │   ├── pbs_qsub_opts_args.py
│       │   ├── pbs_qsub_remove_files.py
│       │   ├── pbs_qsub_script.py
│       │   ├── pbs_qsub_wblock.py
│       │   ├── pbs_que_resc_usage.py
│       │   ├── pbs_ralter.py
│       │   ├── pbs_release_limited_res_suspend.py
│       │   ├── pbs_reliable_job_startup.py
│       │   ├── pbs_resc_custom_perm.py
│       │   ├── pbs_resc_used_single_node.py
│       │   ├── pbs_reservations.py
│       │   ├── pbs_resource_multichunk.py
│       │   ├── pbs_resource_unset.py
│       │   ├── pbs_resource_usage_log.py
│       │   ├── pbs_resv_begin_hook.py
│       │   ├── pbs_resv_confirm_hook.py
│       │   ├── pbs_resv_end_hook.py
│       │   ├── pbs_resv_start_dur_end.py
│       │   ├── pbs_root_owned_script.py
│       │   ├── pbs_rstat.py
│       │   ├── pbs_runjob_hook.py
│       │   ├── pbs_sched_attr_updates.py
│       │   ├── pbs_sched_badstate.py
│       │   ├── pbs_sched_fifo.py
│       │   ├── pbs_sched_preempt_enforce_resumption.py
│       │   ├── pbs_sched_rerun.py
│       │   ├── pbs_sched_runjobwait.py
│       │   ├── pbs_sched_signal.py
│       │   ├── pbs_schedule_indirect_resources.py
│       │   ├── pbs_server_hook_attr.py
│       │   ├── pbs_server_periodic_hook.py
│       │   ├── pbs_set_enforcement.py
│       │   ├── pbs_sister_mom_crash.py
│       │   ├── pbs_snapshot_unittest.py
│       │   ├── pbs_soft_walltime.py
│       │   ├── pbs_stf.py
│       │   ├── pbs_strict_ordering.py
│       │   ├── pbs_support_linux_hook_event_phase1_2.py
│       │   ├── pbs_suspend_resume_accounting.py
│       │   ├── pbs_svr_dyn_res.py
│       │   ├── pbs_systemd.py
│       │   ├── pbs_test_entity_limits.py
│       │   ├── pbs_test_qorder.py
│       │   ├── pbs_test_run_count.py
│       │   ├── pbs_test_svr_dflt.py
│       │   ├── pbs_test_tpp.py
│       │   ├── pbs_trillion_jobid.py
│       │   ├── pbs_two_mom_hooks_resources_used.py
│       │   ├── pbs_types.py
│       │   ├── pbs_unknown_resource_hook_update.py
│       │   ├── pbs_unset_exectime.py
│       │   ├── pbs_user_reliability.py
│       │   ├── pbs_validate_job_qsub_attributes.py
│       │   └── pbs_verify_log_output.py
│       ├── interfaces/
│       │   ├── __init__.py
│       │   ├── pbs_libpbs_so.py
│       │   ├── pbs_node_partition.py
│       │   ├── pbs_partition.py
│       │   ├── pbs_preempt_params.py
│       │   └── pbs_sched_interface_test.py
│       ├── pbs_smoketest.py
│       ├── performance/
│       │   ├── __init__.py
│       │   ├── pbs_cgroups_stress.py
│       │   ├── pbs_client_nagle_performance.py
│       │   ├── pbs_equiv_classes_perf.py
│       │   ├── pbs_history_cleanup_quasihang.py
│       │   ├── pbs_jobperf.py
│       │   ├── pbs_preemptperformance.py
│       │   ├── pbs_qstat_performance.py
│       │   ├── pbs_qsub_performance.py
│       │   ├── pbs_rerunjob_file_transfer_perf.py
│       │   ├── pbs_runjobwait_perf.py
│       │   ├── pbs_sched_perf.py
│       │   ├── pbs_standing_resv_quasihang.py
│       │   └── test_dependency_perf.py
│       ├── resilience/
│       │   ├── __init__.py
│       │   └── pbs_hook_alarm_large_multinode_job.py
│       ├── security/
│       │   ├── __init__.py
│       │   ├── pbs_command_injection.py
│       │   └── pbs_multiple_auth.py
│       ├── selftest/
│       │   ├── __init__.py
│       │   ├── pbs_config_sched.py
│       │   ├── pbs_cycles_test.py
│       │   ├── pbs_default_timeout.py
│       │   ├── pbs_dshutils_tests.py
│       │   ├── pbs_expect.py
│       │   ├── pbs_initservices.py
│       │   ├── pbs_job_cleanup.py
│       │   ├── pbs_json_test_report.py
│       │   ├── pbs_manager.py
│       │   ├── pbs_managers_operators.py
│       │   ├── pbs_param_dict.py
│       │   ├── pbs_pbstestsuite.py
│       │   ├── pbs_requirements_decorator.py
│       │   ├── pbs_resvid_test.py
│       │   ├── pbs_test_create_vnodes.py
│       │   ├── pbs_test_revert_site_hooks.py
│       │   ├── pbs_test_revert_to_defaults.py
│       │   ├── pbs_testlogutils.py
│       │   └── pbs_testparams_decorator.py
│       └── upgrades/
│           └── __init__.py
└── valgrind.supp
Download .txt
Showing preview only (702K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (10751 symbols across 775 files)

FILE: buildutils/attr_parser.py
  class PropType (line 62) | class PropType(enum.Enum):
  class switch (line 72) | class switch(object):
    method __init__ (line 79) | def __init__(self, value):
    method __iter__ (line 83) | def __iter__(self):
    method match (line 87) | def match(self, *args):
  function fileappend (line 98) | def fileappend(prop_type, line):
  function getText (line 120) | def getText(svr_file, ecl_file, defines_file):
  function do_head (line 141) | def do_head(node):
  function do_index (line 167) | def do_index(attr):
  function do_member (line 179) | def do_member(attr, p_flag, tag_name):
  function process (line 218) | def process(master_file, svr_file, ecl_file, defines_file):
  function main (line 313) | def main(argv):
  function usage (line 395) | def usage():

FILE: src/cmds/pbs_attach.c
  function main (line 57) | int

FILE: src/cmds/pbs_attach_sup.c
  function usage (line 67) | void
  function attach (line 92) | void

FILE: src/cmds/pbs_dataservice.c
  function main (line 69) | int

FILE: src/cmds/pbs_demux.c
  type rwhere (line 71) | enum rwhere { invalid,
  type routem (line 76) | struct routem {
  function readit (line 94) | void
  function main (line 143) | int

FILE: src/cmds/pbs_ds_password.c
  type passwd (line 123) | struct passwd
  function cleanup (line 140) | static void
  function read_password (line 181) | static int
  function gen_password (line 225) | static int
  function update_db_usr (line 256) | int
  function check_user (line 287) | int
  function change_ownership (line 322) | int
  function main (line 376) | int

FILE: src/cmds/pbs_ralter.c
  type attrl (line 52) | struct attrl
  function process_opts (line 68) | int
  function print_usage (line 188) | static void
  function handle_attribute_errors (line 213) | static void
  function main (line 250) | int

FILE: src/cmds/pbs_rdel.c
  function main (line 64) | int

FILE: src/cmds/pbs_release_nodes.c
  function main (line 64) | int

FILE: src/cmds/pbs_rstat.c
  function display_single_reservation (line 75) | void
  function display (line 191) | void

FILE: src/cmds/pbs_rsub.c
  type attrl (line 60) | struct attrl
  function process_opts (line 89) | int
  function set_resv_env (line 377) | int
  function cnvrt_proc_attrib (line 472) | int
  function print_usage (line 621) | static void
  function handle_attribute_errors (line 646) | static void
  function main (line 714) | int

FILE: src/cmds/pbs_tmrsh.c
  function usage (line 76) | void
  type passwd (line 96) | struct passwd
  function host_match (line 121) | int
  function main (line 188) | int

FILE: src/cmds/pbsdsh.c
  function bailout (line 94) | void
  function host_match (line 115) | int
  function find_hostline (line 211) | int find_hostline(char *host)
  function wait_for_task (line 249) | void
  function main (line 336) | int

FILE: src/cmds/pbsnodes.c
  type mgr_operation_t (line 122) | typedef enum mgr_operation {
  type output_format_enum (line 134) | enum output_format_enum {
  function cmp_node_name (line 166) | static int
  function encode_to_json (line 194) | static int
  function prt_node_summary (line 292) | static int
  function prt_node (line 649) | static void
  type batch_status (line 729) | struct batch_status
  type attrl (line 731) | struct attrl
  type batch_status (line 752) | struct batch_status
  type attrl (line 754) | struct attrl
  function is_down (line 774) | static int
  function is_offline (line 794) | static int
  function marknode (line 819) | static int
  function main (line 887) | int

FILE: src/cmds/qalter.c
  function print_usage (line 70) | static void
  function handle_attribute_errors (line 95) | static void
  function main (line 168) | int

FILE: src/cmds/qdel.c
  function process_deljobstat (line 81) | static int
  function get_mail_suppress_count (line 134) | static int
  function delete_jobs_for_cluster (line 181) | static int
  function svr_jobid_list_t (line 284) | static svr_jobid_list_t *
  function main (line 317) | int

FILE: src/cmds/qdisable.c
  function main (line 77) | int
  function execute (line 139) | static void

FILE: src/cmds/qenable.c
  function main (line 74) | int
  function execute (line 136) | static void

FILE: src/cmds/qhold.c
  function print_usage (line 68) | static void
  function handle_attribute_errors (line 89) | static void
  function main (line 114) | int

FILE: src/cmds/qmgr.c
  type server (line 132) | struct server
  type objname (line 136) | struct objname
  type objname (line 137) | struct objname
  type objname (line 138) | struct objname
  type objname (line 139) | struct objname
  function dyn_strcpy (line 182) | static void
  function attrlist_add (line 241) | static void
  function dump_file (line 282) | int
  function params_import (line 424) | int
  function params_export (line 571) | int
  type passwd (line 690) | struct passwd
  function main (line 703) | int
  function chk_special_attr_values (line 936) | static int
  function attributes (line 1002) | int
  type server (line 1180) | struct server
  type server (line 1184) | struct server
  function connect_servers (line 1211) | int
  function blanks (line 1258) | void
  function check_list (line 1289) | int
  function disconnect_from_server (line 1346) | static void
  function clean_up_and_exit (line 1364) | void
  function remove_char (line 1399) | void
  function get_resc_type (line 1419) | int
  function is_reservation_queue (line 1451) | static int
  function display (line 1503) | void
  function set_active (line 1933) | int
  function handle_formula (line 2080) | void
  function execute (line 2131) | int
  function freeattropl (line 2546) | void
  type objname (line 2576) | struct objname
  type objname (line 2580) | struct objname
  type objname (line 2581) | struct objname
  type objname (line 2582) | struct objname
  function get_request (line 2681) | int
  function show_help (line 2893) | void
  function parse (line 2983) | int

FILE: src/cmds/qmgr_sup.c
  function EOF_handler (line 95) | static unsigned char
  function qmgr_list_history (line 110) | void
  function qmgr_get_history (line 152) | static int
  function init_qmgr_hist (line 184) | int
  function qmgr_add_history (line 257) | int
  function get_request_hist (line 290) | int

FILE: src/cmds/qmove.c
  function main (line 60) | int

FILE: src/cmds/qmsg.c
  function main (line 60) | int

FILE: src/cmds/qorder.c
  function main (line 53) | int

FILE: src/cmds/qrerun.c
  function main (line 60) | int

FILE: src/cmds/qrls.c
  function main (line 59) | int

FILE: src/cmds/qrun.c
  function main (line 72) | int
  function execute (line 164) | static void

FILE: src/cmds/qselect.c
  type batch_op (line 66) | enum batch_op
  function set_attrop (line 80) | void
  function check_op (line 136) | void
  function get_tsubopt (line 178) | static int
  function check_res_op (line 229) | int
  function print_usage (line 289) | static void
  function handle_attribute_errors (line 311) | static void
  function main (line 375) | int

FILE: src/cmds/qsig.c
  function main (line 60) | int

FILE: src/cmds/qstart.c
  function main (line 74) | int
  function execute (line 136) | static void

FILE: src/cmds/qstat.c
  type batch_status (line 80) | struct batch_status
  type batch_status (line 80) | struct batch_status
  type attrl (line 112) | struct attrl
  type attrl (line 139) | struct attrl
  type output_format_enum (line 151) | enum output_format_enum {
  type batch_status_item_type (line 158) | enum batch_status_item_type {
  function batch_item_json_type_triage (line 177) | int batch_item_json_type_triage (const char *name, const char *resource)
  type attrl (line 217) | struct attrl
  function cmp_jobs (line 219) | int
  function istrue (line 304) | int
  function states (line 332) | static void
  function exit_qstat (line 434) | void
  function prt_attr (line 451) | void
  function trunc_value (line 648) | static void
  function prt_nodes (line 671) | static void
  function altdsp_statjob (line 847) | static void
  function get_ct (line 1147) | static void
  function altdsp_statque (line 1169) | static void
  function add_atropl (line 1245) | static void
  function cvt_time_to_seconds (line 1261) | static long
  function display_statjob (line 1358) | int
  function accumulate_restriction (line 1686) | static void accumulate_restriction(char **keys, char **values, int *coun...
  function display_statque (line 1739) | int
  function display_statserver (line 1926) | int
  function Tcl_Obj (line 2044) | static Tcl_Obj *
  type attrl (line 2090) | struct attrl
  function log_err (line 2142) | void
  function tcl_init (line 2156) | void
  function tcl_init (line 2208) | void
  function tcl_addarg (line 2260) | void
  type batch_status (line 2290) | struct batch_status
  function tcl_stat (line 2291) | int
  function tcl_stat (line 2380) | int
  function main (line 2463) | int
  function cmp_est_time (line 3418) | static int
  type tm (line 3501) | struct tm
  type tm (line 3502) | struct tm
  type tm (line 3503) | struct tm

FILE: src/cmds/qstop.c
  function main (line 73) | int
  function execute (line 135) | static void

FILE: src/cmds/qsub.c
  type attrl (line 181) | struct attrl
  type attrl (line 182) | struct attrl
  type batch_status (line 184) | struct batch_status
  function refresh_dfltqsubargs (line 574) | static void
  function exit_qsub (line 620) | void
  function print_usage (line 696) | static void
  type sockaddr_in (line 725) | struct sockaddr_in
  type sockaddr (line 741) | struct sockaddr
  type sockaddr (line 749) | struct sockaddr
  function shut_close_sock (line 772) | static void
  function bailout (line 788) | void
  type sockaddr_in (line 822) | struct sockaddr_in
  type sockaddr (line 833) | struct sockaddr
  type sockaddr (line 841) | struct sockaddr
  function block (line 873) | static void
  function process_opts (line 1008) | static int
  function if_cmd_line (line 1362) | if_cmd_line(Depend_opt)
  function if_cmd_line (line 1368) | if_cmd_line(Stagein_opt)
  function if_cmd_line (line 1374) | if_cmd_line(Stageout_opt)
  function if_cmd_line (line 1380) | if_cmd_line(Sandbox_opt)
  function if_cmd_line (line 1386) | if_cmd_line(Grouplist_opt)
  function if_cmd_line (line 1392) | if_cmd_line(Interact_opt)
  function if_cmd_line (line 1431) | if_cmd_line(block_opt)
  function if_cmd_line (line 1450) | if_cmd_line(Resvstart_opt)
  function if_cmd_line (line 1462) | if_cmd_line(Resvend_opt)
  function if_cmd_line (line 1474) | if_cmd_line(cred_opt)
  function if_cmd_line (line 1481) | if_cmd_line(tolerate_node_failures_opt)
  type stat (line 1858) | struct stat
  type utsname (line 1945) | struct utsname
  type stat (line 2085) | struct stat
  type attrl (line 2434) | struct attrl
  type attrl (line 2523) | struct attrl
  type attrl (line 2526) | struct attrl
  type ecl_attribute_errors (line 2742) | struct ecl_attribute_errors
  type attropl (line 2744) | struct attropl
  type ecl_attribute_errors (line 2899) | struct ecl_attribute_errors
  type attropl (line 2948) | struct attropl
  type attropl (line 2952) | struct attropl
  type attrl (line 3085) | struct attrl
  type attrl (line 3087) | struct attrl
  type attrl (line 3111) | struct attrl
  type attrl (line 3112) | struct attrl
  type attrl (line 3114) | struct attrl
  type attrl (line 3115) | struct attrl

FILE: src/cmds/qsub_sup.c
  type termios (line 105) | struct termios
  type winsize (line 106) | struct winsize
  type attrl (line 107) | struct attrl
  type attrl (line 129) | struct attrl
  type attrl (line 133) | struct attrl
  type attrl (line 145) | struct attrl
  type attrl (line 149) | struct attrl
  function log_syslog (line 161) | void
  function check_crlf (line 221) | int
  function get_script (line 252) | int
  function blockint (line 361) | void
  function enable_gui (line 371) | void
  type sockaddr_in (line 537) | struct sockaddr_in
  type sockaddr (line 550) | struct sockaddr
  type sockaddr (line 557) | struct sockaddr
  function do_daemon_stuff (line 587) | void
  function exit_on_sigpipe (line 642) | void
  function set_sig_handlers (line 653) | void
  function dosend (line 681) | int
  function dorecv (line 730) | int
  function reader (line 768) | int
  function pkt_reader (line 818) | int
  function reader_Xjob (line 871) | int
  function pkt_reader_Xjob (line 925) | int
  function get_reader_Xjob (line 981) | int
  function settermraw (line 1001) | void
  function stopme (line 1038) | void
  function writer (line 1056) | void
  function send_term (line 1158) | void
  function send_winsize (line 1203) | void
  function getwinsize (line 1229) | int
  function catchchild (line 1248) | void
  function no_suspend (line 1281) | void
  function catchint (line 1297) | void
  function toolong (line 1333) | void
  function log_cmds_portfw_msg (line 1349) | static void
  function x11handler (line 1372) | static void
  function interactive (line 1407) | void
  function get_comm_filename (line 1636) | void
  function check_qsub_daemon (line 1694) | int
  function daemon_stuff (line 1722) | static void
  function daemon_submit (line 1923) | int

FILE: src/cmds/qterm.c
  function main (line 88) | int
  function execute (line 214) | static void

FILE: src/cmds/scripts/pbs_bootcheck.py
  function __get_uptime (line 49) | def __get_uptime():

FILE: src/cmds/scripts/pbs_topologyinfo.py
  class Inventory (line 50) | class Inventory(object):
    method reset (line 56) | def reset(self):
    method __init__ (line 66) | def __init__(self):
    method reportsockets_win (line 69) | def reportsockets_win(self, topo_file):
    method latest_hwloc (line 83) | def latest_hwloc(self, hwlocVersion):
    method calculate (line 94) | def calculate(self):
    method reportsockets (line 101) | def reportsockets(self, dirs, files, options):
    method countsockets (line 175) | def countsockets(self, topo_file):
  function socketXMLstart (line 231) | def socketXMLstart(name, attrs):

FILE: src/hooks/cgroups/pbs_cgroups.PY
  class AdminError (line 160) | class AdminError(Exception):
  class ProcessingError (line 167) | class ProcessingError(Exception):
  class UserError (line 174) | class UserError(Exception):
  class JobValueError (line 181) | class JobValueError(Exception):
  class CgroupBusyError (line 188) | class CgroupBusyError(ProcessingError):
  class CgroupConfigError (line 195) | class CgroupConfigError(AdminError):
  class CgroupLimitError (line 202) | class CgroupLimitError(AdminError):
  class CgroupProcessingError (line 209) | class CgroupProcessingError(ProcessingError):
  class TimeoutError (line 216) | class TimeoutError(ProcessingError):
  function stringified_output (line 230) | def stringified_output(out):
  function caller_name (line 250) | def caller_name():
  function systemd_escape (line 260) | def systemd_escape(buf):
  function convert_size (line 293) | def convert_size(value, units='b'):
  function size_as_int (line 343) | def size_as_int(value):
  function convert_time (line 359) | def convert_time(value, units='s'):
  function decode_list (line 407) | def decode_list(data):
  function decode_dict (line 430) | def decode_dict(data):
  function merge_dict (line 467) | def merge_dict(base, new):
  function expand_list (line 491) | def expand_list(old):
  function find_files (line 516) | def find_files(path, pattern='*', kind='',
  function initialize_resource (line 586) | def initialize_resource(resc):
  function printjob_info (line 613) | def printjob_info(jobid, include_attributes=False):
  function job_is_suspended (line 665) | def job_is_suspended(jobid):
  function job_is_running (line 675) | def job_is_running(jobid):
  function fetch_vnode_comments_nomp (line 685) | def fetch_vnode_comments_nomp(vnode_list, timeout=10):
  function fetch_vnode_comments_queue (line 718) | def fetch_vnode_comments_queue(vnode_list, commq):
  function fetch_vnode_comments_mp (line 745) | def fetch_vnode_comments_mp(vnode_list, timeout=10):
  function fetch_vnode_comments (line 782) | def fetch_vnode_comments(vnode_list, timeout=10):
  class Lock (line 800) | class Lock(object):
    method __init__ (line 805) | def __init__(self, path):
    method getpath (line 809) | def getpath(self):
    method getlockfd (line 815) | def getlockfd(self):
    method __enter__ (line 821) | def __enter__(self):
    method __exit__ (line 827) | def __exit__(self, exc, val, trace):
  class Timeout (line 838) | class Timeout(object):
    method __init__ (line 843) | def __init__(self, duration=1, message='Operation timed out'):
    method handler (line 847) | def handler(self, sig, frame):
    method getduration (line 853) | def getduration(self):
    method getmessage (line 859) | def getmessage(self):
    method __enter__ (line 865) | def __enter__(self):
    method __exit__ (line 871) | def __exit__(self, exc, val, trace):
  class HookUtils (line 879) | class HookUtils(object):
    method __init__ (line 884) | def __init__(self, hook_events=None):
    method __repr__ (line 1008) | def __repr__(self):
    method event_name (line 1011) | def event_name(self, hooktype):
    method hashandler (line 1022) | def hashandler(self, hooktype):
    method invoke_handler (line 1031) | def invoke_handler(self, event, cgroup, jobutil, *args):
    method _execjob_begin_handler (line 1048) | def _execjob_begin_handler(self, event, cgroup, jobutil):
    method _execjob_epilogue_handler (line 1138) | def _execjob_epilogue_handler(self, event, cgroup, jobutil):
    method _execjob_end_handler (line 1155) | def _execjob_end_handler(self, event, cgroup, jobutil):
    method manage_rlimit_as (line 1182) | def manage_rlimit_as(self, job):
    method _execjob_launch_handler (line 1230) | def _execjob_launch_handler(self, event, cgroup, jobutil):
    method _exechost_periodic_handler (line 1259) | def _exechost_periodic_handler(self, event, cgroup, jobutil):
    method _exechost_startup_handler (line 1300) | def _exechost_startup_handler(self, event, cgroup, jobutil):
    method _execjob_attach_handler (line 1352) | def _execjob_attach_handler(self, event, cgroup, jobutil):
    method _execjob_resize_handler (line 1365) | def _execjob_resize_handler(self, event, cgroup, jobutil):
    method _execjob_postsuspend_handler (line 1433) | def _execjob_postsuspend_handler(self, event, cgroup, jobutil):
    method _execjob_preresume_handler (line 1439) | def _execjob_preresume_handler(self, event, cgroup, jobutil):
  class JobUtils (line 1450) | class JobUtils(object):
    method __init__ (line 1455) | def __init__(self, job, hostname=None, assigned_resources=None):
    method __repr__ (line 1466) | def __repr__(self):
    method _get_assigned_job_resources (line 1472) | def _get_assigned_job_resources(self, hostname=None):
  class NodeUtils (line 1580) | class NodeUtils(object):
    method __init__ (line 1588) | def __init__(self, cfg, hostname=None, cpuinfo=None, meminfo=None,
    method __repr__ (line 1623) | def __repr__(self):
    method _add_device_counts_to_numa_nodes (line 1632) | def _add_device_counts_to_numa_nodes(self):
    method _discover_numa_nodes (line 1656) | def _discover_numa_nodes(self):
    method _devinfo (line 1744) | def _devinfo(self, path):
    method _discover_devices (line 1766) | def _discover_devices(self):
    method _discover_gpus (line 1923) | def _discover_gpus(self):
    method _discover_migs (line 1997) | def _discover_migs(self, gpus):
    method _discover_mig_minor (line 2155) | def _discover_mig_minor(self, gpu, gi, ci=None):
    method _discover_meminfo (line 2172) | def _discover_meminfo(self):
    method _discover_cpuinfo (line 2198) | def _discover_cpuinfo(self):
    method gather_jobs_on_node (line 2291) | def gather_jobs_on_node(self, cgroup):
    method get_memory_on_node (line 2317) | def get_memory_on_node(self, memtotal=None, ignore_reserved=False):
    method get_vmem_on_node (line 2371) | def get_vmem_on_node(self, vmemtotal=None, ignore_reserved=False):
    method get_hpmem_on_node (line 2438) | def get_hpmem_on_node(self, hpmemtotal=None, ignore_reserved=False):
    method create_vnodes (line 2500) | def create_vnodes(self, vntype=None):
    method take_node_offline (line 2767) | def take_node_offline(self):
    method bring_node_online (line 2831) | def bring_node_online(self):
  class CgroupUtils (line 2895) | class CgroupUtils(object):
    method __init__ (line 2900) | def __init__(self, hostname, vnode, cfg=None, subsystems=None,
    method __repr__ (line 3011) | def __repr__(self):
    method write_to_stderr (line 3022) | def write_to_stderr(self, job, msg):
    method set_diag_messages (line 3048) | def set_diag_messages(self, resc_used, msg, concate):
    method _target_subsystems (line 3075) | def _target_subsystems(self):
    method _copy_from_parent (line 3099) | def _copy_from_parent(self, dest):
    method _assemble_path (line 3116) | def _assemble_path(self, subsys, mnt_point, flags):
    method _get_paths (line 3140) | def _get_paths(self):
    method _cgroup_path (line 3217) | def _cgroup_path(self, subsys, cgfile='', jobid=''):
    method morph_config_dict_bools (line 3248) | def morph_config_dict_bools(self, config_dict, subsection=None):
    method parse_config_file (line 3440) | def parse_config_file():
    method _create_service (line 3600) | def _create_service(self):
    method create_paths (line 3677) | def create_paths(self):
    method _get_vnode_type (line 3739) | def _get_vnode_type(self):
    method _get_assigned_cgroup_resources (line 3787) | def _get_assigned_cgroup_resources(self):
    method _get_systemd_version (line 3917) | def _get_systemd_version(self):
    method _glob_subdir_wildcard (line 3948) | def _glob_subdir_wildcard(self, extension=''):
    method enabled (line 3958) | def enabled(self, subsystem):
    method default (line 3984) | def default(self, subsystem):
    method _is_pid_owner (line 3994) | def _is_pid_owner(self, pid, job_uid):
    method _get_pids_in_sid (line 4015) | def _get_pids_in_sid(self, sid=None):
    method add_pids (line 4056) | def add_pids(self, pidarg, jobid):
    method setup_job_devices_env (line 4147) | def setup_job_devices_env(self, gpus):
    method _setup_subsys_devices (line 4187) | def _setup_subsys_devices(self, jobid, node):
    method _assign_devices (line 4281) | def _assign_devices(self, device_kind, device_list, device_count, node):
    method get_device_name (line 4336) | def get_device_name(self, node, available, socket, major, minor):
    method _combine_resources (line 4376) | def _combine_resources(self, dict1, dict2):
    method _assign_resources (line 4410) | def _assign_resources(self, requested, available, socketlist, node):
    method assign_job (line 4540) | def assign_job(self, requested, available, node):
    method available_node_resources (line 4681) | def available_node_resources(self, node, exclude_jobid=None):
    method set_swappiness (line 4820) | def set_swappiness(self, value, jobid=''):
    method set_limit (line 4832) | def set_limit(self, resource, value, jobid=''):
    method update_job_usage (line 4955) | def update_job_usage(self, jobid, resc_used, force=False):
    method create_job (line 5102) | def create_job(self, jobid, node):
    method configure_job (line 5131) | def configure_job(self, job, hostresc, node, cgroup, event_type):
    method _kill_tasks (line 5483) | def _kill_tasks(self, tasks_file):
    method _delete_cgroup_children (line 5526) | def _delete_cgroup_children(self, path):
    method _remove_cgroup (line 5556) | def _remove_cgroup(self, path, jobid=None):
    method cleanup_hook_data (line 5612) | def cleanup_hook_data(self, local_jobs=[]):
    method cleanup_env_files (line 5624) | def cleanup_env_files(self, local_jobs=[]):
    method cleanup_orphans (line 5637) | def cleanup_orphans(self, local_jobs):
    method delete (line 5694) | def delete(self, jobid, offline_node=True):
    method read_value (line 5774) | def read_value(self, filename):
    method write_value (line 5788) | def write_value(self, filename, value, mode='w'):
    method _get_cfs_quota_us (line 5822) | def _get_cfs_quota_us(self, jobid=''):
    method _get_mem_failcnt (line 5832) | def _get_mem_failcnt(self, jobid):
    method _get_memsw_failcnt (line 5844) | def _get_memsw_failcnt(self, jobid):
    method _get_hugetlb_failcnt (line 5856) | def _get_hugetlb_failcnt(self, jobid):
    method _get_max_mem_usage (line 5868) | def _get_max_mem_usage(self, jobid):
    method _get_max_memsw_usage (line 5880) | def _get_max_memsw_usage(self, jobid):
    method _get_max_hugetlb_usage (line 5892) | def _get_max_hugetlb_usage(self, jobid):
    method _get_cpu_usage (line 5905) | def _get_cpu_usage(self, jobid):
    method select_cpus (line 5917) | def select_cpus(self, path, ncpus):
    method _get_error_msg (line 5952) | def _get_error_msg(self, jobid):
    method write_job_env_file (line 5992) | def write_job_env_file(self, jobid, env_list):
    method write_cgroup_assigned_resources (line 6012) | def write_cgroup_assigned_resources(self, jobid):
    method read_cgroup_assigned_resources (line 6033) | def read_cgroup_assigned_resources(self, jobid):
    method add_jobid_to_cgroup_jobs (line 6058) | def add_jobid_to_cgroup_jobs(self, jobid):
    method remove_jobid_from_cgroup_jobs (line 6089) | def remove_jobid_from_cgroup_jobs(self, jobid):
    method read_cgroup_jobs (line 6115) | def read_cgroup_jobs(self):
    method delete_cgroup_jobs_file (line 6148) | def delete_cgroup_jobs_file(self, jobid):
    method empty_cgroup_jobs_file (line 6157) | def empty_cgroup_jobs_file(self):
  function set_global_vars (line 6172) | def set_global_vars():
  function missing_str (line 6233) | def missing_str(memspecs):
  function fill_cgswap (line 6301) | def fill_cgswap():
  function main (line 6414) | def main():

FILE: src/iff/iff2.c
  function main (line 76) | int

FILE: src/include/Long.h
  type Long (line 63) | typedef long long Long;
  type u_Long (line 64) | typedef unsigned long long u_Long;
  type Long (line 82) | typedef long long Long;
  type u_Long (line 83) | typedef unsigned long long u_Long;

FILE: src/include/attribute.h
  type svrattrl (line 107) | struct svrattrl {
  type svrattrl (line 121) | typedef struct svrattrl svrattrl;
  type size_value (line 139) | struct size_value {
  type attr_entity (line 148) | struct attr_entity {
  type attrval_t (line 158) | typedef union attrval attrval_t;
  type attr_type (line 160) | enum attr_type {
  type array_strings (line 171) | struct array_strings
  type size_value (line 172) | struct size_value
  type pbsnode (line 174) | struct pbsnode
  type attr_entity (line 177) | struct attr_entity
  type attribute (line 180) | struct attribute {
  type attribute (line 187) | typedef struct attribute attribute;
  type attribute_def (line 196) | struct attribute_def {
  type attribute_def (line 208) | typedef struct attribute_def attribute_def;
  type ecl_attribute_def (line 216) | struct ecl_attribute_def {
  type ecl_attribute_def (line 225) | typedef struct ecl_attribute_def ecl_attribute_def;
  type array_strings (line 297) | struct array_strings {
  type attrl (line 309) | struct attrl
  type attropl (line 309) | struct attropl
  type attrl (line 310) | struct attrl
  type attrl (line 311) | struct attrl
  type attrl (line 311) | struct attrl
  type attrl (line 312) | struct attrl
  type attrl (line 312) | struct attrl
  type attrl (line 313) | struct attrl
  type attrl (line 314) | struct attrl
  type attrl (line 337) | struct attrl
  type batch_op (line 414) | enum batch_op
  type batch_op (line 415) | enum batch_op
  type batch_op (line 416) | enum batch_op
  type batch_op (line 417) | enum batch_op
  type batch_op (line 418) | enum batch_op
  type batch_op (line 419) | enum batch_op
  type batch_op (line 420) | enum batch_op
  type batch_op (line 421) | enum batch_op
  type batch_op (line 422) | enum batch_op
  type batch_op (line 423) | enum batch_op
  type batch_op (line 424) | enum batch_op
  type batch_op (line 425) | enum batch_op
  type batch_op (line 426) | enum batch_op
  type batch_op (line 427) | enum batch_op
  type batch_op (line 428) | enum batch_op
  type batch_op (line 429) | enum batch_op
  type batch_op (line 430) | enum batch_op
  type size_value (line 440) | struct size_value
  type array_strings (line 476) | struct array_strings
  type batch_op (line 501) | enum batch_op
  type batch_op (line 502) | enum batch_op
  type batch_op (line 503) | enum batch_op
  type batch_op (line 504) | enum batch_op
  type batch_op (line 505) | enum batch_op
  type svrattrl (line 521) | struct svrattrl
  type batch_op (line 572) | enum batch_op
  type batch_op (line 575) | enum batch_op
  type batch_op (line 593) | enum batch_op
  type attrl (line 608) | struct attrl
  type attrl (line 609) | struct attrl
  type batch_op (line 615) | enum batch_op
  type batch_op (line 616) | enum batch_op
  type batch_op (line 617) | enum batch_op
  type batch_op (line 618) | enum batch_op
  type batch_op (line 619) | enum batch_op
  type batch_op (line 620) | enum batch_op
  type batch_op (line 621) | enum batch_op
  type array_strings (line 631) | struct array_strings

FILE: src/include/auth.h
  type AUTH_CTX_STATUS (line 60) | enum AUTH_CTX_STATUS {
  type auth_def_t (line 66) | typedef struct auth_def auth_def_t;
  type auth_def (line 67) | struct auth_def {
  type AUTH_MSG_TYPES (line 115) | enum AUTH_MSG_TYPES {
  type INTERACTIVE_AUTH_STATUS (line 135) | enum INTERACTIVE_AUTH_STATUS {
  type sockaddr_in (line 140) | struct sockaddr_in

FILE: src/include/avltree.h
  type rectype (line 58) | typedef struct {
  type rectype (line 65) | typedef rectype AVL_IX_REC;
  type AVL_IX_DESC (line 67) | typedef struct {

FILE: src/include/basil.h
  type basil_version_t (line 406) | typedef enum {
  type basil_method_t (line 426) | typedef enum {
  type basil_query_t (line 435) | typedef enum {
  type basil_node_arch_t (line 446) | typedef enum {
  type basil_node_state_t (line 453) | typedef enum {
  type basil_node_role_t (line 464) | typedef enum {
  type basil_accel_t (line 471) | typedef enum {
  type basil_accel_state_t (line 476) | typedef enum {
  type basil_processor_arch_t (line 483) | typedef enum {
  type basil_memory_type_t (line 491) | typedef enum {
  type basil_label_type_t (line 498) | typedef enum {
  type basil_label_disposition_t (line 504) | typedef enum {
  type basil_component_state_t (line 510) | typedef enum {
  type basil_rsvn_mode_t (line 516) | typedef enum {
  type basil_gpc_mode_t (line 522) | typedef enum {
  type basil_application_status_t (line 529) | typedef enum {
  type basil_reservation_status_t (line 538) | typedef enum {
  type basil_switch_action_t (line 549) | typedef enum {
  type basil_switch_status_t (line 556) | typedef enum {
  type basil_label_t (line 566) | typedef struct basil_label {
  type basil_label_t (line 573) | typedef basil_label_t basil_label_param_t;
  type basil_accelerator_gpu_t (line 575) | typedef struct basil_accelerator_gpu {
  type basil_accelerator_param_t (line 583) | typedef struct basil_accelerator_param {
  type basil_memory_param_t (line 592) | typedef struct basil_memory_param {
  type basil_nodelist_param_t (line 598) | typedef struct basil_nodelist_param {
  type basil_reserve_param_t (line 603) | typedef struct basil_reserve_param {
  type basil_request_reserve_t (line 624) | typedef struct basil_request_reserve {
  type basil_request_confirm_t (line 632) | typedef struct basil_request_confirm {
  type basil_request_release_t (line 638) | typedef struct basil_request_release {
  type basil_request_query_inventory_t (line 643) | typedef struct basil_request_query_inventory {
  type basil_request_query_status_app_t (line 649) | typedef struct basil_request_query_status_app {
  type basil_request_query_status_res_t (line 654) | typedef struct basil_request_query_status_res {
  type basil_request_query_status_t (line 659) | typedef struct basil_request_query_status {
  type basil_request_query_system_t (line 670) | typedef struct basil_request_query_system {
  type basil_topology_filter_t (line 674) | typedef struct basil_topology_filter {
  type basil_request_query_topology_t (line 679) | typedef struct basil_request_query_topology {
  type basil_request_query_t (line 684) | typedef struct basil_request_query {
  type basil_request_switch_app_t (line 694) | typedef struct basil_request_switch_app {
  type basil_request_switch_res_t (line 700) | typedef struct basil_request_switch_res {
  type basil_request_switch_t (line 706) | typedef struct basil_request_switch {
  type basil_request_t (line 711) | typedef struct basil_request {
  type basil_rsvn_application_cmd_t (line 725) | typedef struct basil_rsvn_application_cmd {
  type basil_rsvn_application_t (line 735) | typedef struct basil_rsvn_application {
  type basil_rsvn_t (line 744) | typedef struct basil_rsvn {
  type basil_memory_allocation_t (line 756) | typedef struct basil_memory_allocation {
  type basil_node_memory_t (line 762) | typedef struct basil_node_memory {
  type basil_node_computeunit_t (line 770) | typedef struct basil_node_computeunit {
  type basil_processor_allocation_t (line 776) | typedef struct basil_processor_allocation {
  type basil_node_processor_t (line 781) | typedef struct basil_node_processor {
  type basil_node_segment_t (line 789) | typedef struct basil_node_segment {
  type basil_node_socket_t (line 798) | typedef struct basil_node_socket {
  type basil_accelerator_allocation_t (line 806) | typedef struct basil_accelerator_allocation {
  type basil_node_accelerator_t (line 811) | typedef struct basil_node_accelerator {
  type basil_node_t (line 821) | typedef struct basil_node {
  type basil_response_query_inventory_t (line 836) | typedef struct basil_response_query_inventory {
  type basil_response_query_engine_t (line 848) | typedef struct basil_response_query_engine {
  type basil_response_query_network_t (line 854) | typedef struct basil_response_query_network {
  type basil_response_query_status_app_t (line 857) | typedef struct basil_response_query_status_app {
  type basil_response_query_status_res_t (line 863) | typedef struct basil_response_query_status_res {
  type basil_response_query_status_t (line 869) | typedef struct basil_response_query_status {
  type basil_system_element_t (line 879) | typedef struct basil_system_element {
  type basil_response_query_system_t (line 898) | typedef struct basil_response_query_system {
  type basil_response_query_topology_t (line 905) | typedef struct basil_response_query_topology {
  type basil_response_query_t (line 910) | typedef struct basil_response_query {
  type basil_response_reserve_t (line 922) | typedef struct basil_response_reserve {
  type basil_response_confirm_t (line 931) | typedef struct basil_response_confirm {
  type basil_response_release_t (line 936) | typedef struct basil_response_release {
  type basil_response_switch_app_t (line 941) | typedef struct basil_response_switch_app {
  type basil_response_switch_res_t (line 947) | typedef struct basil_response_switch_res {
  type basil_response_switch_t (line 953) | typedef struct basil_response_switch {
  type basil_response_t (line 958) | typedef struct basil_response {

FILE: src/include/batch_request.h
  type rq_queuejob (line 55) | struct rq_queuejob {
  type rq_postqueuejob (line 62) | struct rq_postqueuejob {
  type rq_jobcred (line 70) | struct rq_jobcred {
  type rq_usercred (line 77) | struct rq_usercred {
  type rq_jobfile (line 85) | struct rq_jobfile {
  type rq_hookfile (line 94) | struct rq_hookfile {
  type rq_manage (line 107) | struct rq_manage {
  type rq_deletejoblist (line 115) | struct rq_deletejoblist {
  type rq_management (line 125) | struct rq_management {
  type rq_modifyvnode (line 132) | struct rq_modifyvnode {
  type rq_hold (line 138) | struct rq_hold {
  type rq_message (line 144) | struct rq_message {
  type rq_relnodes (line 151) | struct rq_relnodes {
  type rq_py_spawn (line 157) | struct rq_py_spawn {
  type rq_move (line 164) | struct rq_move {
  type rq_rescq (line 170) | struct rq_rescq {
  type rq_runjob (line 177) | struct rq_runjob {
  type rq_jobobit (line 184) | struct rq_jobobit {
  type rq_signal (line 191) | struct rq_signal {
  type rq_status (line 197) | struct rq_status {
  type rq_selstat (line 203) | struct rq_selstat {
  type rq_track (line 209) | struct rq_track {
  type rq_register (line 217) | struct rq_register {
  type rq_auth (line 228) | struct rq_auth {
  type rq_defschrpy (line 235) | struct rq_defschrpy {
  type rq_cpyfile (line 254) | struct rq_cpyfile {
  type rq_cpyfile_cred (line 263) | struct rq_cpyfile_cred {
  type rq_cred (line 270) | struct rq_cred {
  type rqfpair (line 279) | struct rqfpair {
  type rq_register_sched (line 286) | struct rq_register_sched {
  type batch_request (line 294) | struct batch_request {
  type batch_request (line 358) | struct batch_request
  type batch_request (line 359) | struct batch_request
  type batch_request (line 359) | struct batch_request
  type batch_request (line 360) | struct batch_request
  type batch_request (line 361) | struct batch_request
  type batch_request (line 362) | struct batch_request
  type batch_request (line 363) | struct batch_request
  type batch_request (line 364) | struct batch_request
  type batch_request (line 365) | struct batch_request
  type batch_request (line 366) | struct batch_request
  type batch_request (line 367) | struct batch_request
  type batch_request (line 368) | struct batch_request
  type batch_request (line 369) | struct batch_request
  type batch_reply (line 370) | struct batch_reply
  type batch_request (line 371) | struct batch_request
  type batch_request (line 372) | struct batch_request
  type batch_request (line 373) | struct batch_request
  type batch_request (line 374) | struct batch_request
  type batch_request (line 375) | struct batch_request
  type batch_request (line 376) | struct batch_request
  type batch_request (line 377) | struct batch_request
  type batch_request (line 381) | struct batch_request
  type batch_request (line 385) | struct batch_request
  type batch_request (line 386) | struct batch_request
  type batch_request (line 387) | struct batch_request
  type batch_request (line 388) | struct batch_request
  type batch_request (line 389) | struct batch_request
  type batch_request (line 390) | struct batch_request
  type batch_request (line 391) | struct batch_request
  type batch_request (line 392) | struct batch_request
  type batch_request (line 393) | struct batch_request
  type batch_request (line 394) | struct batch_request
  type batch_request (line 395) | struct batch_request
  type batch_request (line 396) | struct batch_request
  type batch_request (line 397) | struct batch_request
  type batch_request (line 398) | struct batch_request
  type batch_request (line 399) | struct batch_request
  type batch_request (line 400) | struct batch_request
  type batch_request (line 401) | struct batch_request
  type batch_request (line 403) | struct batch_request
  type batch_request (line 404) | struct batch_request
  type batch_request (line 405) | struct batch_request
  type batch_request (line 406) | struct batch_request
  type batch_request (line 408) | struct batch_request
  type batch_request (line 413) | struct batch_request
  type batch_request (line 414) | struct batch_request
  type batch_request (line 415) | struct batch_request
  type batch_request (line 416) | struct batch_request
  type batch_request (line 417) | struct batch_request
  type batch_request (line 418) | struct batch_request
  type batch_request (line 419) | struct batch_request
  type batch_request (line 420) | struct batch_request
  type batch_request (line 421) | struct batch_request
  type batch_request (line 422) | struct batch_request
  type batch_request (line 423) | struct batch_request
  type batch_request (line 424) | struct batch_request
  type batch_request (line 425) | struct batch_request
  type batch_request (line 426) | struct batch_request
  type batch_request (line 427) | struct batch_request
  type batch_request (line 428) | struct batch_request
  type batch_request (line 429) | struct batch_request
  type batch_request (line 430) | struct batch_request
  type batch_request (line 431) | struct batch_request
  type batch_request (line 432) | struct batch_request
  type batch_request (line 433) | struct batch_request
  type batch_request (line 434) | struct batch_request
  type batch_request (line 435) | struct batch_request
  type batch_request (line 436) | struct batch_request
  type batch_request (line 437) | struct batch_request
  type batch_request (line 438) | struct batch_request
  type batch_reply (line 439) | struct batch_reply
  type batch_request (line 441) | struct batch_request
  type batch_request (line 442) | struct batch_request
  type batch_request (line 443) | struct batch_request
  type batch_request (line 444) | struct batch_request
  type batch_request (line 445) | struct batch_request
  type batch_request (line 446) | struct batch_request
  type batch_reply (line 447) | struct batch_reply
  type batch_reply (line 448) | struct batch_reply
  type batch_request (line 451) | struct batch_request
  type batch_reply (line 452) | struct batch_reply
  type batch_request (line 453) | struct batch_request

FILE: src/include/bitfield.h
  type Bitfield (line 136) | typedef struct bitfield {
  function INLINE (line 202) | INLINE int
  function INLINE (line 213) | INLINE int
  function INLINE (line 224) | INLINE int
  function INLINE (line 235) | INLINE int
  function INLINE (line 250) | INLINE int
  function INLINE (line 279) | INLINE int
  function INLINE (line 308) | INLINE int
  function INLINE (line 319) | INLINE int
  function INLINE (line 332) | INLINE int
  function INLINE (line 342) | INLINE int
  function INLINE (line 352) | INLINE int
  function INLINE (line 362) | INLINE int
  function INLINE (line 373) | INLINE int
  function INLINE (line 384) | INLINE int
  function INLINE (line 394) | INLINE int
  function INLINE (line 404) | INLINE int
  function INLINE (line 416) | INLINE int
  function INLINE (line 431) | INLINE int

FILE: src/include/cmds.h
  type svr_jobid_list_t (line 66) | typedef struct svr_jobid_list svr_jobid_list_t;
  type svr_jobid_list (line 67) | struct svr_jobid_list {
  type batch_status (line 105) | struct batch_status
  type attrl (line 106) | struct attrl
  type attrl (line 107) | struct attrl

FILE: src/include/dedup_jobids.h
  type array_job_range_list (line 43) | struct array_job_range_list {
  type array_job_range_list (line 47) | typedef struct array_job_range_list array_job_range_list;

FILE: src/include/dis.h
  type dis_long_double_t (line 137) | typedef double dis_long_double_t;
  type dis_long_double_t (line 139) | typedef long double dis_long_double_t;
  type pbs_dis_buf_t (line 210) | typedef struct pbs_dis_buf {
  type pbs_tcp_auth_data_t (line 217) | typedef struct pbs_tcp_auth_data {
  type pbs_tcp_chan_t (line 223) | typedef struct pbs_tcp_chan {

FILE: src/include/grunt.h
  type key_value_pair (line 46) | typedef struct key_value_pair {
  type resc_sum (line 55) | struct resc_sum
  type key_value_pair (line 56) | struct key_value_pair
  type key_value_pair (line 57) | struct key_value_pair
  type key_value_pair (line 58) | struct key_value_pair
  type key_value_pair (line 59) | struct key_value_pair
  type key_value_pair (line 60) | struct key_value_pair
  type key_value_pair (line 61) | struct key_value_pair

FILE: src/include/hook.h
  type hook_type (line 65) | enum hook_type {
  type hook_type (line 69) | typedef enum hook_type hook_type;
  type hook_user (line 71) | enum hook_user {
  type hook_user (line 75) | typedef enum hook_user hook_user;
  type hook (line 118) | struct hook {
  type hook (line 171) | typedef struct hook hook;
  type python_script (line 376) | struct python_script
  type python_script (line 377) | struct python_script
  type python_script (line 380) | struct python_script
  type python_script (line 381) | struct python_script
  type work_task (line 403) | struct work_task

FILE: src/include/hook_func.h
  type mom_hook_action (line 71) | struct mom_hook_action {
  type sync_hookfiles_result (line 80) | enum sync_hookfiles_result {
  type mom_hook_action_t (line 87) | typedef struct mom_hook_action mom_hook_action_t;
  type batch_request (line 122) | struct batch_request
  type batch_request (line 123) | struct batch_request
  type batch_request (line 124) | struct batch_request
  type batch_request (line 125) | struct batch_request
  type batch_request (line 126) | struct batch_request
  type batch_request (line 127) | struct batch_request
  type batch_request (line 128) | struct batch_request
  type batch_request (line 129) | struct batch_request
  type batch_request (line 136) | struct batch_request
  type batch_request (line 137) | struct batch_request
  type work_task (line 140) | struct work_task

FILE: src/include/ifl_internal.h
  type attrl (line 59) | struct attrl
  type attrl (line 61) | struct attrl
  type batch_deljob_status (line 73) | struct batch_deljob_status
  type attropl (line 85) | struct attropl
  type attropl (line 99) | struct attropl
  type batch_status (line 103) | struct batch_status
  type batch_deljob_status (line 105) | struct batch_deljob_status
  type batch_status (line 107) | struct batch_status
  type attrl (line 107) | struct attrl
  type batch_status (line 109) | struct batch_status
  type attrl (line 109) | struct attrl
  type batch_status (line 111) | struct batch_status
  type attropl (line 111) | struct attropl
  type attrl (line 111) | struct attrl
  type batch_status (line 113) | struct batch_status
  type attrl (line 113) | struct attrl
  type batch_status (line 115) | struct batch_status
  type attrl (line 115) | struct attrl
  type batch_status (line 117) | struct batch_status
  type attrl (line 117) | struct attrl
  type batch_status (line 119) | struct batch_status
  type attrl (line 119) | struct attrl
  type batch_status (line 121) | struct batch_status
  type attrl (line 121) | struct attrl
  type batch_status (line 123) | struct batch_status
  type attrl (line 123) | struct attrl
  type batch_status (line 125) | struct batch_status
  type attrl (line 125) | struct attrl
  type batch_status (line 127) | struct batch_status
  type attrl (line 127) | struct attrl
  type ecl_attribute_errors (line 129) | struct ecl_attribute_errors
  type attropl (line 131) | struct attropl
  type attropl (line 133) | struct attropl
  type attropl (line 135) | struct attropl

FILE: src/include/job.h
  type var_table (line 70) | struct var_table {
  type depend (line 89) | struct depend {
  type depend_job (line 104) | struct depend_job {
  type badplace (line 139) | typedef struct badplace {
  type grpcache (line 151) | struct grpcache {
  type PBS_Chkpt_By (line 193) | enum PBS_Chkpt_By {
  type string_and_number_t (line 199) | typedef struct string_and_number_t {
  type resc_limit_t (line 204) | typedef struct resc_limit {		   /* per node limits for Mom	*/
  type histjob_type (line 229) | typedef enum histjob_type {
  type host_vlist_t (line 255) | typedef struct host_vlist {
  type hnodent (line 265) | typedef struct hnodent {
  type vmpiprocs (line 280) | typedef struct vmpiprocs {
  type PBS_NodeRes_Status (line 299) | enum PBS_NodeRes_Status {
  type noderes (line 308) | typedef struct noderes {
  type ajinfo_t (line 340) | typedef struct ajinfo {
  type jbdscrd (line 357) | struct jbdscrd {
  type block_job_reply (line 370) | struct block_job_reply {
  type bg_hook_request (line 407) | enum bg_hook_request {
  type job (line 418) | struct job {
  type job (line 611) | typedef struct job job;
  type pbs_task (line 618) | typedef struct pbs_task {
  type eventent (line 654) | typedef struct eventent {
  type obitent (line 678) | typedef struct obitent {
  type infoent (line 696) | typedef struct infoent {
  type depend (line 987) | struct depend
  type depend_job (line 988) | struct depend_job
  type depend (line 988) | struct depend
  type depend_job (line 989) | struct depend_job
  type work_task (line 989) | struct work_task
  type work_task (line 990) | struct work_task
  type batch_request (line 1005) | struct batch_request
  type array_strings (line 1031) | struct array_strings
  type batch_op (line 1040) | enum batch_op
  type batch_op (line 1041) | enum batch_op
  type batch_op (line 1042) | enum batch_op
  type batch_op (line 1043) | enum batch_op
  type batch_op (line 1044) | enum batch_op
  type batch_request (line 1083) | struct batch_request
  type batch_request (line 1084) | struct batch_request
  type batch_request (line 1085) | struct batch_request
  type batch_request (line 1086) | struct batch_request
  type batch_request (line 1087) | struct batch_request
  type batch_request (line 1087) | struct batch_request
  type job_atr (line 1087) | enum job_atr
  type batch_request (line 1090) | struct batch_request
  type work_task (line 1102) | struct work_task
  type work_task (line 1103) | struct work_task
  type work_task (line 1104) | struct work_task
  type batch_op (line 1108) | enum batch_op
  type batch_request (line 1128) | struct batch_request
  type batch_request (line 1128) | struct batch_request
  type job_atr (line 1128) | enum job_atr
  type batch_request (line 1129) | struct batch_request
  type batch_request (line 1129) | struct batch_request
  type job_atr (line 1129) | enum job_atr

FILE: src/include/libauth.h
  type AUTH_ROLE (line 52) | enum AUTH_ROLE {
  type AUTH_CONN_TYPE (line 66) | enum AUTH_CONN_TYPE {
  type pbs_auth_config_t (line 73) | typedef struct pbs_auth_config {

FILE: src/include/libpbs.h
  type job_file (line 79) | enum job_file {
  type pbs_conn_t (line 122) | typedef struct pbs_conn {
  type brp_select (line 147) | struct brp_select {
  type brp_status (line 153) | struct brp_status {
  type brp_rescq (line 161) | struct brp_rescq {
  type rq_preempt (line 169) | struct rq_preempt {
  type brp_preempt_jobs (line 174) | typedef struct rq_preempt brp_preempt_jobs;
  type batch_reply (line 191) | struct batch_reply {
  type attropl (line 324) | struct attropl
  type attropl (line 332) | struct attropl
  type attropl (line 333) | struct attropl
  type job_file (line 338) | enum job_file
  type attrl (line 339) | struct attrl
  type attropl (line 340) | struct attropl
  type attrl (line 340) | struct attrl
  type batch_reply (line 342) | struct batch_reply
  type batch_reply (line 343) | struct batch_reply
  type batch_reply (line 344) | struct batch_reply
  type batch_status (line 345) | struct batch_status
  type attrl (line 345) | struct attrl
  type batch_status (line 346) | struct batch_status
  type attropl (line 347) | struct attropl
  type attrl (line 349) | struct attrl
  type batch_reply (line 351) | struct batch_reply
  type attropl (line 356) | struct attropl
  type attropl (line 359) | struct attropl
  type attropl (line 362) | struct attropl
  type attropl (line 363) | struct attropl
  type attrl (line 369) | struct attrl
  type attrl (line 370) | struct attrl
  type attropl (line 371) | struct attropl
  type attropl (line 375) | struct attropl
  type batch_reply (line 376) | struct batch_reply
  type attropl (line 378) | struct attropl
  type batch_status (line 384) | struct batch_status

FILE: src/include/libutil.h
  type dictionary (line 93) | typedef struct dict {
  type word (line 102) | struct word {
  type map (line 110) | struct map {
  type vnode_sharing (line 175) | enum vnode_sharing {
  type vnode_sharing (line 189) | enum vnode_sharing
  type vnode_sharing (line 193) | enum vnode_sharing
  type preempt_ordering (line 323) | struct preempt_ordering
  type preempt_ordering (line 323) | struct preempt_ordering
  type sockaddr_in (line 346) | struct sockaddr_in
  type in_addr (line 349) | struct in_addr

FILE: src/include/list_link.h
  type pbs_list_link (line 57) | typedef struct pbs_list_link {
  type pbs_list_link (line 62) | typedef pbs_list_link pbs_list_head;

FILE: src/include/log.h
  type log_net_info (line 117) | struct log_net_info { /* interface info for logging */
  type log_net_info (line 134) | struct log_net_info
  type log_net_info (line 135) | struct log_net_info
  type stat (line 145) | struct stat

FILE: src/include/mom_func.h
  type sig_tbl (line 58) | struct sig_tbl {
  type cphosts (line 67) | struct cphosts {
  type cphosts (line 77) | struct cphosts
  type Action_Event (line 105) | enum Action_Event {		     /* enum should start with zero	*/
  type Action_Verb (line 114) | enum Action_Verb {
  type mom_action (line 120) | struct mom_action {
  type hup_action (line 131) | enum hup_action {
  type hup_action (line 140) | enum hup_action
  type batch_request (line 169) | struct batch_request
  type batch_request (line 174) | struct batch_request
  type batch_request (line 175) | struct batch_request
  type batch_request (line 176) | struct batch_request
  type batch_request (line 177) | struct batch_request
  type handler_ret_t (line 184) | typedef enum {
  type Action_Verb (line 201) | enum Action_Verb
  type Action_Event (line 201) | enum Action_Event
  type passwd (line 204) | struct passwd
  type passwd (line 205) | struct passwd
  type pre_finish_results_t (line 235) | typedef enum {
  type job_file (line 244) | enum job_file
  type job_file (line 245) | enum job_file
  type job_file (line 251) | enum job_file
  type job (line 258) | struct job
  type batch_request (line 281) | struct batch_request
  type cpy_files (line 287) | struct cpy_files {
  type cpy_files (line 298) | typedef struct cpy_files cpy_files;
  type stagefile_errcode (line 301) | enum stagefile_errcode {
  type copy_info (line 309) | struct copy_info {
  type copy_info (line 317) | typedef struct copy_info copy_info;
  type work_task (line 321) | struct work_task
  type rqfpair (line 335) | struct rqfpair
  type cphosts (line 340) | struct cphosts
  type rq_cpyfile (line 341) | struct rq_cpyfile
  type rq_cpyfile (line 343) | struct rq_cpyfile
  type var_table (line 347) | struct var_table
  type var_table (line 354) | struct var_table
  type var_table (line 355) | struct var_table
  type var_table (line 356) | struct var_table
  type pfwdsock (line 390) | struct pfwdsock

FILE: src/include/mom_hook_func.h
  type hook_job_action (line 62) | struct hook_job_action {
  type hook_vnl_action (line 72) | struct hook_vnl_action {
  type mom_hook_input_t (line 111) | typedef struct mom_hook_input {
  type mom_hook_output_t (line 155) | typedef struct mom_hook_output {
  type mom_process_hooks_params_t (line 172) | typedef struct mom_process_hooks_params {
  type work_task (line 190) | struct work_task
  type python_script (line 191) | struct python_script
  type python_script (line 192) | struct python_script
  type hook_job_action (line 199) | struct hook_job_action
  type hook_user (line 201) | enum hook_user

FILE: src/include/mom_server.h
  type ruu (line 57) | typedef struct resc_used_update ruu;
  type resc_used_update (line 58) | struct resc_used_update {

FILE: src/include/net_connect.h
  type pbs_net_t (line 54) | typedef unsigned long pbs_net_t;
  type conn_t (line 156) | typedef struct connection conn_t;
  type conn_type (line 157) | enum conn_type {
  type conn_origin_t (line 171) | typedef enum conn_origin {
  type conn_type (line 180) | enum conn_type
  type connection (line 209) | struct connection {

FILE: src/include/pbs_array_list.h
  type T (line 69) | typedef long unsigned int T;
  type PBS_IP_RANGE (line 76) | typedef struct pbs_ip_range {
  type PBS_IP_RANGE (line 81) | typedef PBS_IP_RANGE *pntPBS_IP_RANGE;
  type PBS_IP_LIST (line 88) | typedef struct pbs_ip_list {
  type PBS_IP_LIST (line 94) | typedef PBS_IP_LIST *pntPBS_IP_LIST;

FILE: src/include/pbs_client_thread.h
  type pbs_client_thread_connect_context (line 74) | struct pbs_client_thread_connect_context {
  type pbs_client_thread_context (line 94) | struct pbs_client_thread_context {
  type pbs_client_thread_context (line 121) | struct pbs_client_thread_context
  type pbs_client_thread_connect_context (line 153) | struct pbs_client_thread_connect_context
  type pbs_client_thread_connect_context (line 156) | struct pbs_client_thread_connect_context
  type ecl_attribute_errors (line 158) | struct ecl_attribute_errors

FILE: src/include/pbs_db.h
  type SMALLINT (line 87) | typedef short SMALLINT;
  type INTEGER (line 88) | typedef int INTEGER;
  type BIGINT (line 89) | typedef long long BIGINT;
  type pbs_db_attr_list (line 92) | struct pbs_db_attr_list {
  type pbs_db_attr_list_t (line 97) | typedef struct pbs_db_attr_list pbs_db_attr_list_t;
  type pbs_db_svr_info (line 104) | struct pbs_db_svr_info {
  type pbs_db_svr_info_t (line 108) | typedef struct pbs_db_svr_info pbs_db_svr_info_t;
  type pbs_db_sched_info (line 115) | struct pbs_db_sched_info {
  type pbs_db_sched_info_t (line 119) | typedef struct pbs_db_sched_info pbs_db_sched_info_t;
  type pbs_db_que_info (line 126) | struct pbs_db_que_info {
  type pbs_db_que_info_t (line 131) | typedef struct pbs_db_que_info pbs_db_que_info_t;
  type pbs_db_node_info (line 138) | struct pbs_db_node_info {
  type pbs_db_node_info_t (line 148) | typedef struct pbs_db_node_info pbs_db_node_info_t;
  type pbs_db_mominfo_time (line 155) | struct pbs_db_mominfo_time {
  type pbs_db_mominfo_time_t (line 159) | typedef struct pbs_db_mominfo_time pbs_db_mominfo_time_t;
  type pbs_db_job_info (line 166) | struct pbs_db_job_info {
  type pbs_db_job_info_t (line 185) | typedef struct pbs_db_job_info pbs_db_job_info_t;
  type pbs_db_jobscr_info (line 192) | struct pbs_db_jobscr_info {
  type pbs_db_jobscr_info_t (line 196) | typedef struct pbs_db_jobscr_info pbs_db_jobscr_info_t;
  type pbs_db_resv_info (line 203) | struct pbs_db_resv_info {
  type pbs_db_resv_info_t (line 215) | typedef struct pbs_db_resv_info pbs_db_resv_info_t;
  type pbs_db_query_options (line 227) | struct pbs_db_query_options {
  type pbs_db_query_options_t (line 231) | typedef struct pbs_db_query_options pbs_db_query_options_t;
  type pbs_db_obj_info (line 275) | struct pbs_db_obj_info {
  type pbs_db_obj_info_t (line 288) | typedef struct pbs_db_obj_info pbs_db_obj_info_t;

FILE: src/include/pbs_ecl.h
  type attropl (line 73) | struct attropl
  type attropl (line 80) | struct attropl
  type attropl (line 81) | struct attropl
  type ecl_attribute_errors (line 81) | struct ecl_attribute_errors
  type ecl_attribute_errors (line 84) | struct ecl_attribute_errors
  type attropl (line 88) | struct attropl
  type attropl (line 89) | struct attropl
  type attropl (line 90) | struct attropl
  type attropl (line 91) | struct attropl
  type attropl (line 92) | struct attropl
  type attropl (line 93) | struct attropl
  type attropl (line 94) | struct attropl
  type attropl (line 95) | struct attropl
  type attropl (line 96) | struct attropl
  type attropl (line 99) | struct attropl
  type attropl (line 100) | struct attropl
  type attropl (line 101) | struct attropl
  type attropl (line 102) | struct attropl
  type attropl (line 103) | struct attropl
  type attropl (line 104) | struct attropl
  type attropl (line 105) | struct attropl
  type attropl (line 106) | struct attropl
  type attropl (line 107) | struct attropl
  type attropl (line 108) | struct attropl
  type attropl (line 109) | struct attropl
  type attropl (line 110) | struct attropl
  type attropl (line 111) | struct attropl
  type attropl (line 112) | struct attropl
  type attropl (line 113) | struct attropl
  type attropl (line 114) | struct attropl
  type attropl (line 115) | struct attropl
  type attropl (line 116) | struct attropl
  type attropl (line 117) | struct attropl
  type attropl (line 118) | struct attropl
  type attropl (line 119) | struct attropl
  type attropl (line 120) | struct attropl
  type attropl (line 121) | struct attropl
  type attropl (line 122) | struct attropl
  type attropl (line 123) | struct attropl
  type attropl (line 124) | struct attropl
  type attropl (line 126) | struct attropl
  type attropl (line 127) | struct attropl
  type attropl (line 128) | struct attropl
  type attropl (line 130) | struct attropl
  type attropl (line 131) | struct attropl
  type attropl (line 132) | struct attropl
  type attropl (line 133) | struct attropl
  type attropl (line 134) | struct attropl
  type attropl (line 135) | struct attropl
  type attropl (line 136) | struct attropl

FILE: src/include/pbs_entlim.h
  type lim_keytypes (line 54) | enum lim_keytypes {
  type lim_keytypes (line 105) | enum lim_keytypes
  type lim_keytypes (line 108) | enum lim_keytypes
  type lim_keytypes (line 109) | enum lim_keytypes

FILE: src/include/pbs_error.h
  type pbs_err_to_txt (line 294) | struct pbs_err_to_txt {

FILE: src/include/pbs_ifl.h
  type mgr_cmd (line 419) | enum mgr_cmd {
  type mgr_obj (line 434) | enum mgr_obj {
  type batch_op (line 495) | enum batch_op { SET,
  type attrl (line 525) | struct attrl {
  type attropl (line 533) | struct attropl {
  type batch_status (line 541) | struct batch_status {
  type batch_deljob_status (line 548) | struct batch_deljob_status {
  type ecl_attrerr (line 557) | struct ecl_attrerr {
  type ecl_attribute_errors (line 564) | struct ecl_attribute_errors {
  type preempt_method (line 569) | enum preempt_method {
  type preempt_job_info (line 578) | typedef struct preempt_job_info {
  type pbs_resource_t (line 584) | typedef int pbs_resource_t;
  type resv_states (line 589) | enum resv_states { RESV_NONE,
  type attrl (line 629) | struct attrl
  type attropl (line 649) | struct attropl
  type attropl (line 665) | struct attropl
  type batch_status (line 669) | struct batch_status
  type attrl (line 671) | struct attrl
  type attrl (line 673) | struct attrl
  type attropl (line 675) | struct attropl
  type attrl (line 675) | struct attrl
  type attrl (line 677) | struct attrl
  type attrl (line 679) | struct attrl
  type attrl (line 681) | struct attrl
  type attrl (line 683) | struct attrl
  type attrl (line 685) | struct attrl
  type attrl (line 687) | struct attrl
  type attrl (line 689) | struct attrl
  type attrl (line 691) | struct attrl
  type attropl (line 695) | struct attropl
  type attropl (line 697) | struct attropl
  type attropl (line 703) | struct attropl
  type attrl (line 725) | struct attrl
  type attrl (line 727) | struct attrl
  type attropl (line 737) | struct attropl
  type batch_deljob_status (line 743) | struct batch_deljob_status
  type attropl (line 767) | struct attropl
  type batch_status (line 771) | struct batch_status
  type batch_deljob_status (line 773) | struct batch_deljob_status
  type batch_status (line 775) | struct batch_status
  type attrl (line 775) | struct attrl
  type batch_status (line 777) | struct batch_status
  type attrl (line 777) | struct attrl
  type batch_status (line 779) | struct batch_status
  type attropl (line 779) | struct attropl
  type attrl (line 779) | struct attrl
  type batch_status (line 781) | struct batch_status
  type attrl (line 781) | struct attrl
  type batch_status (line 783) | struct batch_status
  type attrl (line 783) | struct attrl
  type batch_status (line 785) | struct batch_status
  type attrl (line 785) | struct attrl
  type batch_status (line 787) | struct batch_status
  type attrl (line 787) | struct attrl
  type batch_status (line 789) | struct batch_status
  type attrl (line 789) | struct attrl
  type batch_status (line 791) | struct batch_status
  type attrl (line 791) | struct attrl
  type batch_status (line 793) | struct batch_status
  type attrl (line 793) | struct attrl
  type batch_status (line 795) | struct batch_status
  type attrl (line 795) | struct attrl
  type ecl_attribute_errors (line 797) | struct ecl_attribute_errors
  type attropl (line 799) | struct attropl
  type attropl (line 801) | struct attropl
  type attropl (line 807) | struct attropl

FILE: src/include/pbs_internal.h
  type pbs_config (line 197) | struct pbs_config
  type pbs_config (line 263) | struct pbs_config
  type accrue_types (line 353) | enum accrue_types {
  type attropl (line 437) | struct attropl
  type attrl (line 467) | struct attrl
  type attrl (line 468) | struct attrl
  type attrl (line 469) | struct attrl
  type attropl (line 489) | struct attropl
  type vnode_sharing (line 526) | enum vnode_sharing
  type vnode_sharing (line 526) | enum vnode_sharing
  type attrl (line 544) | struct attrl
  type attrl (line 548) | struct attrl
  type attrl (line 549) | struct attrl
  type batch_status (line 558) | struct batch_status
  type batch_status (line 558) | struct batch_status
  type batch_status (line 559) | struct batch_status
  type batch_status (line 559) | struct batch_status
  type batch_status (line 560) | struct batch_status
  type batch_status (line 560) | struct batch_status
  type batch_status (line 561) | struct batch_status
  type attrl (line 566) | struct attrl
  type attrl (line 567) | struct attrl
  type batch_deljob_status (line 573) | struct batch_deljob_status
  type attropl (line 579) | struct attropl
  type attropl (line 586) | struct attropl
  type batch_status (line 588) | struct batch_status
  type batch_deljob_status (line 589) | struct batch_deljob_status
  type batch_status (line 590) | struct batch_status
  type attrl (line 590) | struct attrl
  type batch_status (line 591) | struct batch_status
  type attrl (line 591) | struct attrl
  type batch_status (line 592) | struct batch_status
  type attropl (line 592) | struct attropl
  type attrl (line 592) | struct attrl
  type batch_status (line 593) | struct batch_status
  type attrl (line 593) | struct attrl
  type batch_status (line 594) | struct batch_status
  type attrl (line 594) | struct attrl
  type batch_status (line 595) | struct batch_status
  type attrl (line 595) | struct attrl
  type batch_status (line 596) | struct batch_status
  type attrl (line 596) | struct attrl
  type batch_status (line 597) | struct batch_status
  type attrl (line 597) | struct attrl
  type batch_status (line 598) | struct batch_status
  type attrl (line 598) | struct attrl
  type batch_status (line 599) | struct batch_status
  type attrl (line 599) | struct attrl
  type batch_status (line 600) | struct batch_status
  type attrl (line 600) | struct attrl
  type ecl_attribute_errors (line 601) | struct ecl_attribute_errors
  type attropl (line 602) | struct attropl
  type attropl (line 603) | struct attropl
  type attropl (line 605) | struct attropl

FILE: src/include/pbs_json.h
  type json_data (line 49) | typedef void json_data;

FILE: src/include/pbs_license.h
  type pbs_licensing_control (line 55) | typedef struct {
  type pbs_licenses_high_use (line 65) | typedef struct {
  type pbs_license_counts (line 74) | typedef struct {
  type node_topology_type (line 82) | enum node_topology_type {
  type ntt_t (line 87) | typedef enum node_topology_type ntt_t;
  type work_task (line 101) | struct work_task
  type pbsnode (line 103) | struct pbsnode

FILE: src/include/pbs_mpp.h
  type mpp_node_arch_t (line 53) | typedef enum {
  type mpp_node_state_t (line 68) | typedef enum {
  type mpp_cpu_type_t (line 83) | typedef enum {
  type mpp_cpu_state_t (line 98) | typedef enum {
  type mpp_label_type_t (line 111) | typedef enum {

FILE: src/include/pbs_nodes.h
  type nodeattr (line 65) | enum nodeattr {
  type daemon_info (line 75) | struct daemon_info {
  type dmn_info_t (line 81) | typedef struct daemon_info dmn_info_t;
  type machine_info (line 88) | struct machine_info {
  type mominfo_t (line 97) | typedef struct machine_info mominfo_t;
  type mom_svrinfo (line 104) | struct mom_svrinfo {
  type mom_svrinfo_t (line 123) | typedef struct mom_svrinfo mom_svrinfo_t;
  type vnpool_mom (line 125) | struct vnpool_mom {
  type vnpool_mom_t (line 132) | typedef struct vnpool_mom vnpool_mom_t;
  type vnode_sharing_state (line 136) | enum vnode_sharing_state { isshared = 0,
  type rlplace_value (line 138) | enum rlplace_value { rlplace_unset = 0,
  type vnode_sharing_state (line 142) | enum vnode_sharing_state
  type mom_vnodeinfo (line 148) | struct mom_vnodeinfo {
  type mom_mvic_t (line 163) | typedef struct mvi_cpus mom_mvic_t;
  type mom_vninfo_t (line 164) | typedef struct mom_vnodeinfo mom_vninfo_t;
  type rlplace_value (line 166) | enum rlplace_value
  type mom_vnode_map (line 172) | struct mom_vnode_map {
  type momvmap_t (line 178) | typedef struct mom_vnode_map momvmap_t;
  type mominfo_time (line 181) | struct mominfo_time {
  type mominfo_time_t (line 185) | typedef struct mominfo_time mominfo_time_t;
  type prop (line 192) | struct prop {
  type jobinfo (line 198) | struct jobinfo {
  type resvinfo (line 205) | struct resvinfo {
  type node_req (line 210) | struct node_req {
  type pbssubn (line 217) | struct pbssubn {
  type pbsnode (line 235) | struct pbsnode {
  type pbs_node (line 258) | typedef struct pbsnode pbs_node;
  type warn_codes (line 260) | enum warn_codes { WARN_none,
  type nix_flags (line 264) | enum nix_flags { NIX_none,
  type part_flags (line 267) | enum part_flags { PART_refig,
  type vnode_state_op (line 346) | enum vnode_state_op {
  type vnode_degraded_op (line 353) | enum vnode_degraded_op {
  type tree (line 366) | struct tree {
  type pbsnode (line 375) | struct pbsnode
  type tree (line 377) | struct tree
  type tree (line 378) | struct tree
  type pbsnode (line 386) | struct pbsnode
  type pbsnode (line 387) | struct pbsnode
  type pbsnode (line 388) | struct pbsnode
  type vnode_degraded_op (line 388) | enum vnode_degraded_op
  type pbsnode (line 390) | struct pbsnode
  type vnode_state_op (line 390) | enum vnode_state_op
  type resvinfo (line 391) | struct resvinfo
  type pbsnode (line 391) | struct pbsnode
  type vnode_degraded_op (line 391) | enum vnode_degraded_op
  type resvinfo (line 392) | struct resvinfo
  type work_task (line 394) | struct work_task
  type pbsnode (line 396) | struct pbsnode
  type pbsnode (line 397) | struct pbsnode
  type pbsnode (line 398) | struct pbsnode
  type pbssubn (line 398) | struct pbssubn
  type prop (line 398) | struct prop
  type pbssubn (line 399) | struct pbssubn
  type pbsnode (line 399) | struct pbsnode
  type pbssubn (line 399) | struct pbssubn
  type pbsnode (line 400) | struct pbsnode
  type pbssubn (line 402) | struct pbssubn
  type pbsnode (line 403) | struct pbsnode
  type pbsnode (line 404) | struct pbsnode
  type prop (line 405) | struct prop
  type pbsnode (line 408) | struct pbsnode
  type pbsnode (line 409) | struct pbsnode
  type pbsnode (line 410) | struct pbsnode
  type prop (line 413) | struct prop
  type pbsnode (line 416) | struct pbsnode
  type tree (line 417) | struct tree
  type pbsnode (line 431) | struct pbsnode
  type pbsnode (line 432) | struct pbsnode
  type pbsnode (line 434) | struct pbsnode
  type pbsnode (line 459) | struct pbsnode
  type pbsnode (line 460) | struct pbsnode
  type pbsnode (line 460) | struct pbsnode
  type work_task (line 464) | struct work_task
  type job (line 465) | struct job
  type machine_info (line 481) | struct machine_info
  type machine_info (line 482) | struct machine_info
  type pbsnode (line 484) | struct pbsnode
  type pbsnode (line 485) | struct pbsnode
  type array_strings (line 486) | struct array_strings
  type pbsnode (line 486) | struct pbsnode
  type pbsnode (line 487) | struct pbsnode
  type pbsnode (line 488) | struct pbsnode
  type pbsnode (line 489) | struct pbsnode
  type pbsnode (line 490) | struct pbsnode
  type batch_op (line 490) | enum batch_op
  type pbsnode (line 491) | struct pbsnode
  type pbsnode (line 492) | struct pbsnode
  type batch_op (line 492) | enum batch_op
  type pbsnode (line 493) | struct pbsnode
  type batch_op (line 493) | enum batch_op
  type pbsnode (line 494) | struct pbsnode
  type batch_op (line 494) | enum batch_op
  type pbsnode (line 495) | struct pbsnode
  type batch_op (line 495) | enum batch_op
  type pbsnode (line 496) | struct pbsnode
  type pbsnode (line 497) | struct pbsnode
  type pbsnode (line 498) | struct pbsnode
  type pbsnode (line 499) | struct pbsnode
  type pbsnode (line 499) | struct pbsnode

FILE: src/include/pbs_python.h
  type python_interpreter_data (line 87) | struct python_interpreter_data {
  type python_script (line 97) | struct python_script {
  type hook_input_param_t (line 141) | typedef struct hook_input_param {
  type hook_output_param_t (line 189) | typedef struct hook_output_param {
  type python_interpreter_data (line 218) | struct python_interpreter_data
  type python_interpreter_data (line 220) | struct python_interpreter_data
  type python_interpreter_data (line 223) | struct python_interpreter_data
  type python_interpreter_data (line 225) | struct python_interpreter_data
  type python_interpreter_data (line 228) | struct python_interpreter_data
  type python_interpreter_data (line 231) | struct python_interpreter_data
  type python_script (line 232) | struct python_script
  type python_interpreter_data (line 235) | struct python_interpreter_data
  type python_script (line 236) | struct python_script
  type python_script (line 240) | struct python_script
  type python_script (line 242) | struct python_script
  type python_script (line 244) | struct python_script
  type python_script (line 247) | struct python_script

FILE: src/include/pbs_reliable.h
  type reliable_job_node (line 66) | typedef struct reliable_job_node {
  type relnodes_input_t (line 97) | typedef struct relnodes_input {
  type relnodes_input_vnodelist_t (line 120) | typedef struct relnodes_input_vnodelist {
  type relnodes_input_select_t (line 139) | typedef struct relnodes_input_select {

FILE: src/include/pbs_sched.h
  type pbs_sched (line 85) | typedef struct pbs_sched {
  type array_strings (line 114) | struct array_strings
  type batch_op (line 117) | enum batch_op
  type batch_op (line 119) | enum batch_op
  type batch_op (line 120) | enum batch_op
  type batch_op (line 121) | enum batch_op

FILE: src/include/pbs_share.h
  type preempt_ordering (line 117) | struct preempt_ordering {

FILE: src/include/placementsets.h
  type dl_t (line 58) | typedef struct dynlist {
  type vnl_t (line 106) | typedef struct vnode_list {
  type vnal_t (line 119) | typedef struct vnode_attrlist {
  type vna_t (line 131) | typedef struct vnode_attr {

FILE: src/include/port_forwarding.h
  type pfwdsock (line 80) | struct pfwdsock {
  type pfwdsock (line 91) | struct pfwdsock

FILE: src/include/provision.h
  type HANDLE (line 61) | typedef HANDLE prov_pid;
  type pid_t (line 63) | typedef pid_t prov_pid;
  type prov_vnode_info (line 74) | struct prov_vnode_info {
  type prov_tracking (line 88) | struct prov_tracking {
  type work_task (line 100) | struct work_task

FILE: src/include/qmgr.h
  type server (line 124) | struct server {
  type objname (line 135) | struct objname {
  type objname (line 144) | struct objname
  type server (line 145) | struct server
  type server (line 146) | struct server
  type server (line 147) | struct server
  type objname (line 148) | struct objname
  type objname (line 149) | struct objname
  type objname (line 150) | struct objname
  type objname (line 151) | struct objname
  type server (line 151) | struct server
  type attropl (line 154) | struct attropl
  type objname (line 157) | struct objname
  type server (line 158) | struct server
  type objname (line 159) | struct objname
  type objname (line 161) | struct objname
  type objname (line 162) | struct objname
  type attropl (line 164) | struct attropl
  type attropl (line 165) | struct attropl
  type objname (line 166) | struct objname

FILE: src/include/queue.h
  type pbs_queue (line 72) | struct pbs_queue {
  type pbs_queue (line 94) | typedef struct pbs_queue pbs_queue;
  type array_strings (line 113) | struct array_strings
  type batch_op (line 116) | enum batch_op
  type batch_op (line 118) | enum batch_op
  type batch_op (line 119) | enum batch_op
  type batch_op (line 120) | enum batch_op

FILE: src/include/range.h
  type range_step_type (line 50) | enum range_step_type {
  type range (line 55) | typedef struct range {

FILE: src/include/reservation.h
  type resv_atr (line 82) | enum resv_atr {
  type resvState_discrim (line 88) | enum resvState_discrim {
  type pbsnode_list_t (line 108) | typedef struct pbsnode_list_ {
  type resv_alter (line 114) | struct resv_alter {
  type resc_resv (line 142) | struct resc_resv {
  type batch_request (line 274) | struct batch_request
  type batch_request (line 275) | struct batch_request
  type work_task (line 285) | struct work_task
  type work_task (line 286) | struct work_task
  type work_task (line 287) | struct work_task
  type work_task (line 291) | struct work_task
  type resvState_discrim (line 299) | enum resvState_discrim
  type array_strings (line 316) | struct array_strings
  type batch_op (line 319) | enum batch_op
  type batch_op (line 321) | enum batch_op
  type batch_op (line 322) | enum batch_op
  type batch_op (line 323) | enum batch_op

FILE: src/include/resmon.h
  type rm_attribute (line 40) | struct rm_attribute {
  type rm_attribute (line 50) | struct rm_attribute
  type config (line 51) | struct config {
  type rm_attribute (line 81) | struct rm_attribute
  type rm_attribute (line 82) | struct rm_attribute

FILE: src/include/resource.h
  type resc_enum (line 76) | enum resc_enum {
  type resdef_op_t (line 84) | typedef enum resdef_op {
  type resource (line 90) | typedef struct resource {
  type resource_def (line 96) | typedef struct resource_def {
  type resc_sum (line 111) | struct resc_sum {
  type svr_entlim_leaf_t (line 119) | typedef struct svr_entlim_leaf {
  type resc_sum (line 125) | struct resc_sum
  type resc_type_map (line 155) | struct resc_type_map {
  type resc_type_map (line 165) | struct resc_type_map
  type resc_type_map (line 166) | struct resc_type_map

FILE: src/include/resv_node.h
  type subUniverse (line 46) | typedef struct subUniverse subUniverse;
  type spec_and_context (line 47) | typedef struct spec_and_context spec_and_context;
  type spec_ctx (line 48) | typedef struct spec_and_context spec_ctx;
  type resc_resv (line 49) | typedef struct resc_resv resc_resv;
  type pbsnode (line 50) | typedef struct pbsnode pbsnode;
  type reservationTag (line 51) | typedef unsigned reservationTag;
  type subUniverse (line 61) | struct subUniverse {
  type spec_and_context (line 72) | struct spec_and_context {

FILE: src/include/sched_cmds.h
  type sched_cmd (line 47) | typedef struct sched_cmd sched_cmd;
  type sched_cmd (line 49) | struct sched_cmd {
  type svr_sched_cmd (line 58) | enum svr_sched_cmd {

FILE: src/include/server.h
  type server (line 89) | struct server {
  type server (line 114) | struct server
  type failover_state (line 160) | enum failover_state {
  type server (line 178) | struct server
  type failover_state (line 181) | enum failover_state
  type work_task (line 185) | struct work_task
  type array_strings (line 192) | struct array_strings
  type batch_op (line 195) | enum batch_op
  type batch_op (line 197) | enum batch_op
  type batch_op (line 198) | enum batch_op
  type batch_op (line 199) | enum batch_op

FILE: src/include/server_limits.h
  type pbs_net_t (line 119) | typedef unsigned long pbs_net_t;
  type PBS_Daemon_Protect (line 168) | enum PBS_Daemon_Protect {
  type PBS_Daemon_Protect (line 172) | enum PBS_Daemon_Protect

FILE: src/include/svrfunc.h
  type conn_type (line 85) | enum conn_type
  type batch_op (line 91) | enum batch_op
  type pbsnode (line 115) | struct pbsnode
  type failover_state (line 126) | enum failover_state
  type job (line 129) | struct job
  type batch_request (line 131) | struct batch_request
  type batch_request (line 138) | struct batch_request
  type tree (line 151) | struct tree
  type tree (line 152) | struct tree
  type tree (line 153) | struct tree
  type pbsnode (line 155) | struct pbsnode
  type work_task (line 163) | struct work_task
  type batch_op (line 165) | enum batch_op
  type batch_op (line 200) | enum batch_op
  type batch_op (line 201) | enum batch_op
  type batch_op (line 202) | enum batch_op
  type batch_op (line 203) | enum batch_op
  type batch_op (line 204) | enum batch_op
  type batch_request (line 209) | struct batch_request
  type batch_request (line 210) | struct batch_request
  type batch_request (line 211) | struct batch_request
  type batch_request (line 211) | struct batch_request
  type batch_request (line 213) | struct batch_request
  type batch_request (line 214) | struct batch_request
  type work_task (line 216) | struct work_task
  type batch_request (line 216) | struct batch_request
  type batch_request (line 217) | struct batch_request
  type work_task (line 217) | struct work_task
  type batch_request (line 218) | struct batch_request
  type work_task (line 218) | struct work_task
  type work_task (line 218) | struct work_task
  type batch_request (line 220) | struct batch_request
  type batch_request (line 221) | struct batch_request
  type work_task (line 222) | struct work_task
  type work_task (line 223) | struct work_task
  type work_task (line 224) | struct work_task
  type batch_request (line 232) | struct batch_request
  type batch_request (line 238) | struct batch_request
  type batch_request (line 239) | struct batch_request
  type batch_request (line 240) | struct batch_request
  type batch_request (line 241) | struct batch_request
  type batch_request (line 242) | struct batch_request
  type batch_request (line 243) | struct batch_request
  type batch_request (line 244) | struct batch_request
  type batch_request (line 245) | struct batch_request
  type batch_request (line 246) | struct batch_request
  type batch_request (line 247) | struct batch_request
  type batch_request (line 248) | struct batch_request
  type batch_request (line 249) | struct batch_request
  type batch_request (line 250) | struct batch_request
  type batch_request (line 251) | struct batch_request
  type batch_request (line 252) | struct batch_request
  type batch_request (line 253) | struct batch_request
  type batch_request (line 254) | struct batch_request
  type batch_request (line 255) | struct batch_request
  type batch_request (line 256) | struct batch_request
  type batch_request (line 257) | struct batch_request
  type batch_request (line 258) | struct batch_request
  type batch_request (line 259) | struct batch_request
  type batch_request (line 260) | struct batch_request
  type batch_request (line 261) | struct batch_request
  type batch_request (line 262) | struct batch_request
  type batch_request (line 263) | struct batch_request
  type batch_request (line 264) | struct batch_request
  type pbsnode (line 272) | struct pbsnode
  type batch_op (line 277) | enum batch_op
  type batch_op (line 278) | enum batch_op
  type batch_op (line 284) | enum batch_op
  type conn_type (line 309) | enum conn_type
  type work_task (line 312) | struct work_task
  type batch_request (line 314) | struct batch_request
  type work_task (line 314) | struct work_task
  type work_task (line 314) | struct work_task
  type spec_and_context (line 329) | struct spec_and_context
  type deferred_request (line 350) | struct deferred_request {
  type sched_deferred_request (line 357) | struct sched_deferred_request {
  type select_list (line 370) | struct select_list {
  type stat_cntl (line 379) | struct stat_cntl {
  type batch_request (line 391) | struct batch_request
  type batch_request (line 392) | struct batch_request
  type stat_cntl (line 393) | struct stat_cntl

FILE: src/include/tm.h
  type tm_roots (line 58) | struct tm_roots {
  type tm_whattodo_t (line 71) | typedef struct tm_whattodo {
  type tm_roots (line 82) | struct tm_roots

FILE: src/include/tm_.h
  type tm_host_id (line 50) | typedef int tm_host_id;
  type tm_node_id (line 51) | typedef int tm_node_id;
  type tm_event_t (line 54) | typedef int tm_event_t;
  type tm_task_id (line 58) | typedef unsigned int tm_task_id;

FILE: src/include/tpp.h
  type tpp_config (line 105) | struct tpp_config {
  type tpp_config (line 122) | struct tpp_config
  type pbs_config (line 125) | struct pbs_config
  type tpp_config (line 125) | struct tpp_config
  type tpp_config (line 126) | struct tpp_config
  type sockaddr_in (line 135) | struct sockaddr_in
  type tpp_config (line 138) | struct tpp_config
  type em_event_t (line 153) | typedef struct {
  type em_event_t (line 168) | typedef struct epoll_event em_event_t;
  type em_event_t (line 180) | typedef struct pollfd em_event_t;
  type em_event_t (line 192) | typedef struct {
  type em_event_t (line 207) | typedef struct pollfd em_event_t;

FILE: src/include/tracking.h
  type tracking (line 57) | struct tracking {
  type work_task (line 65) | struct work_task

FILE: src/include/work_task.h
  type work_type (line 57) | enum work_type {
  type wtask_delete_option (line 73) | enum wtask_delete_option {
  type work_task (line 78) | struct work_task {
  type work_task (line 93) | struct work_task
  type work_type (line 93) | enum work_type
  type work_task (line 93) | struct work_task
  type work_task (line 94) | struct work_task
  type work_type (line 94) | enum work_type
  type work_task (line 95) | struct work_task
  type work_task (line 96) | struct work_task
  type work_task (line 97) | struct work_task
  type work_task (line 98) | struct work_task
  type wtask_delete_option (line 98) | enum wtask_delete_option
  type work_task (line 101) | struct work_task
  type work_type (line 101) | enum work_type

FILE: src/lib/Libattr/attr_atomic.c
  function attr_atomic_set (line 91) | int
  function attr_atomic_kill (line 220) | void
  function attr_atomic_copy (line 243) | void

FILE: src/lib/Libattr/attr_fn_acl.c
  type batch_op (line 99) | enum batch_op
  function set_uacl (line 123) | int
  function set_gacl (line 149) | int
  function set_hostacl (line 175) | int
  function acl_check (line 202) | int
  function chk_dup_acl (line 289) | static int
  function set_allacl (line 337) | static int
  function user_match (line 541) | static int
  function user_order (line 583) | static int
  function group_order (line 621) | static int
  function hacl_match (line 653) | static int
  function gacl_match (line 694) | static int
  function sacl_match (line 745) | static int
  function host_order (line 815) | static int

FILE: src/lib/Libattr/attr_fn_arst.c
  function decode_arst_direct (line 106) | static int
  function decode_arst (line 211) | int
  function encode_arst (line 278) | int
  function set_arst (line 363) | int
  function comp_arst (line 530) | int
  function free_arst (line 572) | void
  type array_strings (line 602) | struct array_strings
  function count_substrings_bs (line 713) | int
  function decode_arst_direct_bs (line 768) | static int
  function decode_arst_bs (line 875) | int
  function encode_arst_bs (line 943) | int
  function set_arst_uniq (line 1043) | int
  function check_duplicates (line 1165) | int
  type array_strings (line 1183) | struct array_strings

FILE: src/lib/Libattr/attr_fn_b.c
  function is_true_or_false (line 94) | int
  function decode_b (line 136) | int
  function encode_b (line 172) | int
  function set_b (line 222) | int
  function comp_b (line 262) | int
  function set_attr_b (line 291) | void

FILE: src/lib/Libattr/attr_fn_c.c
  function decode_c (line 94) | int
  function encode_c (line 126) | int
  function set_c (line 168) | int
  function comp_c (line 210) | int
  function set_attr_c (line 240) | void
  function set_attr_short (line 265) | void
  function get_attr_c (line 301) | char

FILE: src/lib/Libattr/attr_fn_entlim.c
  function svr_freeleaf (line 86) | static void
  function svr_entlim_leaf_t (line 115) | svr_entlim_leaf_t *
  function alloc_svrleaf (line 144) | int
  function svr_addleaf (line 188) | int
  function internal_decode_entlim (line 251) | static int
  function decode_entlim (line 307) | int
  function decode_entlim_res (line 339) | int
  function encode_entlim_db (line 404) | int
  function encode_entlim (line 592) | int
  function set_entlim (line 763) | int
  function set_entlim_res (line 913) | int
  function free_entlim (line 986) | void
  function unset_entlim_resc (line 1014) | void

FILE: src/lib/Libattr/attr_fn_f.c
  function decode_f (line 99) | int
  function encode_f (line 148) | int
  function set_f (line 194) | int
  function comp_f (line 232) | int

FILE: src/lib/Libattr/attr_fn_hold.c
  function decode_hold (line 84) | int
  function encode_hold (line 138) | int
  function comp_hold (line 192) | int

FILE: src/lib/Libattr/attr_fn_intr.c
  function encode_inter (line 105) | int

FILE: src/lib/Libattr/attr_fn_l.c
  function decode_l (line 96) | int
  function encode_l (line 145) | int
  function set_l (line 192) | int
  function comp_l (line 230) | int
  function set_attr_l (line 260) | void
  function get_attr_l (line 296) | long

FILE: src/lib/Libattr/attr_fn_ll.c
  function decode_ll (line 97) | int
  function encode_ll (line 134) | int
  function set_ll (line 178) | int
  function comp_ll (line 216) | int
  function set_attr_ll (line 242) | void
  function get_attr_ll (line 278) | long long

FILE: src/lib/Libattr/attr_fn_resc.c
  function decode_resc (line 114) | int
  function encode_resc (line 208) | int
  function set_resc (line 296) | int
  function comp_resc (line 384) | int
  function free_resc (line 434) | void
  function cr_rescdef_idx (line 470) | int
  function resource_def (line 505) | resource_def *
  function resource (line 530) | resource *
  function resource (line 560) | resource *
  function action_resc (line 623) | int
  function action_resc_job (line 665) | int
  function action_resc_resv (line 692) | int
  function action_resc_dflt_svr (line 715) | int
  function action_resc_dflt_queue (line 738) | int

FILE: src/lib/Libattr/attr_fn_size.c
  function decode_size (line 96) | int
  function encode_size (line 138) | int
  function set_size (line 183) | int
  function comp_size (line 250) | int
  function normalize_size (line 293) | int
  function to_size (line 362) | int
  function from_size (line 447) | void
  function u_Long (line 495) | u_Long
  function u_Long (line 525) | u_Long

FILE: src/lib/Libattr/attr_fn_str.c
  function decode_str (line 96) | int
  function encode_str (line 137) | int
  function set_str (line 184) | int
  function comp_str (line 262) | int
  function free_str (line 280) | void
  function decode_jobname (line 306) | int

FILE: src/lib/Libattr/attr_fn_time.c
  function decode_time (line 95) | int
  function encode_time (line 193) | int
  function at_non_zero_time (line 261) | int

FILE: src/lib/Libattr/attr_fn_unkn.c
  function decode_unkn (line 98) | int
  function encode_unkn (line 160) | int
  function set_unkn (line 239) | int
  function comp_unkn (line 274) | int
  function free_unkn (line 292) | void

FILE: src/lib/Libattr/attr_func.c
  function clear_attr (line 77) | void
  function find_attr (line 144) | int
  function free_svrcache (line 166) | void
  function free_null (line 206) | void
  function decode_null (line 230) | int
  function set_null (line 247) | int
  function comp_null (line 266) | int
  function svrattrl (line 290) | svrattrl *
  function svrattrl (line 343) | svrattrl *
  function free_attrlist (line 377) | void
  function free_svrattrl (line 392) | void
  function count_substrings (line 484) | int
  function attrl_fixlink (line 534) | void
  function free_none (line 567) | void
  function svrattrl (line 585) | svrattrl *
  function add_to_svrattrl_list (line 650) | int
  function add_to_svrattrl_list_sorted (line 713) | int
  function copy_svrattrl_list (line 790) | int
  function convert_attrl_to_svrattrl (line 827) | int
  function svrattrl (line 862) | svrattrl *
  function get_svrattrl_flag (line 902) | unsigned int
  function compare_svrattrl_list (line 930) | int
  function free_str_array (line 1005) | void
  function str_array_to_svrattrl (line 1091) | int
  function prune_esc_backslash (line 1368) | static void
  type attrl (line 1507) | struct attrl
  type attropl (line 1508) | struct attropl
  type attrl (line 1510) | struct attrl
  type attrl (line 1565) | struct attrl
  type attrl (line 1566) | struct attrl
  type attrl (line 1568) | struct attrl
  type attrl (line 1593) | struct attrl
  type attrl (line 1594) | struct attrl
  type attrl (line 1596) | struct attrl
  type attrl (line 1597) | struct attrl
  type attrl (line 1598) | struct attrl
  type attrl (line 1599) | struct attrl
  type attrl (line 1620) | struct attrl
  type attrl (line 1623) | struct attrl
  type attrl (line 1625) | struct attrl
  function free_attrl (line 1643) | void
  function free_attrl_list (line 1662) | void
  function set_attr_generic (line 1694) | int
  function set_attr_with_attr (line 1746) | int
  function mark_attr_not_set (line 1768) | void
  function mark_attr_set (line 1786) | void
  function is_attr_set (line 1805) | int
  function post_attr_set (line 1823) | void
  function decode_sandbox (line 1846) | int
  function decode_project (line 1882) | int
  function attribute (line 1907) | attribute *
  function free_attr (line 1922) | void
  function pbs_list_head (line 1939) | pbs_list_head

FILE: src/lib/Libattr/attr_node_func.c
  type node_state (line 60) | struct node_state {
  type node_type (line 80) | struct node_type {
  function str_to_vnode_state (line 245) | int
  function encode_state (line 293) | int
  function str_to_vnode_ntype (line 364) | int
  function encode_ntype (line 432) | int
  function encode_jobs (line 496) | int
  function encode_resvs (line 600) | int
  function encode_sharing (line 680) | int
  function decode_state (line 735) | int
  function decode_ntype (line 827) | int
  function decode_sharing (line 851) | int
  function set_node_state (line 886) | int
  function set_node_ntype (line 950) | int
  function set_nodeflag (line 1006) | static int
  function node_ntype (line 1047) | int
  type vnode_sharing (line 1097) | enum vnode_sharing
  type vnode_sharing (line 1124) | enum vnode_sharing
  function fprint_svrattrl_list (line 1170) | void

FILE: src/lib/Libattr/attr_resc_func.c
  function decode_nodes (line 90) | int
  function decode_select (line 144) | int
  function verify_resc_name (line 263) | int
  function verify_resc_type_and_flags (line 298) | int
  function parse_resc_type (line 386) | int
  function parse_resc_flags (line 409) | int

FILE: src/lib/Libattr/resc_map.c
  type resc_type_map (line 70) | struct resc_type_map
  type resc_type_map (line 141) | struct resc_type_map
  type resc_type_map (line 145) | struct resc_type_map
  type resc_type_map (line 174) | struct resc_type_map
  type resc_type_map (line 178) | struct resc_type_map

FILE: src/lib/Libattr/strToL.c
  function Long (line 86) | Long

FILE: src/lib/Libattr/strTouL.c
  function u_Long (line 97) | u_Long

FILE: src/lib/Libauth/gss/pbs_gss.c
  type pbs_gss_extra_t (line 109) | typedef struct {
  type PBS_GSS_ERRORS (line 119) | enum PBS_GSS_ERRORS {
  function gss_lock (line 156) | static int
  function gss_unlock (line 181) | static int
  function gss_atfork_prepare (line 196) | void
  function gss_atfork_parent (line 207) | void
  function gss_atfork_child (line 218) | void
  function init_gss_mutex (line 229) | static void
  function init_gss_atfork (line 257) | static void
  function pbs_gss_oidset_mech (line 280) | static int
  function pbs_gss_release_oidset (line 310) | static void
  function pbs_gss_fill_data (line 333) | static int
  function pbs_gss_server_acquire_creds (line 359) | static int
  function pbs_gss_client_establish_context (line 423) | static int
  function pbs_gss_server_establish_context (line 509) | static int
  function pbs_gss_can_get_creds (line 583) | static int
  function pbs_gss_ask_user_creds (line 613) | static int
  function init_pbs_client_ccache_from_keytab (line 754) | static int
  function pbs_gss_establish_context (line 916) | int
  function pbs_auth_set_config (line 1162) | void
  function pbs_auth_create_ctx (line 1180) | int
  function pbs_auth_destroy_ctx (line 1220) | void
  function pbs_auth_get_userinfo (line 1252) | int
  function pbs_auth_process_handshake_data (line 1325) | int
  function pbs_auth_encrypt_data (line 1383) | int
  function pbs_auth_decrypt_data (line 1463) | int

FILE: src/lib/Libauth/munge/munge_supp.c
  type munge_extra_t (line 73) | typedef struct {
  function init_munge (line 99) | static void
  type passwd (line 164) | struct passwd
  type group (line 165) | struct group
  function munge_validate_auth_data (line 232) | static int
  function pbs_auth_set_config (line 310) | void
  function pbs_auth_create_ctx (line 328) | int
  function pbs_auth_destroy_ctx (line 358) | void
  function pbs_auth_get_userinfo (line 380) | int
  function pbs_auth_process_handshake_data (line 413) | int

FILE: src/lib/Libcmds/batch_status.c
  type batch_status (line 64) | struct batch_status
  type batch_status (line 65) | struct batch_status
  type batch_status (line 66) | struct batch_status
  type batch_status (line 66) | struct batch_status
  type batch_status (line 68) | struct batch_status
  type batch_status (line 69) | struct batch_status
  type batch_status (line 70) | struct batch_status
  type batch_status (line 71) | struct batch_status
  type batch_status (line 72) | struct batch_status
  type batch_status (line 114) | struct batch_status
  type batch_status (line 115) | struct batch_status
  function init_bstat (line 135) | void

FILE: src/lib/Libcmds/check_job_script.c
  function pbs_isexecutable (line 64) | int

FILE: src/lib/Libcmds/chk_Jrange.c
  function chk_Jrange (line 64) | int

FILE: src/lib/Libcmds/ck_job_name.c
  function isalnumspch (line 56) | static int
  function check_job_name (line 88) | int

FILE: src/lib/Libcmds/cmds_common.c
  function set_attr_error_exit (line 65) | void
  function set_attr_resc_error_exit (line 83) | void
  function DIS_tpp_funcs (line 94) | void

FILE: src/lib/Libcmds/cnt2server.c
  function cnt2server_extend (line 72) | int
  function cnt2server (line 134) | int

FILE: src/lib/Libcmds/cs_error.c
  function cs_logerr (line 69) | void

FILE: src/lib/Libcmds/cvtdate.c
  function time_t (line 76) | time_t
  type tm (line 230) | struct tm
  type tm (line 231) | struct tm
  type tm (line 232) | struct tm

FILE: src/lib/Libcmds/err_handling.c
  function prt_job_err (line 69) | void

FILE: src/lib/Libcmds/get_attr.c
  type attrl (line 64) | struct attrl
  function check_max_job_sequence_id (line 91) | int

FILE: src/lib/Libcmds/get_dataservice_usr.c
  type stat (line 76) | struct stat

FILE: src/lib/Libcmds/get_server.c
  function get_server (line 114) | int

FILE: src/lib/Libcmds/isjobid.c
  function pbs_isjobid (line 62) | int

FILE: src/lib/Libcmds/locate_job.c
  function locate_job (line 67) | int

FILE: src/lib/Libcmds/parse_at.c
  type hostlist (line 55) | struct hostlist {
  function parse_at_item (line 80) | int
  function parse_at_list (line 149) | int

FILE: src/lib/Libcmds/parse_depend.c
  function append_string (line 74) | static int
  function parse_depend_item (line 112) | static int
  function parse_depend_list (line 212) | int

FILE: src/lib/Libcmds/parse_destid.c
  function parse_destination_id (line 77) | int

FILE: src/lib/Libcmds/parse_equal.c
  function parse_equal_string (line 76) | int

FILE: src/lib/Libcmds/parse_jobid.c
  function parse_jobid (line 74) | int

FILE: src/lib/Libcmds/parse_stage.c
  function parse_stage_name (line 70) | int
  function parse_stage_list (line 184) | int

FILE: src/lib/Libcmds/prepare_path.c
  function is_local_host (line 67) | int
  function prepare_path (line 114) | int

FILE: src/lib/Libcmds/set_attr.c
  type attrl (line 53) | struct attrl
  function set_attr (line 71) | int
  function set_attr_resc (line 127) | int

FILE: src/lib/Libcmds/set_resource.c
  function set_resources (line 72) | int

FILE: src/lib/Libdb/pgsql/db_attr.c
  type str_data (line 63) | struct str_data {
  type pg_array (line 69) | struct pg_array {
  function svrattrl (line 94) | svrattrl *
  function dbarray_to_attrlist (line 168) | int
  function attrlist_to_dbarray_ex (line 242) | int
  function attrlist_to_dbarray (line 321) | int

FILE: src/lib/Libdb/pgsql/db_common.c
  function db_destroy_state (line 192) | static void
  function pbs_db_search (line 222) | int
  function db_cursor_next (line 269) | static int
  function pbs_db_delete_obj (line 297) | int
  function pbs_db_load_obj (line 318) | int
  function db_prepare_sqls (line 336) | static int
  function db_execute_str (line 367) | int
  function pbs_dataservice_control (line 402) | int
  function pbs_status_db (line 635) | int
  function pbs_start_db (line 653) | int
  function pbs_stop_db (line 672) | int
  function pbs_db_password (line 693) | int
  function is_conn_error (line 754) | static int
  function pbs_db_connect (line 790) | int
  function pbs_db_disconnect (line 859) | int
  function pbs_db_save_obj (line 888) | int
  function pbs_db_delete_attr_obj (line 908) | int
  function db_set_error (line 927) | void
  function db_prepare_stmt (line 972) | int
  function db_cmd (line 1002) | int
  function db_query (line 1048) | int
  type stat (line 1095) | struct stat
  function escape_passwd (line 1145) | void
  type in_addr (line 1190) | struct in_addr
  function pbs_db_get_errmsg (line 1332) | void
  function db_ntohll (line 1385) | unsigned long long

FILE: src/lib/Libdb/pgsql/db_job.c
  function db_prepare_job_sqls (line 62) | int
  function load_job (line 270) | static int
  function pbs_db_save_job (line 351) | int
  function pbs_db_load_job (line 424) | int
  function pbs_db_find_job (line 458) | int
  function pbs_db_next_job (line 504) | int
  function pbs_db_delete_job (line 524) | int
  function pbs_db_save_jobscr (line 557) | int
  function pbs_db_load_jobscr (line 588) | int
  function pbs_db_del_attr_job (line 635) | int

FILE: src/lib/Libdb/pgsql/db_node.c
  function db_prepare_node_sqls (line 62) | int
  function load_node (line 215) | static int
  function pbs_db_save_node (line 263) | int
  function pbs_db_load_node (line 324) | int
  function pbs_db_find_node (line 358) | int
  function pbs_db_next_node (line 392) | int
  function pbs_db_delete_node (line 413) | int
  function pbs_db_del_attr_node (line 434) | int
  function pbs_db_save_mominfo_tm (line 464) | int
  function pbs_db_load_mominfo_tm (line 494) | int

FILE: src/lib/Libdb/pgsql/db_postgres.h
  type postgres_conn_data (line 173) | struct postgres_conn_data {
  type pg_conn_data_t (line 182) | typedef struct postgres_conn_data pg_conn_data_t;
  type pg_conn_trx (line 188) | struct pg_conn_trx {
  type pg_conn_trx_t (line 193) | typedef struct pg_conn_trx pg_conn_trx_t;
  type db_query_state (line 206) | struct db_query_state {
  type db_query_state_t (line 212) | typedef struct db_query_state db_query_state_t;
  type postgres_db_fn (line 228) | struct postgres_db_fn {
  type pg_db_fn_t (line 237) | typedef struct postgres_db_fn pg_db_fn_t;

FILE: src/lib/Libdb/pgsql/db_que.c
  function db_prepare_que_sqls (line 62) | int
  function load_que (line 145) | static int
  function pbs_db_save_que (line 179) | int
  function pbs_db_load_que (line 235) | int
  function pbs_db_find_que (line 269) | int
  function pbs_db_next_que (line 305) | int
  function pbs_db_delete_que (line 325) | int
  function pbs_db_del_attr_que (line 346) | int

FILE: src/lib/Libdb/pgsql/db_resv.c
  function db_prepare_resv_sqls (line 61) | int
  function load_resv (line 180) | static int
  function pbs_db_save_resv (line 237) | int
  function pbs_db_load_resv (line 300) | int
  function pbs_db_find_resv (line 334) | int
  function pbs_db_next_resv (line 373) | int
  function pbs_db_delete_resv (line 392) | int
  function pbs_db_del_attr_resv (line 413) | int

FILE: src/lib/Libdb/pgsql/db_sched.c
  function db_prepare_sched_sqls (line 61) | int
  function pbs_db_save_sched (line 127) | int
  function load_sched (line 173) | static int
  function pbs_db_load_sched (line 207) | int
  function pbs_db_find_sched (line 241) | int
  function pbs_db_del_attr_sched (line 277) | int
  function pbs_db_next_sched (line 308) | int
  function pbs_db_delete_sched (line 328) | int

FILE: src/lib/Libdb/pgsql/db_svr.c
  function db_prepare_svr_sqls (line 66) | int
  function pbs_db_truncate_all (line 118) | static int
  function pbs_db_save_svr (line 150) | int
  function pbs_db_load_svr (line 201) | int
  function pbs_db_del_attr_svr (line 245) | int

FILE: src/lib/Libdb/pgsql/pbs_db_schema.sql
  type pbs (line 55) | CREATE TABLE pbs.info (
  type pbs (line 66) | CREATE TABLE pbs.server (
  type pbs (line 78) | CREATE TABLE pbs.scheduler (
  type pbs (line 92) | CREATE TABLE pbs.mominfo_time (
  type pbs (line 100) | CREATE TABLE pbs.node (
  type nd_idx_cr (line 113) | CREATE INDEX nd_idx_cr
  type pbs (line 122) | CREATE TABLE pbs.queue (
  type que_idx_cr (line 130) | CREATE INDEX que_idx_cr
  type pbs (line 140) | CREATE TABLE pbs.resv (
  type pbs (line 162) | CREATE TABLE pbs.job (
  type job_rank_idx (line 185) | CREATE INDEX job_rank_idx
  type pbs (line 193) | CREATE TABLE pbs.job_scr (
  type job_scr_idx (line 197) | CREATE INDEX job_scr_idx ON pbs.job_scr (ji_jobid)

FILE: src/lib/Libdis/dis.c
  function dis_init_tables (line 71) | void

FILE: src/lib/Libdis/dis_helpers.c
  function transport_chan_set_ctx_status (line 74) | void
  function transport_chan_get_ctx_status (line 102) | int
  function transport_chan_set_authctx (line 128) | void
  function transport_chan_set_authdef (line 182) | void
  function auth_def_t (line 210) | auth_def_t *
  function transport_chan_is_encrypted (line 237) | static int
  function __send_pkt (line 269) | static int
  function transport_send_pkt (line 327) | int
  function __recv_pkt (line 387) | static int
  function transport_recv_pkt (line 458) | int
  function pbs_dis_buf_t (line 494) | static pbs_dis_buf_t *
  function pbs_dis_buf_t (line 519) | static pbs_dis_buf_t *
  function dis_resize_buf (line 549) | static int
  function dis_clear_buf (line 581) | void
  function dis_reset_buf (line 603) | void
  function disr_skip (line 626) | int
  function dis_getc (line 660) | int
  function dis_gets (line 705) | int
  function dis_puts (line 754) | int
  function dis_flush (line 797) | int
  function dis_destroy_chan (line 825) | void
  function dis_setup_chan (line 878) | void

FILE: src/lib/Libdis/disi10d_.c
  function disi10d_ (line 71) | void

FILE: src/lib/Libdis/disi10l_.c
  function disi10l_ (line 71) | void

FILE: src/lib/Libdis/disiui_.c
  function disiui_ (line 64) | void

FILE: src/lib/Libdis/disp10d_.c
  function disp10d_ (line 60) | double

FILE: src/lib/Libdis/disp10l_.c
  function dis_long_double_t (line 63) | dis_long_double_t

FILE: src/lib/Libdis/disrd.c
  function disrd (line 88) | double

FILE: src/lib/Libdis/disrf.c
  function disrd_ (line 82) | static int
  function disrf (line 195) | float

FILE: src/lib/Libdis/disrfcs.c
  function disrfcs (line 83) | int

FILE: src/lib/Libdis/disrfst.c
  function disrfst (line 88) | int

FILE: src/lib/Libdis/disrl.c
  function dis_long_double_t (line 87) | dis_long_double_t

FILE: src/lib/Libdis/disrl_.c
  function disrl_ (line 63) | int

FILE: src/lib/Libdis/disrsc.c
  function disrsc (line 94) | signed char

FILE: src/lib/Libdis/disrsi.c
  function disrsi (line 89) | int

FILE: src/lib/Libdis/disrsi_.c
  function disrsi_ (line 63) | int

FILE: src/lib/Libdis/disrsl.c
  function disrsl (line 89) | long

FILE: src/lib/Libdis/disrsl_.c
  function disrsl_ (line 65) | int

FILE: src/lib/Libdis/disrsll_.c
  function init_ulmax (line 60) | void
  function disrsll_ (line 81) | int

FILE: src/lib/Libdis/disrss.c
  function disrss (line 90) | short

FILE: src/lib/Libdis/disruc.c
  function disruc (line 93) | unsigned char

FILE: src/lib/Libdis/disrui.c
  function disrui (line 90) | unsigned

FILE: src/lib/Libdis/disrul.c
  function disrul (line 88) | unsigned long

FILE: src/lib/Libdis/disrull.c
  function u_Long (line 90) | u_Long

FILE: src/lib/Libdis/disrus.c
  function disrus (line 93) | unsigned short

FILE: src/lib/Libdis/diswcs.c
  function diswcs (line 78) | int

FILE: src/lib/Libdis/diswf.c
  function diswf (line 79) | int

FILE: src/lib/Libdis/diswl_.c
  function diswl_ (line 82) | int

FILE: src/lib/Libdis/diswsi.c
  function diswsi (line 88) | int

FILE: src/lib/Libdis/diswsl.c
  function diswsl (line 88) | int

FILE: src/lib/Libdis/diswui.c
  function diswui (line 88) | int

FILE: src/lib/Libdis/diswui_.c
  function diswui_ (line 64) | int

FILE: src/lib/Libdis/diswul.c
  function diswul (line 88) | int

FILE: src/lib/Libdis/diswull.c
  function diswull (line 90) | int

FILE: src/lib/Libdis/ps_dis.c
  function vnl_t (line 108) | vnl_t *
  function vnl_t (line 149) | static vnl_t *
  function vnl_t (line 258) | static vnl_t *
  function vn_encode_DIS (line 360) | int
  function vn_encode_DIS_V4 (line 392) | static int
  function vnl_t (line 446) | static vnl_t *

FILE: src/lib/Libecl/ecl_verify.c
  type batch_op (line 68) | enum batch_op
  type batch_op (line 69) | enum batch_op
  type attropl (line 74) | struct attropl
  type attropl (line 77) | struct attropl
  type ecl_attribute_def (line 78) | struct ecl_attribute_def
  type attropl (line 78) | struct attropl
  type ecl_attribute_def (line 79) | struct ecl_attribute_def
  type ecl_attribute_def (line 80) | struct ecl_attribute_def
  type ecl_attribute_def (line 81) | struct ecl_attribute_def
  type attropl (line 85) | struct attropl
  function set_no_attribute_verification (line 106) | void
  function __pbs_verify_attributes_dummy (line 137) | static int
  function __pbs_verify_attributes (line 173) | static int
  function verify_an_attribute (line 280) | int
  type attropl (line 385) | struct attropl
  type attropl (line 386) | struct attropl
  type attropl (line 388) | struct attropl
  type attropl (line 388) | struct attropl
  type attropl (line 389) | struct attropl
  function verify_attributes (line 439) | int
  type ecl_attribute_def (line 567) | struct ecl_attribute_def
  type attropl (line 569) | struct attropl
  type ecl_attribute_def (line 618) | struct ecl_attribute_def
  type ecl_attribute_def (line 620) | struct ecl_attribute_def
  function get_attr_type (line 655) | static int
  type ecl_attribute_def (line 689) | struct ecl_attribute_def
  type ecl_attribute_def (line 690) | struct ecl_attribute_def
  function is_attr (line 717) | int

FILE: src/lib/Libecl/ecl_verify_datatypes.c
  function verify_datatype_bool (line 78) | int
  function verify_datatype_short (line 98) | int
  function verify_datatype_long (line 126) | int
  function verify_datatype_long_long (line 146) | int
  function verify_datatype_float (line 166) | int
  function verify_datatype_size (line 186) | int
  function verify_datatype_time (line 206) | int
  function verify_datatype_nodes (line 226) | int
  function verify_datatype_select (line 246) | int

FILE: src/lib/Libecl/ecl_verify_object_name.c
  function pbs_verify_object_name (line 82) | int

FILE: src/lib/Libecl/ecl_verify_values.c
  function verify_value_resc (line 122) | int
  function verify_value_user_list (line 197) | int
  function verify_value_authorized_users (line 240) | int
  function verify_value_authorized_groups (line 279) | int
  function verify_value_dependlist (line 325) | int
  function verify_value_path (line 375) | int
  function verify_value_jrange (line 426) | int
  function verify_value_jobname (line 470) | int
  function verify_value_checkpoint (line 530) | int
  function verify_value_hold (line 594) | int
  function verify_value_joinpath (line 657) | int
  function verify_keepfiles_common (line 693) | int
  function verify_value_keepfiles (line 742) | int
  function verify_value_mailpoints (line 775) | int
  function verify_value_mailusers (line 832) | int
  function verify_value_shellpathlist (line 871) | int
  function verify_value_priority (line 910) | int
  function verify_removefiles_common (line 951) | int
  function verify_value_removefiles (line 991) | int
  function verify_value_sandbox (line 1023) | int
  function verify_value_stagelist (line 1062) | int
  function verify_value_credname (line 1098) | int
  function verify_value_zero_or_positive (line 1142) | int
  function verify_value_preempt_targets (line 1180) | int
  function verify_value_non_zero_positive (line 1346) | int
  function verify_value_non_zero_positive_long_long (line 1384) | int
  function verify_value_minlicenses (line 1425) | int
  function verify_value_maxlicenses (line 1463) | int
  function verify_value_licenselinger (line 1502) | int
  function verify_value_mgr_opr_acl_check (line 1540) | int
  function verify_value_queue_type (line 1628) | int
  function verify_value_state (line 1669) | int
  function verify_value_select (line 1718) | int
  function verify_value_tolerate_node_failures (line 1778) | int
  function verify_value_preempt_prio (line 1812) | int
  function verify_value_preempt_order (line 1867) | int
  function verify_value_preempt_sort (line 1971) | int

FILE: src/lib/Libecl/pbs_client_thread.c
  type pbs_client_thread_context (line 90) | struct pbs_client_thread_context
  type pbs_client_thread_context (line 114) | struct pbs_client_thread_context
  type pbs_client_thread_context (line 145) | struct pbs_client_thread_context
  function __pbs_client_thread_lock_connection_single_threaded (line 149) | static int
  function __pbs_client_thread_unlock_connection_single_threaded (line 156) | static int
  type pbs_client_thread_context (line 173) | struct pbs_client_thread_context
  function __pbs_client_thread_lock_conntable_single_threaded (line 180) | static int
  function __pbs_client_thread_unlock_conntable_single_threaded (line 187) | static int
  function __pbs_client_thread_lock_conf_single_threaded (line 194) | static int
  function __pbs_client_thread_unlock_conf_single_threaded (line 201) | static int
  function __pbs_client_thread_destroy_connect_context_single_threaded (line 208) | static int
  function __pbs_client_thread_init_thread_context_single_threaded (line 243) | static int
  function __pbs_client_thread_init_connect_context_single_threaded (line 277) | static int
  function pbs_client_thread_set_single_threaded_mode (line 302) | void
  function __init_thread_data (line 358) | static void
  function __post_init_thread_data (line 433) | static void
  function __pbs_client_thread_init_thread_context (line 467) | static int
  function free_errlist (line 575) | void
  function __pbs_client_thread_destroy_thread_data (line 624) | static void
  type pbs_client_thread_connect_context (line 682) | struct pbs_client_thread_connect_context
  type pbs_client_thread_context (line 685) | struct pbs_client_thread_context
  type pbs_client_thread_connect_context (line 687) | struct pbs_client_thread_connect_context
  type pbs_client_thread_connect_context (line 688) | struct pbs_client_thread_connect_context
  function pbs_client_thread_remove_connect_context (line 730) | int
  type pbs_client_thread_connect_context (line 782) | struct pbs_client_thread_connect_context
  type pbs_client_thread_context (line 785) | struct pbs_client_thread_context
  type pbs_client_thread_connect_context (line 787) | struct pbs_client_thread_connect_context
  function __pbs_client_thread_init_connect_context (line 821) | static int
  function __pbs_client_thread_destroy_connect_context (line 857) | static int
  type pbs_client_thread_context (line 894) | struct pbs_client_thread_context
  type pbs_client_thread_context (line 897) | struct pbs_client_thread_context
  function __pbs_client_thread_lock_connection (line 934) | static int
  function __pbs_client_thread_unlock_connection (line 993) | static int
  function __pbs_client_thread_lock_conntable (line 1040) | static int
  function __pbs_client_thread_unlock_conntable (line 1063) | static int
  function __pbs_client_thread_lock_conf (line 1086) | static int
  function __pbs_client_thread_unlock_conf (line 1109) | static int
  type pbs_client_thread_context (line 1142) | struct pbs_client_thread_context
  type pbs_client_thread_context (line 1171) | struct pbs_client_thread_context
  type pbs_client_thread_context (line 1200) | struct pbs_client_thread_context
  function time_t (line 1245) | time_t *
  type pbs_client_thread_context (line 1281) | struct pbs_client_thread_context
  type pbs_client_thread_context (line 1310) | struct pbs_client_thread_context

FILE: src/lib/Libifl/DIS_decode.c
  function decode_DIS_Authenticate (line 61) | int
  function decode_DIS_CopyHookFile (line 112) | int
  function decode_DIS_Cred (line 164) | int
  function decode_DIS_DelHookFile (line 206) | int
  function decode_DIS_DelJobList (line 245) | int
  function decode_DIS_JobCred (line 295) | int
  function decode_DIS_JobFile (line 332) | int
  function decode_DIS_JobId (line 387) | int
  function decode_DIS_Manage (line 420) | int
  function decode_DIS_ModifyResv (line 447) | int
  function decode_DIS_MoveJob (line 485) | int
  function decode_DIS_MessageJob (line 522) | int
  function decode_DIS_PreemptJobs (line 550) | int
  function decode_DIS_QueueJob (line 598) | int
  function decode_DIS_Register (line 641) | int
  function decode_DIS_ReqExtend (line 691) | int
  function decode_DIS_ReqHdr (line 722) | int
  function decode_DIS_Rescl (line 772) | int
  function decode_DIS_Run (line 833) | int
  function decode_DIS_ShutDown (line 874) | int
  function decode_DIS_SignalJob (line 906) | int
  function decode_DIS_Status (line 939) | int
  function decode_DIS_TrackJob (line 985) | int
  function decode_DIS_UserCred (line 1029) | int
  function decode_DIS_attrl (line 1082) | int
  function decode_DIS_attropl (line 1174) | int
  function decode_DIS_svrattrl (line 1273) | int

FILE: src/lib/Libifl/DIS_encode.c
  function encode_DIS_JobsList (line 58) | int
  function encode_DIS_CopyHookFile (line 103) | int
  function encode_DIS_CopyFiles (line 129) | int
  function encode_DIS_CopyFiles_Cred (line 198) | int
  function encode_DIS_DelHookFile (line 262) | int
  function encode_DIS_Cred (line 297) | int
  function encode_DIS_JobCred (line 330) | int
  function encode_DIS_JobFile (line 358) | int
  function encode_DIS_JobId (line 395) | int
  function encode_DIS_Manage (line 421) | int
  function encode_DIS_ModifyResv (line 443) | int
  function encode_DIS_MoveJob (line 473) | int
  function encode_DIS_MessageJob (line 500) | int
  function encode_DIS_PySpawn (line 530) | int
  function encode_DIS_RelnodesJob (line 559) | int
  function encode_DIS_QueueJob (line 589) | int
  function encode_DIS_Register (line 631) | int
  function encode_DIS_ReqExtend (line 664) | int
  function encode_DIS_ReqHdr (line 694) | int
  function encode_DIS_Run (line 724) | int
  function encode_DIS_ShutDown (line 750) | int
  function encode_DIS_SignalJob (line 770) | int
  function encode_DIS_Status (line 796) | int
  function encode_DIS_SubmitResv (line 826) | int
  function encode_DIS_TrackJob (line 867) | int
  function encode_DIS_UserCred (line 897) | int
  function encode_DIS_attrl (line 938) | int
  function encode_DIS_attropl (line 1016) | int
  function encode_DIS_svrattrl (line 1086) | int

FILE: src/lib/Libifl/PBS_attr.c
  function PBS_val_al (line 62) | int
  function PBS_free_al (line 82) | void
  function PBS_val_aopl (line 108) | int
  function PBS_free_aopl (line 129) | void

FILE: src/lib/Libifl/advise.c
  function advise (line 57) | void

FILE: src/lib/Libifl/auth.c
  function auth_def_t (line 105) | static auth_def_t *
  function _unload_auth (line 174) | static void
  function auth_def_t (line 201) | auth_def_t *
  function load_auths (line 234) | int
  function unload_auths (line 290) | void
  function is_valid_encrypt_method (line 310) | int
  function tcp_send_auth_req (line 338) | int
  function _invoke_pbs_iff (line 419) | static int
  function handle_client_handshake (line 540) | int
  function free_auth_config (line 650) | void
  function pbs_auth_config_t (line 681) | pbs_auth_config_t *
  function engage_client_auth (line 734) | int
  function engage_server_auth (line 804) | int
  function server_cipher_auth (line 915) | int
  function client_cipher_auth (line 967) | int
  function auth_exec_socket (line 1040) | int
  function auth_with_qsub (line 1169) | int auth_with_qsub(int sock, unsigned short port, char* hostname, char *...

FILE: src/lib/Libifl/conn_table.c
  function add_connection (line 101) | static int
  function _destroy_connection (line 156) | static void
  function destroy_conntable (line 181) | static int
  function destroy_connection (line 213) | int
  function pbs_conn_t (line 255) | static pbs_conn_t *
  function set_conn_errtxt (line 284) | int
  function set_conn_errno (line 363) | int
  function get_conn_errno (line 397) | int
  function set_conn_chan (line 433) | int
  function pbs_tcp_chan_t (line 468) | pbs_tcp_chan_t *
  function pthread_mutex_t (line 505) | pthread_mutex_t *

FILE: src/lib/Libifl/dec_DelJobList.c
  function decode_DIS_DelJobList (line 94) | int

FILE: src/lib/Libifl/dec_reply.c
  type batch_status (line 75) | struct batch_status
  type batch_status (line 78) | struct batch_status
  type batch_status (line 86) | struct batch_status
  type batch_status (line 86) | struct batch_status
  function expand_remaining_subjob (line 123) | static int
  function cmp_sj_name (line 237) | static int
  function decode_DIS_replyCmd (line 283) | int

FILE: src/lib/Libifl/enc_reply.c
  function encode_DIS_reply_inner (line 75) | static int
  function encode_DIS_reply (line 234) | int
  function encode_DIS_replyTPP (line 247) | int

FILE: src/lib/Libifl/entlim_parse.c
  function strip_trailing_white (line 56) | static void
  function etlim_validate_name (line 134) | static int
  function entlim_parse_one (line 171) | int
  function entlim_parse (line 310) | int
  function dummyadd (line 348) | int

FILE: src/lib/Libifl/get_svrport.c
  function get_svrport (line 71) | unsigned int

FILE: src/lib/Libifl/grunt_parse.c
  function parse_resc_equal_string (line 83) | int
  function parse_node_resc_r (line 201) | int
  function parse_node_resc (line 295) | int
  function parse_chunk_r (line 346) | int
  type key_value_pair (line 459) | struct key_value_pair
  function parse_chunk (line 460) | int
  function parse_chunk_make_room_r (line 490) | int
  function parse_chunk_make_room (line 534) | int
  type key_value_pair (line 703) | struct key_value_pair

FILE: src/lib/Libifl/ifl_impl.c
  function pbs_asyrunjob (line 68) | int
  function pbs_asyrunjob_ack (line 88) | int
  function pbs_alterjob (line 109) | int
  function pbs_asyalterjob (line 130) | int
  function pbs_confirmresv (line 151) | int
  function pbs_connect (line 166) | int
  function pbs_connect_extend (line 184) | int
  function pbs_deljob (line 219) | int
  type batch_deljob_status (line 239) | struct batch_deljob_status
  function pbs_disconnect (line 256) | int
  function pbs_holdjob (line 297) | int
  function pbs_loadconf (line 330) | int
  function pbs_manager (line 371) | int
  function pbs_movejob (line 393) | int
  function pbs_msgjob (line 414) | int
  function pbs_orderjob (line 434) | int
  function pbs_rerunjob (line 453) | int
  function pbs_rlsjob (line 474) | int
  function preempt_job_info (line 492) | preempt_job_info *
  function pbs_runjob (line 512) | int
  type attropl (line 533) | struct attropl
  function pbs_sigjob (line 552) | int
  function pbs_statfree (line 567) | void
  function pbs_delstatfree (line 582) | void
  type batch_status (line 602) | struct batch_status
  type attrl (line 603) | struct attrl
  type batch_status (line 622) | struct batch_status
  type attrl (line 623) | struct attrl
  type batch_status (line 642) | struct batch_status
  type attropl (line 643) | struct attropl
  type attrl (line 643) | struct attrl
  type batch_status (line 662) | struct batch_status
  type attrl (line 663) | struct attrl
  type batch_status (line 681) | struct batch_status
  type attrl (line 682) | struct attrl
  type batch_status (line 700) | struct batch_status
  type attrl (line 701) | struct attrl
  type batch_status (line 720) | struct batch_status
  type attrl (line 721) | struct attrl
  type batch_status (line 741) | struct batch_status
  type attrl (line 742) | struct attrl
  type batch_status (line 761) | struct batch_status
  type attrl (line 762) | struct attrl
  type batch_status (line 781) | struct batch_status
  type attrl (line 782) | struct attrl
  type batch_status (line 801) | struct batch_status
  type attrl (line 802) | struct attrl
  type ecl_attribute_errors (line 818) | struct ecl_attribute_errors
  type attropl (line 840) | struct attropl
  type attropl (line 858) | struct attropl
  type attropl (line 877) | struct attropl
  function pbs_delresv (line 895) | int
  function pbs_relnodesjob (line 917) | int
  function pbs_terminate (line 936) | int
  function pbs_register_sched (line 953) | int

FILE: src/lib/Libifl/ifl_pointers.c
  type attrl (line 47) | struct attrl
  type attrl (line 48) | struct attrl
  type batch_deljob_status (line 54) | struct batch_deljob_status
  type attropl (line 60) | struct attropl
  type attropl (line 67) | struct attropl
  type batch_status (line 69) | struct batch_status
  type batch_deljob_status (line 70) | struct batch_deljob_status
  type batch_status (line 71) | struct batch_status
  type attrl (line 71) | struct attrl
  type batch_status (line 72) | struct batch_status
  type attrl (line 72) | struct attrl
  type batch_status (line 73) | struct batch_status
  type attropl (line 73) | struct attropl
  type attrl (line 73) | struct attrl
  type batch_status (line 74) | struct batch_status
  type attrl (line 74) | struct attrl
  type batch_status (line 75) | struct batch_status
  type attrl (line 75) | struct attrl
  type batch_status (line 76) | struct batch_status
  type attrl (line 76) | struct attrl
  type batch_status (line 77) | struct batch_status
  type attrl (line 77) | struct attrl
  type batch_status (line 78) | struct batch_status
  type attrl (line 78) | struct attrl
  type batch_status (line 79) | struct batch_status
  type attrl (line 79) | struct attrl
  type batch_status (line 80) | struct batch_status
  type attrl (line 80) | struct attrl
  type batch_status (line 81) | struct batch_status
  type attrl (line 81) | struct attrl
  type ecl_attribute_errors (line 82) | struct ecl_attribute_errors
  type attropl (line 83) | struct attropl
  type attropl (line 84) | struct attropl
  type attropl (line 85) | struct attropl

FILE: src/lib/Libifl/int_cred.c
  function PBSD_cred (line 77) | int

FILE: src/lib/Libifl/int_hook.c
  function PBSD_hookbuf (line 74) | static int
  function PBSD_copyhookfile (line 136) | int
  function PBSD_delhookfile (line 191) | int

FILE: src/lib/Libifl/int_jcred.c
  function PBSD_jcred (line 77) | int

FILE: src/lib/Libifl/int_manage2.c
  function PBSD_mgr_put (line 76) | int

FILE: src/lib/Libifl/int_manager.c
  function PBSD_manager (line 72) | int

FILE: src/lib/Libifl/int_modify_resv.c
  type attropl (line 64) | struct attropl
  type batch_reply (line 66) | struct batch_reply

FILE: src/lib/Libifl/int_msg2.c
  function PBSD_msg_put (line 71) | int
  function PBSD_py_spawn_put (line 112) | int
  function PBSD_relnodes_put (line 143) | int

FILE: src/lib/Libifl/int_rdrpy.c
  type batch_reply (line 74) | struct batch_reply
  type batch_reply (line 77) | struct batch_reply
  type batch_reply (line 82) | struct batch_reply
  type batch_reply (line 82) | struct batch_reply
  type batch_reply (line 118) | struct batch_reply
  type batch_reply (line 122) | struct batch_reply
  function PBSD_FreeReply (line 167) | void

FILE: src/lib/Libifl/int_sig2.c
  function PBSD_sig_put (line 69) | int

FILE: src/lib/Libifl/int_status.c
  type batch_status (line 73) | struct batch_status
  type attrl (line 74) | struct attrl
  type batch_status (line 103) | struct batch_status
  type batch_status (line 106) | struct batch_status
  type batch_reply (line 107) | struct batch_reply

FILE: src/lib/Libifl/int_status2.c
  function PBSD_status_put (line 71) | int

FILE: src/lib/Libifl/int_submit.c
  function is_compose (line 67) | int
  function get_msgid (line 106) | int
  function is_compose_cmd (line 151) | int
  function PBSD_commit (line 191) | int
  function PBSD_scbuf (line 254) | static int
  function PBSD_jscript (line 319) | int
  function PBSD_jscript_direct (line 363) | int
  function PBSD_jobfile (line 413) | int
  type attropl (line 462) | struct attropl
  type batch_reply (line 464) | struct batch_reply

FILE: src/lib/Libifl/int_submit_resv.c
  type attropl (line 69) | struct attropl
  type batch_reply (line 71) | struct batch_reply

FILE: src/lib/Libifl/int_ucred.c
  function PBSD_ucred (line 79) | int

FILE: src/lib/Libifl/list_link.c
  function insert_link (line 79) | void
  function append_link (line 130) | void
  function delete_link (line 174) | void
  function delete_clear_link (line 194) | void
  function swap_link (line 212) | void
  function is_linked (line 247) | int
  function list_move (line 322) | void

FILE: src/lib/Libifl/pbsD_Preempt_Jobs.c
  function preempt_job_info (line 72) | static preempt_job_info *
  function preempt_job_info (line 133) | preempt_job_info *

FILE: src/lib/Libifl/pbsD_alterjob.c
  type attropl (line 62) | struct attropl
  type attrl (line 63) | struct attrl
  type attropl (line 65) | struct attropl
  type attropl (line 66) | struct attropl
  type attropl (line 71) | struct attropl
  type attropl (line 71) | struct attropl
  type attropl (line 73) | struct attropl
  type attropl (line 73) | struct attropl
  function __free_attropl (line 103) | static void
  function __pbs_alterjob (line 130) | int
  function __pbs_asyalterjob (line 162) | int

FILE: src/lib/Libifl/pbsD_confirmresv.c
  function __pbs_confirmresv (line 67) | int

FILE: src/lib/Libifl/pbsD_connect.c
  type pbs_client_thread_context (line 92) | struct pbs_client_thread_context
  function get_hostsockaddr (line 133) | static int
  function tcp_connect (line 185) | static int

FILE: src/lib/Libifl/pbsD_defschreply.c
  function pbs_defschreply (line 71) | int

FILE: src/lib/Libifl/pbsD_deljob.c
  function __pbs_deljob (line 70) | int

FILE: src/lib/Libifl/pbsD_deljoblist.c
  function free_svrjobidlist (line 66) | void
  function append_jobid (line 93) | int
  function add_jid_to_list_by_name (line 137) | int
  type batch_deljob_status (line 185) | struct batch_deljob_status
  type batch_reply (line 189) | struct batch_reply
  type batch_deljob_status (line 190) | struct batch_deljob_status

FILE: src/lib/Libifl/pbsD_delresv.c
  function __pbs_delresv (line 67) | int

FILE: src/lib/Libifl/pbsD_holdjob.c
  function __pbs_holdjob (line 68) | int

FILE: src/lib/Libifl/pbsD_locjob.c
  type batch_reply (line 70) | struct batch_reply

FILE: src/lib/Libifl/pbsD_manager.c
  function __pbs_manager (line 66) | int

FILE: src/lib/Libifl/pbsD_modify_resv.c
  type attropl (line 66) | struct attropl
  type attropl (line 68) | struct attropl

FILE: src/lib/Libifl/pbsD_movejob.c
  function __pbs_movejob (line 66) | int

FILE: src/lib/Libifl/pbsD_msgjob.c
  function __pbs_msgjob (line 70) | int
  function pbs_py_spawn (line 130) | int
  function __pbs_relnodesjob (line 200) | int

FILE: src/lib/Libifl/pbsD_orderjo.c
  function __pbs_orderjob (line 66) | int

FILE: src/lib/Libifl/pbsD_rerunjo.c
  function __pbs_rerunjob (line 67) | int

FILE: src/lib/Libifl/pbsD_resc.c
  type node_pool (line 53) | struct node_pool {
  function free_node_pool (line 70) | void
  function encode_DIS_Resc (line 96) | static int
  function PBS_resc (line 139) | static int
  function pbs_rescquery (line 182) | int
  function pbs_rescreserve (line 269) | int
  function pbs_rescrelease (line 346) | int
  function totpool (line 403) | int
  function usepool (line 464) | int

FILE: src/lib/Libifl/pbsD_rlsjob.c
  function __pbs_rlsjob (line 68) | int

FILE: src/lib/Libifl/pbsD_runjob.c
  function __runjob_inner (line 65) | static int
  function __pbs_asyrunjob (line 140) | int
  function __pbs_asyrunjob_ack (line 162) | int
  function __pbs_runjob (line 183) | int

FILE: src/lib/Libifl/pbsD_selectj.c
  type attropl (line 76) | struct attropl
  type batch_status (line 124) | struct batch_status
  type attropl (line 125) | struct attropl
  type attrl (line 125) | struct attrl
  type batch_status (line 127) | struct batch_status
  function PBSD_select_put (line 168) | int
  type batch_reply (line 214) | struct batch_reply
  type brp_select (line 216) | struct brp_select

FILE: src/lib/Libifl/pbsD_sigjob.c
  function __pbs_sigjob (line 65) | int

FILE: src/lib/Libifl/pbsD_stagein.c
  function pbs_stagein (line 67) | int

FILE: src/lib/Libifl/pbsD_stathook.c
  type batch_status (line 65) | struct batch_status
  type attrl (line 66) | struct attrl
  type batch_status (line 68) | struct batch_status
  type attropl (line 90) | struct attropl

FILE: src/lib/Libifl/pbsD_stathost.c
  type host_list (line 54) | struct host_list {
  type consumable (line 61) | struct consumable {
  type attrl (line 78) | struct attrl
  function add_consumable_entry (line 111) | static void
  function build_host_list (line 172) | static void
  function sum_a_resource (line 250) | static void
  function sum_resources (line 325) | static void
  type attr_names (line 380) | struct attr_names {
  type batch_status (line 436) | struct batch_status
  type batch_status (line 437) | struct batch_status
  type consumable (line 439) | struct consumable
  type attrl (line 444) | struct attrl
  type attrl (line 445) | struct attrl
  type attrl (line 446) | struct attrl
  type attr_names (line 535) | struct attr_names {
  function build_collective (line 584) | static void
  type batch_status (line 783) | struct batch_status
  type batch_status (line 784) | struct batch_status
  type batch_status (line 786) | struct batch_status
  type host_list (line 787) | struct host_list
  type consumable (line 789) | struct consumable
  type batch_status (line 793) | struct batch_status
  type batch_status (line 794) | struct batch_status
  type batch_status (line 797) | struct batch_status
  type batch_status (line 890) | struct batch_status
  type attrl (line 891) | struct attrl
  type batch_status (line 893) | struct batch_status
  type batch_status (line 894) | struct batch_status
  type host_list (line 898) | struct host_list
  type consumable (line 899) | struct consumable
  type pbs_client_thread_connect_context (line 902) | struct pbs_client_thread_connect_context

FILE: src/lib/Libifl/pbsD_statjob.c
  type batch_status (line 65) | struct batch_status
  type attrl (line 66) | struct attrl
  type batch_status (line 68) | struct batch_status
  type attropl (line 76) | struct attropl

FILE: src/lib/Libifl/pbsD_statnode.c
  type batch_status (line 66) | struct batch_status
  type attrl (line 67) | struct attrl
  type batch_status (line 86) | struct batch_status
  type attrl (line 87) | struct attrl
  type batch_status (line 90) | struct batch_status
  type attropl (line 98) | struct attropl

FILE: src/lib/Libifl/pbsD_statque.c
  type batch_status (line 65) | struct batch_status
  type attrl (line 66) | struct attrl
  type batch_status (line 68) | struct batch_status
  type attropl (line 76) | struct attropl

FILE: src/lib/Libifl/pbsD_statresv.c
  type batch_status (line 66) | struct batch_status
  type attrl (line 67) | struct attrl
  type batch_status (line 69) | struct batch_status
  type attropl (line 77) | struct attropl

FILE: src/lib/Libifl/pbsD_statrsc.c
  type batch_status (line 66) | struct batch_status
  type attrl (line 67) | struct attrl
  type batch_status (line 69) | struct batch_status
  type attropl (line 78) | struct attropl

FILE: src/lib/Libifl/pbsD_statsched.c
  type batch_status (line 65) | struct batch_status
  type attrl (line 66) | struct attrl
  type batch_status (line 68) | struct batch_status
  type attropl (line 77) | struct attropl

FILE: src/lib/Libifl/pbsD_statsrv.c
  type batch_status (line 65) | struct batch_status
  type attrl (line 66) | struct attrl
  type batch_status (line 68) | struct batch_status
  type attropl (line 77) | struct attropl

FILE: src/lib/Libifl/pbsD_submit.c
  type cred_info (line 61) | struct cred_info {
  type attropl (line 86) | struct attropl
  type pbs_client_thread_context (line 91) | struct pbs_client_thread_context
  type cred_info (line 92) | struct cred_info
  type pbs_client_thread_context (line 103) | struct pbs_client_thread_context
  type cred_info (line 111) | struct cred_info
  type cred_info (line 119) | struct cred_info
  type attropl (line 156) | struct attropl
  type attropl (line 158) | struct attropl
  type pbs_client_thread_context (line 161) | struct pbs_client_thread_context
  type cred_info (line 162) | struct cred_info
  type pbs_client_thread_context (line 170) | struct pbs_client_thread_context
  type cred_info (line 199) | struct cred_info

FILE: src/lib/Libifl/pbsD_submit_resv.c
  type attropl (line 67) | struct attropl
  type attropl (line 69) | struct attropl

FILE: src/lib/Libifl/pbsD_termin.c
  function __pbs_terminate (line 65) | int

FILE: src/lib/Libifl/pbs_delstatfree.c
  function __pbs_delstatfree (line 61) | void

FILE: src/lib/Libifl/pbs_get_attribute_errors.c
  type ecl_attribute_errors (line 63) | struct ecl_attribute_errors
  type ecl_attribute_errors (line 66) | struct ecl_attribute_errors
  type pbs_client_thread_context (line 67) | struct pbs_client_thread_context

FILE: src/lib/Libifl/pbs_geterrmg.c
  type pbs_client_thread_connect_context (line 68) | struct pbs_client_thread_connect_context
  type pbs_client_thread_context (line 69) | struct pbs_client_thread_context

FILE: src/lib/Libifl/pbs_geterrno.c
  function pbs_geterrno (line 58) | int

FILE: src/lib/Libifl/pbs_loadconf.c
  type pbs_config (line 79) | struct pbs_config
  function __pbs_loadconf (line 291) | int
  type stat (line 1166) | struct stat

FILE: src/lib/Libifl/pbs_quote_parse.c
  function pbs_quote_parse (line 78) | int
  function pbs_prt_parse_err (line 229) | void

FILE: src/lib/Libifl/pbs_statfree.c
  function __pbs_statfree (line 61) | void
  function pbs_statfree_single (line 79) | void

FILE: src/lib/Libifl/rm.c
  type out (line 81) | struct out {
  type out (line 88) | struct out
  function addrm (line 100) | static int
  function openrm (line 130) | int
  function delrm (line 200) | static int
  type out (line 234) | struct out
  type out (line 237) | struct out
  function startcom (line 260) | static int
  function simplecom (line 293) | static int
  function simpleget (line 328) | static int
  function closerm (line 377) | int
  function downrm (line 400) | int
  function configrm (line 424) | int
  function doreq (line 485) | static int
  function addreq (line 527) | int
  function allreq (line 554) | int
  type out (line 601) | struct out
  function flushreq (line 664) | int
  function activereq (line 720) | int
  function fullresp (line 783) | void

FILE: src/lib/Libifl/tcp_dis.c
  function pbs_tcp_chan_t (line 76) | static pbs_tcp_chan_t *
  function tcp_recv (line 102) | static int
  type pollfd (line 206) | struct pollfd
  function DIS_tcp_funcs (line 274) | void

FILE: src/lib/Libifl/tm.c
  type tm_errcode (line 118) | struct tm_errcode {
  type tm_errcode (line 138) | struct tm_errcode
  type event_info (line 149) | typedef struct event_info {
  function event_info (line 164) | static event_info *
  function del_event (line 185) | static void
  function tm_event_t (line 239) | static tm_event_t
  function add_event (line 273) | static void
  type task_info (line 302) | typedef struct task_info {
  function task_info (line 320) | static task_info *
  function tm_task_id (line 346) | static tm_task_id
  function localmom (line 429) | static int
  function startcom (line 532) | static int
  function tm_init (line 582) | int
  function tm_attach (line 667) | int
  function tm_nodeinfo (line 754) | int
  function tm_spawn (line 795) | int
  function tm_kill (line 858) | int
  function tm_obit (line 895) | int
  type taskhold (line 916) | struct taskhold {
  function tm_taskinfo (line 939) | int
  function tm_atnode (line 978) | int
  type reschold (line 991) | struct reschold {
  function tm_rescinfo (line 1013) | int
  function tm_publish (line 1055) | int
  type infohold (line 1074) | struct infohold {
  function tm_subscribe (line 1098) | int
  function tm_finalize (line 1144) | int
  function tm_notify (line 1179) | int
  function tm_alloc (line 1199) | int
  function tm_dealloc (line 1219) | int
  function tm_create_event (line 1238) | int
  function tm_destroy_event (line 1257) | int
  function tm_register (line 1278) | int
  function tm_poll (line 1313) | int

FILE: src/lib/Libifl/xml_encode_decode.c
  function init_escapechars_maxarg (line 87) | static void
  function encode_argument (line 151) | static int
  function decode_argument (line 194) | static int
  function decode_xml_arg_list (line 367) | extern int
  function decode_xml_arg_list_str (line 489) | extern int

FILE: src/lib/Libjson/cJSON/pbs_cjson.c
  function cjson_insert_item (line 54) | static void
  function json_data (line 73) | json_data *
  function json_data (line 88) | json_data *
  function pbs_json_insert_item (line 103) | void
  function pbs_json_insert_string (line 124) | int
  function pbs_json_insert_number (line 148) | int
  function pbs_json_insert_parsed (line 173) | int
  function pbs_json_print (line 214) | int
  function pbs_json_delete (line 234) | void

FILE: src/lib/Liblicensing/license_client.c
  function lic_init (line 40) | int
  function lic_obtainable (line 46) | int
  function lic_get (line 52) | int
  function checkkey (line 65) | int
  function lic_close (line 71) | void
  function lic_needed_for_node (line 83) | int
  function process_topology_info (line 89) | int

FILE: src/lib/Liblog/chk_file_sec.c
  function teststat (line 81) | static int
  function teststat (line 118) | static int
  function tempstat (line 168) | static int
  function chk_file_sec (line 233) | int
  function chk_file_sec_user (line 263) | int
  function tmp_file_sec (line 389) | int
  function tmp_file_sec_user (line 420) | int
  type stat (line 541) | struct stat
  type stat (line 563) | struct stat
  type stat (line 593) | struct stat

FILE: src/lib/Liblog/log_event.c
  function will_log_event (line 93) | int
  function log_event (line 122) | void
  function do_log_eventf (line 143) | void
  function log_eventf (line 186) | void

FILE: src/lib/Liblog/pbs_log.c
  type ms_time (line 92) | typedef struct {
  function set_log_conf (line 142) | void
  function gettimeofday (line 182) | int
  function set_msgdaemonname (line 215) | int
  function set_logfile (line 231) | void
  type tm (line 255) | struct tm
  type tm (line 257) | struct tm
  function log_mutex_lock (line 289) | static int
  function log_mutex_unlock (line 313) | static int
  function log_pre_fork_handler (line 330) | static void
  function log_parent_post_fork_handler (line 341) | static void
  function log_child_post_fork_handler (line 352) | static void
  function log_init (line 369) | static void
  function log_add_debug_info (line 411) | static void
  function log_supported_auth_methods (line 444) | void
  function log_add_if_info (line 468) | static void
  function log_open (line 516) | int
  function log_open_main (line 549) | int

FILE: src/lib/Liblog/pbs_messages.c
  type pbs_err_to_txt (line 441) | struct pbs_err_to_txt

FILE: src/lib/Liblog/setup_env.c
  function setup_env (line 73) | int

FILE: src/lib/Libnet/get_hostaddr.c
  function pbs_net_t (line 84) | pbs_net_t
  function compare_short_hostname (line 146) | int
  function comp_svraddr (line 197) | int

FILE: src/lib/Libnet/hnls.c
  type sockaddr_in (line 78) | struct sockaddr_in
  function free_if_hostnames (line 95) | void
  function get_sa_family (line 124) | void
  type sockaddr (line 159) | struct sockaddr
  type hostent (line 166) | struct hostent
  type sockaddr_in (line 167) | struct sockaddr_in
  type sockaddr_in6 (line 168) | struct sockaddr_in6
  type sockaddr_in (line 181) | struct sockaddr_in
  type sockaddr_in (line 191) | struct sockaddr_in
  type sockaddr_in6 (line 201) | struct sockaddr_in6
  type sockaddr_in6 (line 211) | struct sockaddr_in6
  type log_net_info (line 258) | struct log_net_info
  type log_net_info (line 261) | struct log_net_info
  type log_net_info (line 262) | struct log_net_info
  type log_net_info (line 263) | struct log_net_info
  type ifaddrs (line 269) | struct ifaddrs
  type log_net_info (line 283) | struct log_net_info
  type log_net_info (line 283) | struct log_net_info
  type sockaddr (line 374) | struct sockaddr
  type log_net_info (line 377) | struct log_net_info
  type log_net_info (line 377) | struct log_net_info
  function free_if_info (line 454) | void
  type addrinfo (line 494) | struct addrinfo
  type addrinfo (line 495) | struct addrinfo
  type addrinfo (line 505) | struct addrinfo
  type sockaddr_in (line 520) | struct sockaddr_in
  type sockaddr_in (line 520) | struct sockaddr_in
  type ifaddrs (line 590) | struct ifaddrs
  type sockaddr_in (line 625) | struct sockaddr_in

FILE: src/lib/Libnet/net_client.c
  function engage_authentication (line 88) | static int
  function client_to_svr (line 169) | int
  type sockaddr_in (line 214) | struct sockaddr_in
  type linger (line 222) | struct linger
  type timeval (line 223) | struct timeval
  type pollfd (line 226) | struct pollfd
  type sockaddr_in (line 247) | struct sockaddr_in
  type sockaddr (line 282) | struct sockaddr
  type sockaddr (line 333) | struct sockaddr
  function set_nodelay (line 449) | int

FILE: src/lib/Libnet/net_server.c
  function conn_find_usable_index (line 131) | static int
  function conn_find_actual_index (line 175) | static int
  function conn_t (line 205) | conn_t *
  function connection_init (line 220) | void
  function init_network (line 259) | int
  function init_network_add (line 321) | int
  function connection_idlecheck (line 381) | void
  function engage_authentication (line 432) | static int
  function process_socket (line 479) | static int
  function wait_request (line 539) | int
  function accept_conn (line 652) | static void
  function conn_t (line 714) | conn_t *
  function set_conn_as_priority (line 774) | int
  function add_conn_data (line 807) | int
  function close_conn (line 867) | void
  function cleanup_conn (line 930) | static void
  function net_close (line 984) | void
  function pbs_net_t (line 1022) | pbs_net_t
  function get_connecthost (line 1045) | int
  function init_poll_context (line 1109) | static int

FILE: src/lib/Libnet/net_set_clse.c
  function net_add_close_func (line 62) | void

FILE: src/lib/Libnet/port_forwarding.c
  function port_forwarder (line 103) | void
  function connect_local_xsocket (line 402) | int
  function x11_connect_display (line 440) | int
  function set_nonblocking (line 560) | int

FILE: src/lib/Libpython/common_python_utils.c
  function pbs_python_write_object_to_log (line 70) | void
  function pbs_python_modify_syspath (line 117) | int
  function pbs_python_write_error_to_log (line 215) | void
  function pbs_python_object_set_attr_string_value (line 292) | int
  function pbs_python_object_set_attr_integral_value (line 349) | int
  function pbs_python_object_get_attr_integral_value (line 385) | int
  function pbs_python_dict_set_item_string_value (line 533) | int
  function pbs_python_dict_set_item_integral_value (line 618) | int
  function PyObject (line 652) | PyObject *
  function PyObject (line 733) | PyObject *
  function PyObject (line 820) | PyObject *

FILE: src/lib/Libpython/module_pbs_v1.c
  function _pv1mod_insert_str_constants (line 276) | static int
  function _pv1mod_insert_int_constants (line 302) | static int
  type PyModuleDef (line 709) | struct PyModuleDef
  function PyObject (line 731) | PyObject *
  function PyObject (line 782) | PyObject *
  function PyMODINIT_FUNC (line 793) | PyMODINIT_FUNC

FILE: src/lib/Libpython/pbs_python_external.c
  type _inittab (line 69) | struct _inittab
  function initialize_python_config (line 96) | static int
  function pbs_python_ext_start_interpreter (line 160) | int
  function pbs_python_ext_shutdown_interpreter (line 356) | void
  function pbs_python_ext_quick_start_interpreter (line 402) | void
  function pbs_python_ext_quick_shutdown_interpreter (line 501) | void
  function pbs_python_ext_free_global_dict (line 514) | void
  function pbs_python_ext_free_code_obj (line 527) | void
  function pbs_python_ext_free_python_script (line 538) | void
  function pbs_python_ext_alloc_python_script (line 558) | int
  type python_interpreter_data (line 620) | struct python_interpreter_data
  function pbs_python_check_and_compile_script (line 692) | int
  function pbs_python_run_code_in_namespace (line 775) | int
  function PyObject (line 927) | static PyObject *

FILE: src/lib/Libpython/pbs_python_import_types.c
  function ppsvr_prepare_all_types (line 69) | int
  type PyModuleDef (line 93) | struct PyModuleDef
  function PyObject (line 112) | PyObject *

FILE: src/lib/Libpython/pbs_python_svr_external.c
  function pbs_python_svr_initialize_interpreter_data (line 133) | void
  function pbs_python_svr_destroy_interpreter_data (line 154) | void
  function pbs_python_set_mode (line 179) | void
  function pbs_python_event_mark_readonly (line 197) | int
  function pbs_python_event_set (line 226) | int
  function pbs_python_event_to_request (line 274) | int
  function pbs_python_event_jobresc_clear_hookset (line 343) | int
  function pbs_python_event_set_attrval (line 386) | int
  function pbs_python_event_accept (line 417) | void
  function pbs_python_event_reject (line 430) | void
  function pbs_python_event_get_accept_flag (line 459) | int
  function pbs_python_event_param_mod_allow (line 475) | void
  function pbs_python_event_param_mod_disallow (line 489) | void
  function pbs_python_event_param_get_mod_flag (line 503) | int
  function pbs_python_has_vnode_set (line 527) | int
  function pbs_python_do_vnode_set (line 544) | void
  function pbs_python_set_interrupt (line 559) | void
  function hook_input_param_init (line 577) | void
  function hook_output_param_init (line 605) | void

FILE: src/lib/Libpython/pbs_python_svr_internal.c
  type python_interpreter_data (line 94) | struct python_interpreter_data
  type vnode_sharing (line 103) | enum vnode_sharing
  type vnode_sharing (line 107) | enum vnode_sharing
  type pbs_python_types_entry (line 125) | typedef struct _pbs_python_types_entry {
  type pbs_iter_item (line 196) | typedef struct _pbs_iter_item {
  type vnode_set_req (line 205) | typedef struct _vnode_set_req {
  type pbs_resource_value (line 227) | typedef struct _pbs_resource_value {
  type hook_debug_t (line 297) | typedef struct hook_debug_t {
  type server_jobs_t (line 313) | typedef struct server_jobs_t {
  type server_queues_t (line 319) | typedef struct server_queues_t {
  type server_resvs_t (line 325) | typedef struct server_resvs_t {
  type server_vnodes_t (line 331) | typedef struct server_vnodes_t {
  function print_svrattrl_list (line 348) | void
  function pbs_python_setup_namespace_dict (line 396) | int
  function _pps_getset_descriptor_object (line 440) | static int
  function PyObject (line 563) | static PyObject *
  function PyObject (line 616) | static PyObject *
  function pbs_python_free_py_types_array (line 681) | void
  function PyObject (line 708) | PyObject *
  function pbs_python_setup_vnode_class_attributes (line 738) | int
  function pbs_python_setup_resv_class_attributes (line 822) | int
  function pbs_python_setup_server_class_attributes (line 908) | int
  function pbs_python_setup_job_class_attributes (line 994) | int
  function pbs_python_setup_queue_class_attributes (line 1081) | int
  function pbs_python_setup_python_resource_type (line 1168) | int
  function pbs_python_clear_types_table (line 1230) | static void
  function pbs_python_setup_types_table (line 1256) | static int
  function pbs_python_unload_python_types (line 1295) | void
  function pbs_python_load_python_types (line 1333) | int
  function set_in_python (line 1431) | static int
  function set_entity_resource_or_return_value (line 1477) | static int
  function set_resource_or_return_value (line 1842) | static int
  function PyObject (line 1933) | PyObject *
  function pbs_python_populate_attributes_to_python_class (line 1988) | int
  function pbs_python_populate_python_class_from_svrattrl (line 2244) | int
  function duration_to_secs (line 2341) | static long
  function varlist_same (line 2390) | int
  function load_cached_resource_value (line 2495) | static int
  function pbs_python_populate_svrattrl_from_python_class (line 2585) | int
  function pbs_python_mark_object_readonly (line 3075) | int
  function PyObject (line 3218) | static PyObject *
  function PyObject (line 3399) | static PyObject *
  function PyObject (line 3499) | static PyObject *
  function PyObject (line 3653) | static PyObject *
  function PyObject (line 3790) | static PyObject *
  function PyObject (line 3915) | PyObject *
  function _pbs_python_event_mark_readonly (line 3960) | int
  function _pbs_python_set_mode (line 3987) | void
  function PyObject (line 4030) | static PyObject *
  function PyObject (line 4267) | static PyObject *
  function PyObject (line 4506) | static PyObject *
  function PyObject (line 4722) | static PyObject *
  function PyObject (line 4786) | static PyObject *
  function py_strlist_to_svrattrl (line 4854) | static int
  function py_strlist_to_reliable_job_node_list (line 4893) | static int
  function PyObject (line 4968) | static PyObject *
  function pbs_python_clear_attributes (line 5005) | void
  function _pbs_python_event_set (line 5102) | int
  function populate_svrattrl_from_vnodelist_param (line 6582) | static int
  function _pbs_python_event_to_request (line 6700) | int
  function _pbs_python_event_accept (line 7255) | void
  function _pbs_python_event_reject (line 7266) | void
  function _pbs_python_event_get_accept_flag (line 7294) | int
  function _pbs_python_event_param_mod_allow (line 7305) | void
  function _pbs_python_event_param_mod_disallow (line 7317) | void
  function _pbs_python_event_param_get_mod_flag (line 7329) | int
  function _pbs_python_event_set_attrval (line 7349) | int
  function PyObject (line 7456) | PyObject *
  function PyObject (line 7511) | PyObject *
  function PyObject (line 7566) | PyObject *
  function PyObject (line 7618) | PyObject *
  function PyObject (line 7680) | PyObject *
  function PyObject (line 7708) | PyObject *
  function PyObject (line 7733) | PyObject *
  function PyObject (line 7780) | PyObject *
  function PyObject (line 8410) | PyObject *
  function PyObject (line 8427) | PyObject *
  function PyObject (line 8460) | PyObject *
  function PyObject (line 8477) | PyObject *
  function PyObject (line 8540) | PyObject *
  function is_job_input_valid (line 8571) | static int
  function is_resv_input_valid (line 8618) | static int
  function PyObject (line 8680) | PyObject *
  function PyObject (line 8916) | PyObject *
  function PyObject (line 8967) | PyObject *
  type pbsnode (line 9255) | struct pbsnode
  type pbsnode (line 9329) | struct pbsnode
  type pbsnode (line 9337) | struct pbsnode
  type pbsnode (line 9624) | struct pbsnode

FILE: src/lib/Libpython/pbs_python_svr_size_type.c
  type size_value (line 80) | struct size_value
  type batch_op (line 81) | enum batch_op
  type size_value (line 82) | struct size_value
  type size_value (line 83) | struct size_value
  type size_value (line 83) | struct size_value
  type size_value (line 84) | struct size_value
  type size_value (line 84) | struct size_value
  type PPSVR_Size_Object (line 90) | typedef struct {
  type size_value (line 96) | struct size_value
  function _pps_check_for_negative_number (line 120) | static int
  function _pps_size_make_str_value (line 158) | static int
  function _pps_size_from_long_or_int (line 186) | static int
  function _pps_size_from_string (line 242) | static int
  function PyObject (line 275) | static PyObject *
  function pps_size_init (line 300) | static int
  function pps_size_dealloc (line 361) | static void
  function PyObject (line 384) | static PyObject *
  function PyObject (line 408) | static PyObject *
  function PyObject (line 475) | static PyObject *
  function PyObject (line 526) | static PyObject *
  function u_Long (line 575) | u_Long
  function PyObject (line 702) | PyObject *

FILE: src/lib/Libpython/shared_python_utils.c
  function get_py_homepath (line 63) | int
  function get_py_progname (line 98) | int
  function set_py_progname (line 138) | int

FILE: src/lib/Libsec/cs_standard.c
  function sec_cslog (line 98) | void
  function CS_read (line 137) | int
  function CS_write (line 161) | int
  function CS_client_auth (line 187) | int
  function CS_server_auth (line 211) | int
  function CS_close_socket (line 237) | int
  function CS_close_app (line 260) | int
  function CS_client_init (line 278) | int
  function CS_server_init (line 297) | int
  function CS_verify (line 317) | int
  function CS_remap_ctx (line 349) | int

FILE: src/lib/Libsite/site_allow_u.c
  function site_allow_u (line 71) | int

FILE: src/lib/Libsite/site_alt_rte.c
  type pbs_queue (line 55) | struct pbs_queue
  function site_alt_router (line 70) | int

FILE: src/lib/Libsite/site_check_u.c
  function site_check_user_map (line 92) | int
  function site_acl_check (line 172) | int

FILE: src/lib/Libsite/site_mom_chu.c
  function site_mom_chkuser (line 75) | int

FILE: src/lib/Libsite/site_mom_ckp.c
  function site_mom_postchk (line 80) | int
  function site_mom_prerst (line 99) | int

FILE: src/lib/Libsite/site_mom_jst.c
  function site_job_setup (line 71) | int

FILE: src/lib/Libtpp/tpp_client.c
  type tpp_config (line 125) | struct tpp_config
  type mcast_data_t (line 133) | typedef struct {
  type stream_t (line 147) | typedef struct {
  type stream_slot_t (line 180) | typedef struct {
  type strm_action_info_t (line 197) | typedef struct {
  function stream_t (line 273) | static stream_t *
  function stream_t (line 312) | static stream_t *
  function tpp_set_app_net_handler (line 361) | void
  function leaf_send_ctl_join (line 368) | static int
  function leaf_post_connect_handler (line 445) | static int
  function connect_router (line 537) | static int
  function tpp_init (line 586) | int
  function tpp_eom (line 725) | int
  function tpp_open (line 775) | int
  function tpp_router_t (line 857) | static tpp_router_t *
  function tpp_send (line 905) | int
  function tpp_poll (line 994) | int
  function tpp_recv (line 1032) | int
  function stream_t (line 1107) | static stream_t *
  type sockaddr_in (line 1224) | struct sockaddr_in
  type sockaddr_in (line 1228) | struct sockaddr_in
  type sockaddr_in (line 1256) | struct sockaddr_in
  type sockaddr_in (line 1260) | struct sockaddr_in
  function tpp_shutdown (line 1286) | void
  function tpp_terminate (line 1334) | void
  function tpp_ready_fds (line 1385) | int
  function tpp_set_user_data (line 1525) | int
  function tpp_add_close_func (line 1562) | void
  function tpp_close (line 1597) | int
  function tpp_mcast_open (line 1648) | int
  function tpp_mcast_add_strm (line 1683) | int
  function tpp_mcast_notify_members (line 1788) | static void
  function tpp_mcast_send (line 1833) | int
  function tpp_mcast_close (line 1973) | int
  function queue_strm_close (line 2010) | static void
  function queue_strm_free (line 2078) | static void
  function send_app_strm_close (line 2132) | static int
  function stream_t (line 2174) | static stream_t *
  function act_strm (line 2205) | static void
  function leaf_timer_handler (line 2253) | static int
  function time_t (line 2273) | time_t
  function send_pkt_to_app (line 2330) | static int
  function send_spl_packet (line 2393) | static int
  function free_stream_resources (line 2434) | static void
  function free_stream (line 2467) | static void
  function leaf_pkt_presend_handler (line 2551) | static int
  function stream_t (line 2622) | static stream_t *
  function leaf_pkt_handler (line 2677) | static int
  function leaf_pkt_handler_inner (line 2717) | static int
  function leaf_close_handler (line 2975) | static int
  function send_to_router (line 3075) | static int

FILE: src/lib/Libtpp/tpp_em.c
  function tpp_em_wait (line 99) | int
  function tpp_em_destroy (line 172) | void
  function tpp_em_add_fd (line 203) | int
  function tpp_em_mod_fd (line 246) | int
  function tpp_em_del_fd (line 288) | int
  function tpp_em_pwait (line 332) | int
  function tpp_em_pwait (line 340) | int
  type pollfd (line 388) | struct pollfd
  function tpp_em_destroy (line 414) | void
  function tpp_em_add_fd (line 441) | int
  function tpp_em_mod_fd (line 487) | int
  function tpp_em_del_fd (line 517) | int
  function tpp_em_pwait (line 546) | int
  function tpp_em_destroy (line 649) | void
  function tpp_em_add_fd (line 675) | int
  function tpp_em_mod_fd (line 714) | int
  function tpp_em_del_fd (line 756) | int
  function tpp_em_pwait (line 790) | int
  function tpp_em_wait_win (line 844) | int
  function tpp_mbox_init (line 926) | int
  function tpp_mbox_getfd (line 984) | int
  function tpp_mbox_destroy (line 1006) | void
  function tpp_mbox_monitor (line 1038) | int
  function tpp_mbox_read (line 1069) | int
  function tpp_mbox_clear (line 1143) | int
  function tpp_mbox_post (line 1192) | int

FILE: src/lib/Libtpp/tpp_internal.h
  type sockaddr (line 89) | struct sockaddr
  type sockaddr (line 90) | struct sockaddr
  type sockaddr (line 91) | struct sockaddr
  type timeval (line 94) | struct timeval
  type tpp_addr_t (line 131) | typedef struct {
  type tpp_chunk_t (line 137) | typedef struct {
  type tpp_packet_t (line 148) | typedef struct {
  type tpp_encrypt_hdr_t (line 155) | typedef struct {
  type tpp_auth_pkt_hdr_t (line 163) | typedef struct {
  type tpp_join_pkt_hdr_t (line 175) | typedef struct {
  type tpp_leave_pkt_hdr_t (line 188) | typedef struct {
  type tpp_ctl_pkt_hdr_t (line 200) | typedef struct {
  type tpp_data_pkt_hdr_t (line 213) | typedef struct {
  type tpp_mcast_pkt_hdr_t (line 231) | typedef struct {
  type tpp_mcast_pkt_info_t (line 247) | typedef struct {
  type TPP_MSG_TYPES (line 263) | enum TPP_MSG_TYPES {
  type tpp_context_t (line 323) | typedef struct {
  type tpp_router_t (line 331) | typedef struct {
  type tpp_leaf_t (line 346) | typedef struct {
  type tpp_que_elem (line 359) | struct tpp_que_elem {
  type tpp_que_elem_t (line 364) | typedef struct tpp_que_elem tpp_que_elem_t;
  type tpp_que_t (line 367) | typedef struct {
  type tpp_cmd_t (line 376) | typedef struct {
  type tpp_mbox_t (line 390) | typedef struct {
  type tpp_tls_t (line 412) | typedef struct {
  type conn_auth_t (line 417) | typedef struct {
  type tpp_config (line 429) | struct tpp_config
  type sockaddr_in (line 447) | struct sockaddr_in
  type tpp_config (line 456) | struct tpp_config
  type tpp_config (line 496) | struct tpp_config
  type sockaddr (line 530) | struct sockaddr
  type poll_context_t (line 548) | typedef struct {
  type epoll_context_t (line 557) | typedef struct {
  type pollset_context_t (line 566) | typedef struct {
  type sel_context_t (line 574) | typedef struct {
  type devpoll_context_t (line 588) | typedef struct {

FILE: src/lib/Libtpp/tpp_platform.c
  function tpp_pipe_cr (line 83) | int
  function tpp_pipe_read (line 166) | int
  function tpp_pipe_write (line 195) | int
  function tpp_pipe_close (line 222) | int
  function tpp_sock_socket (line 234) | int
  function tpp_sock_listen (line 279) | int
  function tpp_sock_accept (line 295) | int
  function tpp_sock_bind (line 312) | int
  function tpp_sock_connect (line 328) | int
  function tpp_sock_recv (line 344) | int
  function tpp_sock_send (line 361) | int
  function tpp_sock_select (line 378) | int
  function tpp_sock_close (line 395) | int
  function tpp_sock_getsockopt (line 411) | int
  function tpp_sock_setsockopt (line 427) | int
  function tr_2_errno (line 451) | int
  function tpp_sock_layer_init (line 500) | int
  function tpp_get_nfiles (line 524) | int
  function set_pipe_disposition (line 545) | int
  function tpp_sock_layer_init (line 568) | int
  function tpp_get_nfiles (line 586) | int
  function set_pipe_disposition (line 615) | int
  function tpp_sock_resolve_ip (line 663) | int
  function tpp_addr_t (line 719) | tpp_addr_t *
  function tpp_sock_attempt_connection (line 837) | int
  function tpp_invalidate_thrd_handle (line 886) | void
  function tpp_is_valid_thrd (line 913) | int

FILE: src/lib/Libtpp/tpp_router.c
  type tpp_config (line 86) | struct tpp_config
  function tpp_router_t (line 119) | static tpp_router_t *
  function log_noroute (line 182) | void
  function send_leaves_to_router (line 213) | static int
  function broadcast_to_my_routers (line 303) | static int
  function broadcast_to_my_leaves (line 379) | static int
  function router_send_ctl_join (line 443) | static int
  function router_post_connect_handler (line 518) | static int
  function router_close_handler_inner (line 618) | static int
  function router_close_handler (line 908) | static int
  function router_timer_handler (line 952) | static int
  function router_pkt_presend_handler (line 1011) | static int
  function router_pkt_handler (line 1051) | static int
  function router_pkt_handler_inner (line 1083) | static int
  function tpp_router_t (line 1943) | static tpp_router_t *
  function tpp_router_t (line 1993) | static tpp_router_t *
  function add_route_to_leaf (line 2035) | static int
  function leaf_get_router_index (line 2096) | static int
  function tpp_init_router (line 2132) | int
  function tpp_router_shutdown (line 2231) | void
  function tpp_router_terminate (line 2256) | void

FILE: src/lib/Libtpp/tpp_transport.c
  type conn_event_t (line 90) | typedef struct {
  type thrd_data_t (line 105) | typedef struct {
  type tpp_config (line 159) | struct tpp_config
  type conn_param_t (line 165) | typedef struct {
  type phy_conn_t (line 177) | typedef struct {
  type conns_array_type_t (line 196) | typedef struct {
  function enque_deferred_event (line 234) | static void
  function trigger_deferred_events (line 287) | static int
  function tpp_transport_set_conn_ctx (line 387) | void
  function tpp_cr_server_socket (line 413) | int
  function tpp_transport_init (line 478) | int
  function tpp_transport_set_handlers (line 671) | void
  function phy_conn_t (line 706) | static phy_conn_t *
  function tpp_transport_connect_spl (line 800) | int
  function tpp_transport_connect (line 883) | int
  function phy_conn_t (line 911) | static phy_conn_t *
  function tpp_post_cmd (line 950) | static int
  function tpp_transport_wakeup_thrd (line 1000) | int
  function tpp_transport_vsend (line 1034) | int
  function tpp_transport_isresvport (line 1086) | int
  function assign_to_worker (line 1123) | static int
  function add_transport_conn (line 1175) | static int
  function handle_cmd (line 1303) | static void
  function tpp_get_thrd_index (line 1391) | int
  type sockaddr (line 1451) | struct sockaddr
  type sockaddr (line 1623) | struct sockaddr
  type sockaddr_in (line 1655) | struct sockaddr_in
  function tpp_transport_close (line 1682) | int
  function handle_disconnect (line 1708) | static int
  function handle_incoming_data (line 1781) | static void
  function add_pkt (line 1878) | static short
  function send_data (line 1926) | static void
  function free_phy_conn (line 2022) | static void
  function tpp_transport_shutdown (line 2064) | int
  function tpp_transport_terminate (line 2111) | int
  function tpp_transport_set_conn_extra (line 2176) | void

FILE: src/lib/Libtpp/tpp_util.c
  function tpp_auth_logger (line 105) | void
  function pbs_tcp_chan_t (line 128) | static pbs_tcp_chan_t *
  function DIS_tpp_funcs (line 153) | void
  function tpp_log (line 173) | void
  function set_tpp_config (line 244) | int
  function free_tpp_config (line 492) | void
  function conn_auth_t (line 513) | conn_auth_t *
  function tpp_handle_auth_handshake (line 551) | int
  function tpp_packet_t (line 688) | tpp_packet_t *
  function tpp_free_chunk (line 753) | void
  function tpp_free_pkt (line 775) | void
  function tpp_set_non_blocking (line 806) | int
  function tpp_set_close_on_exec (line 844) | int
  function tpp_set_keep_alive (line 871) | int
  function tpp_cr_thrd (line 946) | int
  function tpp_init_lock (line 1004) | int
  function tpp_destroy_lock (line 1047) | int
  function tpp_lock (line 1072) | int
  function tpp_unlock (line 1097) | int
  function tpp_init_rwlock (line 1122) | int
  function tpp_read_lock (line 1147) | int
  function tpp_write_lock (line 1169) | int
  function tpp_unlock_rwlock (line 1194) | int
  function tpp_destroy_rwlock (line 1219) | int
  function tpp_que_elem_t (line 1289) | tpp_que_elem_t *
  function tpp_que_elem_t (line 1380) | tpp_que_elem_t *
  function tpp_que_elem_t (line 1437) | tpp_que_elem_t *
  function tpp_send_ctl_msg (line 1491) | int
  function tpp_init_tls_key_once (line 1573) | static void
  function tpp_init_tls_key (line 1595) | int
  function tpp_tls_t (line 1617) | tpp_tls_t *
  type def_ctx (line 1638) | struct def_ctx {
  type def_ctx (line 1665) | struct def_ctx
  type def_ctx (line 1665) | struct def_ctx
  type def_ctx (line 1667) | struct def_ctx
  function tpp_multi_deflate_do (line 1714) | int
  type def_ctx (line 1777) | struct def_ctx
  function tpp_multi_deflate_do (line 1956) | int
  function tpp_validate_hdr (line 1998) | int
  function tpp_addr_t (line 2034) | tpp_addr_t *
  function tpp_addr_t (line 2112) | tpp_addr_t *
  function tpp_addr_t (line 2163) | tpp_addr_t *
  type sockaddr_in (line 2223) | struct sockaddr_in
  type sockaddr_in6 (line 2224) | struct sockaddr_in6
  type sockaddr (line 2282) | struct sockaddr
  type sockaddr (line 2296) | struct sockaddr
  type sockaddr_in (line 2299) | struct sockaddr_in
  type sockaddr_in6 (line 2301) | struct sockaddr_in6
  function free_router (line 2310) | void
  function free_leaf (line 2323) | void
  function tpp_set_logmask (line 2343) | void
  function tpp_nslookup_atfork_prepare (line 2356) | void
  function tpp_nslookup_atfork_parent (line 2367) | void
  function tpp_nslookup_atfork_child (line 2378) | void
  function tpp_encrypt_pkt (line 2393) | int
  function print_packet_hdr (line 2472) | void

FILE: src/lib/Libutil/avltree.c
  type way3 (line 86) | typedef char way3;
  type node (line 98) | typedef struct _node {
  type avl_tls_t (line 117) | typedef struct {
  function avl_set_maxthreads (line 146) | void
  function avl_init_func (line 157) | void
  function get_thread_index (line 175) | static short
  function free_avl_tls (line 219) | void
  function way3 (line 243) | static way3
  function way3 (line 250) | static way3
  function freenode (line 262) | static void
  function compkey (line 282) | static int
  function copydata (line 309) | static void
  function node (line 328) | static node *
  function node (line 362) | static node *
  function way3ix (line 370) | static int
  function restruct (line 391) | static bool
  function rectype (line 425) | static rectype *
  function avltree_first (line 481) | static void
  function rectype (line 503) | static rectype *
  function rectype (line 554) | static rectype *
  function avltree_clear (line 631) | static void
  function avl_create_index (line 677) | int
  function avl_destroy_index (line 699) | void
  function avl_find_key (line 722) | int
  function avl_add_key (line 755) | int
  function avl_delete_key (line 779) | int
  function avl_first_key (line 802) | void
  function avl_next_key (line 820) | int
  function AVL_IX_REC (line 851) | AVL_IX_REC *

FILE: src/lib/Libutil/daemon_protect.c
  function daemon_protect (line 63) | void

FILE: src/lib/Libutil/dedup_jobids.c
  function is_array_job (line 58) | int
  function array_job_range_list (line 83) | array_job_range_list *
  function split_sub_jobid (line 113) | int
  function check_short_jobid (line 162) | bool
  function add_default_server (line 189) | int
  function dedup_jobids (line 224) | int

FILE: src/lib/Libutil/entlim.c
  type entlim_ctx (line 47) | typedef struct _entlim_ctx {
  function entlim_add (line 106) | int
  function entlim_replace (line 130) | int
  function entlim_delete (line 164) | int
  function entlim_free_ctx (line 234) | int
  type lim_keytypes (line 266) | enum lim_keytypes
  type lim_keytypes (line 310) | enum lim_keytypes
  type lim_keytypes (line 328) | enum lim_keytypes
  function entlim_entity_from_key (line 345) | int
  function entlim_resc_from_key (line 379) | int

FILE: src/lib/Libutil/execvnode_seq_util.c
  type word (line 74) | struct word
  type map (line 77) | struct map
  type word (line 85) | struct word
  type word (line 91) | struct word
  type word (line 100) | struct word
  function dictionary (line 111) | static dictionary *
  type word (line 139) | struct word
  type word (line 142) | struct word
  type word (line 147) | struct word
  type map (line 175) | struct map
  type map (line 178) | struct map
  type map (line 183) | struct map
  function direct_map (line 215) | static int
  type word (line 263) | struct word
  type word (line 266) | struct word
  function append_to_dict (line 295) | static int
  function append_to_word (line 343) | static int
  function get_execvnodes_count (line 564) | int
  type word (line 614) | struct word
  type map (line 615) | struct map
  function free_dict (line 713) | static void
  function free_word (line 745) | static void
  function free_execvnode_seq (line 783) | void
  function test_execvnode_seq (line 802) | void

FILE: src/lib/Libutil/get_hostname.c
  function get_fullhostname (line 71) | int
  type in_addr (line 161) | struct in_addr
  type hostent (line 163) | struct hostent
  type in_addr (line 165) | struct in_addr

FILE: src/lib/Libutil/hook.c
  function clear_hook_links (line 128) | void
  function hookstr_event_toint (line 394) | unsigned int
  function hookstr_type_toint (line 455) | int
  function set_hook_name (line 637) | int
  function set_hook_enabled (line 685) | int
  function set_hook_debug (line 732) | int
  function set_hook_type (line 779) | int
  function set_hook_user (line 871) | int
  function insert_hook_sort_order (line 932) | static void
  function set_hook_fail_action (line 1110) | int
  function add_hook_fail_action (line 1162) | int
  function del_hook_fail_action (line 1302) | int
  function set_hook_event (line 1379) | int
  function add_hook_event (line 1450) | int
  function del_hook_event (line 1732) | int
  function set_hook_order (line 1888) | int
  function set_hook_alarm (line 2103) | int
  function set_hook_freq (line 2152) | int
  function unset_hook_enabled (line 2220) | int
  function unset_hook_debug (line 2250) | int
  function unset_hook_type (line 2274) | int
  function unset_hook_user (line 2306) | int
  function unset_hook_fail_action (line 2330) | int
  function unset_hook_event (line 2363) | int
  function unset_hook_order (line 2492) | int
  function unset_hook_alarm (line 2673) | int
  function unset_hook_freq (line 2705) | int
  function hook_init (line 2734) | static void
  function hook (line 2771) | hook *
  function hook_free (line 2803) | void
  function mark_hook_file_bad (line 2826) | void
  function hook_purge (line 2913) | void
  function hook_save (line 3005) | int
  function hook (line 3136) | hook *
  function hook (line 3179) | hook *
  function find_valid_base64_char (line 3213) | static int
  function decode_block_base64 (line 3244) | int
  function encode_block_base64 (line 3329) | static int
  function encode_hook_content (line 3389) | int
  function decode_hook_content (line 3514) | int
  function print_hook (line 3633) | void
  function print_hooks (line 3673) | void
  function hook (line 3866) | hook *
  function catch_hook_alarm (line 4129) | void
  function set_alarm (line 4160) | int
  function cleanup_hooks_workdir (line 4209) | void
  function num_eligible_hooks (line 4278) | int
  function hook_perf_stat_start (line 4408) | void
  function hook_perf_stat_stop (line 4442) | void

FILE: src/lib/Libutil/misc_utils.c
  type vnode_sharing (line 105) | enum vnode_sharing
  type perf_stat_t (line 116) | typedef struct perf_stat {
  function char_in_set (line 137) | int
  type vnode_sharing (line 213) | enum vnode_sharing
  function str_to_vnode_sharing (line 236) | enum vnode_sharing
  function pbs_extendable_line (line 416) | int
  function pbs_asprintf_len (line 513) | int
  function pbs_asprintf (line 573) | int
  function copy_file_internal (line 622) | int
  function lock_file (line 685) | int
  function float_digits (line 746) | int
  function is_full_path (line 788) | int
  function replace (line 825) | void
  function file_exists (line 960) | int
  function is_same_host (line 994) | int
  function place_sharing_check (line 1053) | int
  function in_string_list (line 1100) | int
  function is_string_in_arr (line 1253) | int
  function find_string_idx (line 1316) | int
  function free_string_array (line 1340) | void
  function ensure_string_not_null (line 1362) | void
  function convert_duration_to_str (line 1413) | void
  function ends_with_triple_quotes (line 1441) | int
  function starts_with_triple_quotes (line 1495) | int
  type preempt_ordering (line 1648) | struct preempt_ordering
  type preempt_ordering (line 1649) | struct preempt_ordering
  type preempt_ordering (line 1653) | struct preempt_ordering
  function get_walltime (line 1686) | static double
  function get_cputime (line 1706) | static double
  function get_walltime (line 1732) | static double
  function get_cputime (line 1750) | static double
  function perf_stat_t (line 1770) | static perf_stat_t *
  function perf_stat_t (line 1804) | static perf_stat_t *
  function perf_stat_remove (line 1831) | void
  function perf_stat_start (line 1860) | void
  function create_query_file (line 1935) | void
  function delay_query (line 1966) | void
  type sockaddr_in (line 2014) | struct sockaddr_in
  function u_long (line 2139) | static u_long
  function crc_file (line 2226) | unsigned long
  function state_char2int (line 2310) | int
  function state_int2char (line 2333) | char
  function set_proc_limits (line 2425) | void
  function rand_num (line 2553) | int
  function get_index_from_jid (line 2578) | int
  function svrattrl (line 2675) | static svrattrl *
  function svrattrl (line 2734) | svrattrl *
  function set_rand_str (line 2773) | void
  function validate_hostkey (line 2851) | int

FILE: src/lib/Libutil/pbs_aes_encrypt.c
  function pbs_encrypt_pwd (line 89) | int
  function pbs_decrypt_pwd (line 155) | int
  function encode_to_base64 (line 215) | int
  function decode_from_base64 (line 262) | int
  function encode_SHA (line 319) | void

FILE: src/lib/Libutil/pbs_array_list.c
  function pntPBS_IP_RANGE (line 55) | pntPBS_IP_RANGE
  function pntPBS_IP_LIST (line 71) | pntPBS_IP_LIST
  function pntPBS_IP_LIST (line 96) | pntPBS_IP_LIST
  function delete_pbs_iplist (line 118) | void
  function search_location (line 142) | int
  function insert_iplist_element (line 178) | int
  function delete_iplist_element (line 252) | int

FILE: src/lib/Libutil/pbs_ical.c
  function get_num_occurrences (line 91) | int
  function time_t (line 174) | time_t
  function check_rrule (line 257) | int
  function display_occurrences (line 525) | void
  function set_ical_zoneinfo (line 565) | void
  function test_it (line 591) | void
  function test_main (line 620) | int

FILE: src/lib/Libutil/pbs_idx.c
  type iter_ctx (line 49) | typedef struct _iter_ctx {
  function pbs_idx_destroy (line 92) | void
  function pbs_idx_insert (line 115) | int
  function pbs_idx_delete (line 148) | int
  function pbs_idx_delete_byctx (line 178) | int
  function pbs_idx_find (line 213) | int
  function pbs_idx_free_ctx (line 286) | void
  function pbs_idx_is_empty (line 306) | bool

FILE: src/lib/Libutil/range.c
  function range (line 58) | range *
  function free_range_list (line 86) | void
  function free_range (line 111) | void
  function range (line 129) | range *
  function range (line 171) | range *
  function range_count (line 194) | int
  function range (line 217) | range *
  function range_next_value (line 292) | int
  function range_contains (line 333) | int
  function range_contains_single (line 367) | int
  function range_remove_value (line 397) | int
  function range_add_value (line 480) | int
  function range (line 589) | range *
  function parse_subjob_index (line 626) | int
  function range (line 768) | range *

FILE: src/lib/Libutil/thread_utils.c
  function init_mutex_attr_recursive (line 62) | int

FILE: src/lib/Libutil/work_task.c
  type work_task (line 84) | struct work_task
  type work_type (line 85) | enum work_type
  type work_task (line 85) | struct work_task
  type work_task (line 87) | struct work_task
  type work_task (line 88) | struct work_task
  type work_task (line 90) | struct work_task
  type work_task (line 90) | struct work_task
  type work_task (line 111) | struct work_task
  type work_task (line 115) | struct work_task
  function convert_work_task (line 139) | int
  function dispatch_task (line 177) | void
  function delete_task (line 196) | void
  type work_task (line 219) | struct work_task
  type work_task (line 222) | struct work_task
  type work_task (line 223) | struct work_task
  type work_task (line 254) | struct work_task
  type work_type (line 255) | enum work_type
  type work_task (line 257) | struct work_task
  function delete_task_by_parm1_func (line 295) | void
  function has_task_by_parm1 (line 334) | int
  function time_t (line 359) | time_t

FILE: src/modules/python/pbs/v1/_attr_types.py
  class acl_group_enable (line 64) | class acl_group_enable(_attr):
  class acl_groups (line 67) | class acl_groups(_attr):
  class acl_host_enable (line 70) | class acl_host_enable(_attr):
  class hosts (line 73) | class hosts(_attr):
  class acl_user_enable (line 76) | class acl_user_enable(_attr):
  class acl_users (line 79) | class acl_users(_attr):
  class enabled (line 82) | class enabled(_attr):
  class from_route_only (line 85) | class from_route_only(_attr):
  class max_array_size (line 88) | class max_array_size(_attr):
  class max_queuable (line 91) | class max_queuable(_attr):
  class max_running (line 94) | class max_running(_attr):
  class node_group_key (line 97) | class node_group_key(_attr):
  class Priority (line 100) | class Priority(_attr):

FILE: src/modules/python/pbs/v1/_base_types.py
  class PbsAttributeDescriptor (line 108) | class PbsAttributeDescriptor():
    method __init__ (line 122) | def __init__(
    method _get_values_dict (line 161) | def _get_values_dict(obj):
    method __get__ (line 173) | def __get__(self, obj, cls=None):
    method __set__ (line 197) | def __set__(self, obj, value):
    method _set_resc_atttr (line 239) | def _set_resc_atttr(self, resc_attr, is_entity=0):
    method __delete__ (line 248) | def __delete__(self, obj):
    method _get_default_value (line 253) | def _get_default_value(self):
  class PbsReadOnlyDescriptor (line 275) | class PbsReadOnlyDescriptor():
    method __init__ (line 280) | def __init__(self, name, value):
    method __get__ (line 288) | def __get__(self, obj, cls=None):
    method __set__ (line 294) | def __set__(self, obj, value):
    method __delete__ (line 299) | def __delete__(self, obj):
    method __str__ (line 304) | def __str__(self):
  class _generic_attr (line 320) | class _generic_attr():
    method __init__ (line 326) | def __init__(self, value):
    method __str__ (line 338) | def __str__(self):
  function to_bytes (line 352) | def to_bytes(sz):
  function transform_sizes (line 383) | def transform_sizes(sz1, sz2):
  function size_to_kbytes (line 414) | def size_to_kbytes(sz):
  class size (line 422) | class size(_size):
    method __lt__ (line 456) | def __lt__(self, other):
    method __le__ (line 470) | def __le__(self, other):
    method __gt__ (line 484) | def __gt__(self, other):
    method __ge__ (line 498) | def __ge__(self, other):
    method __eq__ (line 512) | def __eq__(self, other):
    method __ne__ (line 526) | def __ne__(self, other):
    method __add__ (line 551) | def __add__(self, other):
    method __sub__ (line 564) | def __sub__(self, other):
    method __deepcopy__ (line 577) | def __deepcopy__(self, mem):
  class duration (line 581) | class duration(int):
    method __new__ (line 594) | def __new__(cls, value):
    method __init__ (line 601) | def __init__(self, value):
    method __str__ (line 604) | def __str__(self):
  function replace_char_not_before (line 608) | def replace_char_not_before(str, chr, repl_substr, chr_after_list):
  class pbs_env (line 651) | class pbs_env(dict):
    method __init__ (line 674) | def __init__(self, value, generic=False):
    method __setitem__ (line 724) | def __setitem__(self, name, value):
    method __str__ (line 743) | def __str__(self):
  class email_list (line 753) | class email_list(_generic_attr):
    method __init__ (line 761) | def __init__(self, value):
  class pbs_list (line 769) | class pbs_list(_generic_attr):
    method __init__ (line 772) | def __init__(self, value):
  class pbs_bool (line 777) | class pbs_bool(_generic_attr):
    method __init__ (line 780) | def __init__(self, value):
    method __cmp__ (line 793) | def __cmp__(self, value):
    method __bool__ (line 808) | def __bool__(self):
    method __int__ (line 814) | def __int__(self):
  class pbs_int (line 818) | class pbs_int(int):
    method __init__ (line 821) | def __init__(self, value):
  class vnode_state (line 828) | class vnode_state(int):
    method __init__ (line 831) | def __init__(self, value):
    method __add__ (line 840) | def __add__(self, val):
    method __sub__ (line 846) | def __sub__(self, val):
  class pbs_str (line 853) | class pbs_str(str):
    method __init__ (line 856) | def __init__(self, value):
  class pbs_float (line 861) | class pbs_float(float):
    method __init__ (line 864) | def __init__(self, value):
  class server_state (line 871) | class server_state(int):
    method __new__ (line 874) | def __new__(cls, value):
  class queue_type (line 893) | class queue_type(int):
    method __new__ (line 896) | def __new__(cls, value):
  class job_state (line 910) | class job_state(int):
    method __new__ (line 913) | def __new__(cls, value):
  class acl (line 947) | class acl(_generic_attr):
    method __init__ (line 954) | def __init__(self, value):
  class select (line 959) | class select(_generic_attr):
    method __init__ (line 973) | def __init__(self, value):
    method increment_chunks (line 977) | def increment_chunks(self, increment_spec):
  class place (line 1130) | class place(_generic_attr):
    method __init__ (line 1146) | def __init__(self, value):
  class vnode_sharing (line 1151) | class vnode_sharing(int):
    method __init__ (line 1154) | def __init__(self, value):
  class vnode_ntype (line 1161) | class vnode_ntype(int):
    method __init__ (line 1164) | def __init__(self, value):
  class exec_host (line 1171) | class exec_host(_generic_attr):
    method __init__ (line 1179) | def __init__(self, value):
  class checkpoint (line 1184) | class checkpoint(_generic_attr):
    method __init__ (line 1193) | def __init__(self, value):
  class depend (line 1198) | class depend(_generic_attr):
    method __init__ (line 1210) | def __init__(self, value):
  class group_list (line 1215) | class group_list(_generic_attr):
    method __init__ (line 1222) | def __init__(self, value):
  class user_list (line 1227) | class user_list(_generic_attr):
    method __init__ (line 1234) | def __init__(self, value):
  class path (line 1239) | class path(_generic_attr):
    method __init__ (line 1242) | def __init__(self, value):
  class sandbox (line 1251) | class sandbox(_generic_attr):
    method __init__ (line 1254) | def __init__(self, value):
  class priority (line 1259) | class priority(_generic_attr):
    method __init__ (line 1262) | def __init__(self, value):
  class name (line 1267) | class name(_generic_attr):
    method __init__ (line 1270) | def __init__(self, value):
  class project (line 1278) | class project(_generic_attr):
    method __init__ (line 1281) | def __init__(self, value):
  class join_path (line 1289) | class join_path(_generic_attr):
    method __init__ (line 1296) | def __init__(self, value):
  class path_list (line 1301) | class path_list(_generic_attr):
    method __init__ (line 1308) | def __init__(self, value):
  class hold_types (line 1317) | class hold_types(_generic_attr):
    method __init__ (line 1326) | def __init__(self, value):
    method __add__ (line 1334) | def __add__(self, val):
    method __sub__ (line 1357) | def __sub__(self, val):
  class keep_files (line 1387) | class keep_files(_generic_attr):
    method __init__ (line 1396) | def __init__(self, value):
  class mail_points (line 1401) | class mail_points(_generic_attr):
    method __init__ (line 1410) | def __init__(self, value):
  class staging_list (line 1415) | class staging_list(_generic_attr):
    method __init__ (line 1425) | def __init__(self, value):
  class range (line 1434) | class range(_generic_attr):
    method __init__ (line 1444) | def __init__(self, value):
  class state_count (line 1449) | class state_count(_generic_attr):
    method __init__ (line 1457) | def __init__(self, value):
  class license_count (line 1464) | class license_count(_generic_attr):
    method __init__ (line 1472) | def __init__(self, value):
  class route_destinations (line 1477) | class route_destinations(_generic_attr):
    method __init__ (line 1487) | def __init__(self, value):
  class args (line 1494) | class args(_generic_attr):
    method __init__ (line 1503) | def __init__(self, value):
  class job_sort_formula (line 1508) | class job_sort_formula(_generic_attr):
    method __init__ (line 1515) | def __init__(self, value):
  class node_group_key (line 1523) | class node_group_key(_generic_attr):
    method __init__ (line 1530) | def __init__(self, value):
  class version (line 1535) | class version(_generic_attr):
    method __init__ (line 1542) | def __init__(self, value):
  class software (line 1547) | class software(_generic_attr):
    method __init__ (line 1554) | def __init__(self, value):
  class pbs_resource (line 1562) | class pbs_resource():
    method __init__ (line 1573) | def __init__(self, name, is_entity=0):
    method __str__ (line 1597) | def __str__(self):
    method __getitem__ (line 1626) | def __getitem__(self, resname):
    method __setitem__ (line 1635) | def __setitem__(self, resname, resval):
    method __contains__ (line 1644) | def __contains__(self, resname):
    method __setattr__ (line 1650) | def __setattr__(self, nameo, value):
    method keys (line 1710) | def keys(self):
  class vchunk (line 1731) | class vchunk():
    method __init__ (line 1739) | def __init__(self, achunk):
  class exec_vnode (line 1754) | class exec_vnode(_generic_attr):
    method __init__ (line 1773) | def __init__(self, value):

FILE: src/modules/python/pbs/v1/_exc_types.py
  class EventIncompatibleError (line 57) | class EventIncompatibleError(AttributeError):
  class UnsetAttributeNameError (line 60) | class UnsetAttributeNameError(Exception):
  class BadAttributeValueTypeError (line 63) | class BadAttributeValueTypeError(Exception):
  class BadAttributeValueError (line 66) | class BadAttributeValueError(Exception):
  class UnsetResourceNameError (line 69) | class UnsetResourceNameError(Exception):
  class BadResourceValueTypeError (line 72) | class BadResourceValueTypeError(Exception):
  class BadResourceValueError (line 75) | class BadResourceValueError(Exception):

FILE: src/modules/python/pbs/v1/_pmi_cray.py
  function launch (line 63) | def launch(jid, args):
  function jobnids (line 114) | def jobnids(job):
  function nodenids (line 133) | def nodenids(hosts):
  function nidlist (line 152) | def nidlist(job=None, nidset=None):
  function spool_file (line 190) | def spool_file(name):
  function energy_file (line 204) | def energy_file(job):
  function rur_file (line 215) | def rur_file(job):
  function node_energy (line 226) | def node_energy(jid, nids, cnt):
  function job_energy (line 265) | def job_energy(job, nids, cnt):
  class Pmi (line 289) | class Pmi:
    method __init__ (line 294) | def __init__(self, pyhome=None):
    method _connect (line 297) | def _connect(self, endpoint=None, port=None, job=None):
    method _disconnect (line 304) | def _disconnect(self, job=None):
    method _get_usage (line 311) | def _get_usage(self, job):
    method _query (line 355) | def _query(self, query_type):
    method _activate_profile (line 359) | def _activate_profile(self, profile_name, job):
    method _deactivate_profile (line 397) | def _deactivate_profile(self, job):
    method _pmi_power_off (line 498) | def _pmi_power_off(self, hosts):
    method _pmi_power_on (line 507) | def _pmi_power_on(self, hosts):
    method _pmi_ramp_down (line 516) | def _pmi_ramp_down(self, hosts):
    method _pmi_ramp_up (line 536) | def _pmi_ramp_up(self, hosts):
    method _pmi_power_status (line 556) | def _pmi_power_status(self, hosts):

FILE: src/modules/python/pbs/v1/_pmi_none.py
  class Pmi (line 50) | class Pmi:
    method __init__ (line 51) | def __init__(self, pyhome=None):
    method _connect (line 54) | def _connect(self, endpoint, port, job):
    method _disconnect (line 57) | def _disconnect(self, job):
    method _get_usage (line 60) | def _get_usage(self, job):
    method _query (line 63) | def _query(self, query_type):
    method _activate_profile (line 66) | def _activate_profile(self, profile_name, job):
    method _deactivate_profile (line 69) | def _deactivate_profile(self, job):
    method _pmi_power_off (line 72) | def _pmi_power_off(self, hosts):
    method _pmi_power_on (line 75) | def _pmi_power_on(self, hosts):
    method _pmi_ramp_down (line 78) | def _pmi_ramp_down(self, hosts):
    method _pmi_ramp_up (line 81) | def _pmi_ramp_up(self, hosts):
    method _pmi_power_status (line 84) | def _pmi_power_status(self, hosts):

FILE: src/modules/python/pbs/v1/_pmi_sgi.py
  class Pmi (line 83) | class Pmi:
    method __init__ (line 84) | def __init__(self, pyhome=None):
    method _connect (line 88) | def _connect(self, endpoint, port, job):
    method _disconnect (line 96) | def _disconnect(self, job):
    method _get_usage (line 103) | def _get_usage(self, job):
    method _query (line 111) | def _query(self, query_type):
    method _activate_profile (line 117) | def _activate_profile(self, profile_name, job):
    method _deactivate_profile (line 124) | def _deactivate_profile(self, job):
    method _pmi_power_off (line 133) | def _pmi_power_off(self, hosts):
    method _pmi_power_on (line 137) | def _pmi_power_on(self, hosts):
    method _pmi_ramp_down (line 141) | def _pmi_ramp_down(self, hosts):
    method _pmi_ramp_up (line 145) | def _pmi_ramp_up(self, hosts):
    method _pmi_power_status (line 149) | def _pmi_power_status(self, hosts):

FILE: src/modules/python/pbs/v1/_pmi_types.py
  class InternalError (line 58) | class InternalError(Exception):
    method __init__ (line 59) | def __init__(self, msg="Internal error encountered."):
    method __str__ (line 62) | def __str__(self):
  class BackendError (line 66) | class BackendError(Exception):
    method __init__ (line 67) | def __init__(self, msg="Backend error encountered."):
    method __str__ (line 70) | def __str__(self):
  class Power (line 74) | class Power:
    method __init__ (line 78) | def __init__(self, requested_pmi=None):
    method __get_pmi_type (line 100) | def __get_pmi_type(self):
    method _map_profile_names (line 111) | def _map_profile_names(self, pnames):
    method _check_pmi (line 120) | def _check_pmi(self):
    method connect (line 124) | def connect(self, endpoint=None, port=None, job=None):
    method disconnect (line 133) | def disconnect(self, job=None):
    method get_usage (line 142) | def get_usage(self, job=None):
    method query (line 148) | def query(self, query_type=None):
    method activate_profile (line 152) | def activate_profile(self, profile_name=None, job=None):
    method deactivate_profile (line 188) | def deactivate_profile(self, job=None):
    method power_off (line 202) | def power_off(self, hosts=None):
    method power_on (line 207) | def power_on(self, hosts=None):
    method ramp_down (line 212) | def ramp_down(self, hosts=None):
    method ramp_up (line 217) | def ramp_up(self, hosts=None):
    method power_status (line 222) | def power_status(self, hosts=None):

FILE: src/modules/python/pbs/v1/_pmi_utils.py
  function _pbs_conf (line 52) | def _pbs_conf(confvar):
  function _is_node_provisionable (line 90) | def _is_node_provisionable():
  function _get_hosts (line 111) | def _get_hosts(job):
  function _jobreq (line 124) | def _jobreq(job, name):
  function _get_vnode_names (line 135) | def _get_vnode_names(job):
  function _svr_vnode (line 145) | def _svr_vnode(name):
  function _running_excl (line 157) | def _running_excl(job):

FILE: src/modules/python/pbs/v1/_svr_types.py
  function get_server_data_fp (line 85) | def get_server_data_fp():
  function get_local_nodename (line 102) | def get_local_nodename():
  function pbs_statobj (line 116) | def pbs_statobj(objtype, name=None, connect_server=None, filter_queue=No...
  class _job (line 283) | class _job():
    method __new__ (line 290) | def __new__(cls, value, connect_server=None):
    method __init__ (line 293) | def __init__(self, jid, connect_server=None,
    method __str__ (line 311) | def __str__(self):
    method __setattr__ (line 317) | def __setattr__(self, name, value):
    method rerun (line 346) | def rerun(self):
    method delete (line 354) | def delete(self):
    method is_checkpointed (line 362) | def is_checkpointed(self):
    method in_ms_mom (line 367) | def in_ms_mom(self):
    method stdout_file (line 372) | def stdout_file(self):
    method stderr_file (line 377) | def stderr_file(self):
    method release_nodes (line 382) | def release_nodes(self, node_list=None, keep_select=None):
  class _vnode (line 414) | class _vnode():
    method __new__ (line 421) | def __new__(cls, value, connect_server=None):
    method __init__ (line 424) | def __init__(self, name, connect_server=None):
    method __str__ (line 433) | def __str__(self):
    method __setattr__ (line 439) | def __setattr__(self, name, value):
    method extract_state_strs (line 464) | def extract_state_strs(self):
    method extract_state_ints (line 477) | def extract_state_ints(self):
  class _resv (line 501) | class _resv():
    method __new__ (line 510) | def __new__(cls, value, connect_server=None):
    method __init__ (line 513) | def __init__(self, resvid, connect_server=None):
    method __str__ (line 522) | def __str__(self):
    method __setattr__ (line 528) | def __setattr__(self, name, value):
  class _queue (line 572) | class _queue():
    method __init__ (line 580) | def __init__(self, name, connect_server=None):
    method __str__ (line 588) | def __str__(self):
    method __setattr__ (line 594) | def __setattr__(self, name, value):
    method job (line 606) | def job(self, jobid):
    method jobs (line 632) | def jobs(self):
  class _server (line 653) | class _server():
    method __init__ (line 660) | def __init__(self, name, connect_server=None):
    method __str__ (line 668) | def __str__(self):
    method queue (line 674) | def queue(self, qname):
    method job (line 699) | def job(self, jobid):
 
Copy disabled (too large) Download .json
Condensed preview — 1196 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (19,697K chars).
[
  {
    "path": ".clang-format",
    "chars": 3713,
    "preview": "---\nLanguage:        Cpp\n# BasedOnStyle:  LLVM\nAccessModifierOffset: -2\nAlignAfterOpenBracket: Align\nAlignConsecutiveAss"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "chars": 910,
    "preview": "<!--- Please review your changes in preview mode -->\n<!--- Provide a general summary of your changes in the Title above "
  },
  {
    "path": ".github/checkclang",
    "chars": 1971,
    "preview": "#!/bin/bash\n\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com"
  },
  {
    "path": ".github/checkpep8",
    "chars": 2857,
    "preview": "#!/bin/bash\n\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com"
  },
  {
    "path": ".github/runchecks",
    "chars": 2272,
    "preview": "#!/bin/bash\n\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com"
  },
  {
    "path": ".gitignore",
    "chars": 5135,
    "preview": "# Object files\n*.o\n*.ko\n*.obj\n*.elf\n*.slo\n\n# Precompiled Headers\n*.gch\n*.pch\n\n# Libraries\n*.lib\n*.libs\n*.a\n*.la\n*.lo\n*.l"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "chars": 4458,
    "preview": "#### OpenPBS Open Source Project \n\n## **Code of Conduct**\n\nThis code of conduct is a guide for members of the OpenPBS co"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 750,
    "preview": "### Contributing to the OpenPBS Open Source Project\n\nWe're so happy that you want to contribute to OpenPBS!\n\nPlease see "
  },
  {
    "path": "COPYRIGHT",
    "chars": 1578,
    "preview": "Copyright (C) 1994-2021 Altair Engineering, Inc.\nFor more information, contact Altair at www.altair.com.\n\nThis file is p"
  },
  {
    "path": "INSTALL",
    "chars": 11631,
    "preview": "\n--------------------------------------------------------------------\n\nHow to install PBS using the configure script.\n\n0"
  },
  {
    "path": "LICENSE",
    "chars": 49632,
    "preview": "----------------------------------------------------\nOpen Source License for OpenPBS and PBS Professional\n--------------"
  },
  {
    "path": "Makefile.am",
    "chars": 1819,
    "preview": "\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This"
  },
  {
    "path": "PBS_License.txt",
    "chars": 1578,
    "preview": "Copyright (C) 1994-2021 Altair Engineering, Inc.\nFor more information, contact Altair at www.altair.com.\n\nThis file is p"
  },
  {
    "path": "README.md",
    "chars": 4591,
    "preview": "### OpenPBS Open Source Project\n\nIf you are new to this project, please start at https://www.openpbs.org/\n\nNote: In May "
  },
  {
    "path": "autogen.sh",
    "chars": 1871,
    "preview": "#!/bin/sh\n\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com"
  },
  {
    "path": "azure-pipelines.yml",
    "chars": 22793,
    "preview": "trigger:\n  branches:\n    include:\n      - master\n      - release_*\n\npr:\n  branches:\n    include:\n      - master\n      - "
  },
  {
    "path": "buildutils/Makefile.am",
    "chars": 1679,
    "preview": "\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This"
  },
  {
    "path": "buildutils/attr_parser.py",
    "chars": 12885,
    "preview": "# coding: utf-8\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair."
  },
  {
    "path": "ci/README.md",
    "chars": 4343,
    "preview": "Instant-CI is a developer tool which aims at providing continous integration to the developers locally on their developm"
  },
  {
    "path": "ci/ci",
    "chars": 31916,
    "preview": "#!/usr/bin/env python3\n\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www"
  },
  {
    "path": "ci/etc/build-pbs-packages.sh",
    "chars": 3732,
    "preview": "#! /bin/bash -xe\n\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altai"
  },
  {
    "path": "ci/etc/ci-script-wrapper.service",
    "chars": 1922,
    "preview": "# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This fi"
  },
  {
    "path": "ci/etc/configure_node.sh",
    "chars": 3245,
    "preview": "#! /bin/bash -x\n\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair"
  },
  {
    "path": "ci/etc/container-env-setup.sh",
    "chars": 2354,
    "preview": "# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This fi"
  },
  {
    "path": "ci/etc/container-init",
    "chars": 2226,
    "preview": "#!/bin/bash -x\n\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair."
  },
  {
    "path": "ci/etc/do.sh",
    "chars": 14001,
    "preview": "#!/bin/bash -xe\n\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair"
  },
  {
    "path": "ci/etc/do_sanitize_mode.sh",
    "chars": 3222,
    "preview": "#!/bin/bash -xe\n\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair"
  },
  {
    "path": "ci/etc/docker-entrypoint",
    "chars": 1817,
    "preview": "#!/bin/bash -ex\n\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair"
  },
  {
    "path": "ci/etc/gen_ptl_json.sh",
    "chars": 2619,
    "preview": "#!/bin/bash -x\n\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair."
  },
  {
    "path": "ci/etc/id_rsa",
    "chars": 2590,
    "preview": "-----BEGIN OPENSSH PRIVATE KEY-----\nb3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn\nNhAAAAAwEAAQA"
  },
  {
    "path": "ci/etc/id_rsa.pub",
    "chars": 565,
    "preview": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC3qQ3DQLZkzJuSV3Sy5wuSloy7CfpJcHr72xw3dkxNIVFIzFrzkxN57yw6yLKuQiO/zmcBZ1iwaMsEqCvj"
  },
  {
    "path": "ci/etc/install-system-packages",
    "chars": 12069,
    "preview": "#!/bin/bash -x\n\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair."
  },
  {
    "path": "ci/etc/killit.sh",
    "chars": 3781,
    "preview": "#!/bin/bash -x\n\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair."
  },
  {
    "path": "ci/etc/macros",
    "chars": 320,
    "preview": "CONFIG_DIR=.config_dir\nSTATUS_FILE=status\nPARAM_FILE=params\nREQUIREMENT_DECORATOR_FILE=requirements_decorator\nCONFIGURE_"
  },
  {
    "path": "ci/etc/sudoers-overrides",
    "chars": 171,
    "preview": "Defaults\tsyslog = local7\nDefaults\talways_set_home\nDefaults\t!requiretty\nDefaults\t!env_reset\nDefaults\t!secure_path\nDefault"
  },
  {
    "path": "configure.ac",
    "chars": 8446,
    "preview": "\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This"
  },
  {
    "path": "doc/Makefile.am",
    "chars": 4372,
    "preview": "\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This"
  },
  {
    "path": "doc/man1/pbs_hook_attributes.7B",
    "chars": 6174,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man1/pbs_job_attributes.7B",
    "chars": 39507,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man1/pbs_login.1B",
    "chars": 3088,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man1/pbs_module.7B",
    "chars": 24575,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man1/pbs_node_attributes.7B",
    "chars": 15590,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man1/pbs_professional.7B",
    "chars": 2795,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man1/pbs_python.1B",
    "chars": 7773,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man1/pbs_queue_attributes.7B",
    "chars": 30216,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man1/pbs_ralter.1B",
    "chars": 11232,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man1/pbs_rdel.1B",
    "chars": 3102,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man1/pbs_release_nodes.1B",
    "chars": 6189,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man1/pbs_resources.7B",
    "chars": 33410,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man1/pbs_resv_attributes.7B",
    "chars": 13509,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man1/pbs_rstat.1B",
    "chars": 3720,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man1/pbs_rsub.1B",
    "chars": 23836,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man1/pbs_sched_attributes.7B",
    "chars": 12193,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man1/pbs_server_attributes.7B",
    "chars": 42147,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man1/pbsdsh.1B",
    "chars": 4538,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man1/qalter.1B",
    "chars": 29976,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man1/qdel.1B",
    "chars": 6229,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man1/qhold.1B",
    "chars": 5509,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man1/qmove.1B",
    "chars": 4481,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man1/qmsg.1B",
    "chars": 3807,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man1/qorder.1B",
    "chars": 3519,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man1/qrerun.1B",
    "chars": 4003,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man1/qrls.1B",
    "chars": 4374,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man1/qselect.1B",
    "chars": 13590,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man1/qsig.1B",
    "chars": 6256,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man1/qstat.1B",
    "chars": 29336,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man1/qsub.1B",
    "chars": 42593,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/pbs_alterjob.3B",
    "chars": 4105,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/pbs_asyrunjob.3B",
    "chars": 4957,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/pbs_confirmresv.3B",
    "chars": 3979,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/pbs_connect.3B",
    "chars": 3750,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/pbs_default.3B",
    "chars": 2403,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/pbs_deljob.3B",
    "chars": 3211,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/pbs_delresv.3B",
    "chars": 3051,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/pbs_disconnect.3B",
    "chars": 2495,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/pbs_geterrmsg.3B",
    "chars": 2870,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/pbs_holdjob.3B",
    "chars": 3100,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/pbs_locjob.3B",
    "chars": 3123,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/pbs_manager.3B",
    "chars": 6530,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/pbs_modify_resv.3B",
    "chars": 4399,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/pbs_movejob.3B",
    "chars": 3443,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/pbs_msgjob.3B",
    "chars": 3291,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/pbs_orderjob.3B",
    "chars": 3057,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/pbs_preempt_jobs.3B",
    "chars": 3359,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/pbs_relnodesjob.3B",
    "chars": 3303,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/pbs_rerunjob.3B",
    "chars": 3087,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/pbs_rescquery.3B",
    "chars": 7154,
    "preview": ".\\\"\n.\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com."
  },
  {
    "path": "doc/man3/pbs_rescreserve.3B",
    "chars": 4367,
    "preview": ".\\\"\n.\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com."
  },
  {
    "path": "doc/man3/pbs_rlsjob.3B",
    "chars": 3060,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/pbs_runjob.3B",
    "chars": 4854,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/pbs_selectjob.3B",
    "chars": 6476,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/pbs_selstat.3B",
    "chars": 7617,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/pbs_sigjob.3B",
    "chars": 4213,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/pbs_stagein.3B",
    "chars": 3360,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/pbs_statfree.3B",
    "chars": 2475,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/pbs_stathook.3B",
    "chars": 4509,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/pbs_stathost.3B",
    "chars": 4405,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/pbs_statjob.3B",
    "chars": 7598,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/pbs_statnode.3B",
    "chars": 4478,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/pbs_statque.3B",
    "chars": 4220,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/pbs_statresv.3B",
    "chars": 4521,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/pbs_statrsc.3B",
    "chars": 4887,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/pbs_statsched.3B",
    "chars": 4151,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/pbs_statserver.3B",
    "chars": 3994,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/pbs_statvnode.3B",
    "chars": 4327,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/pbs_submit.3B",
    "chars": 4620,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/pbs_submit_resv.3B",
    "chars": 4106,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/pbs_submitresv.3B",
    "chars": 4118,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/pbs_tclapi.3B",
    "chars": 12803,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/pbs_terminate.3B",
    "chars": 3042,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/rm.3B",
    "chars": 4826,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man3/tm.3",
    "chars": 12578,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man8/mpiexec.8B",
    "chars": 4614,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man8/pbs.8B",
    "chars": 3218,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man8/pbs.conf.8B",
    "chars": 7342,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man8/pbs_account.8B",
    "chars": 4786,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man8/pbs_attach.8B",
    "chars": 4975,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man8/pbs_comm.8B",
    "chars": 6382,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man8/pbs_dataservice.8B",
    "chars": 2542,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man8/pbs_ds_password.8B",
    "chars": 3980,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man8/pbs_hostn.8B",
    "chars": 3027,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man8/pbs_idled.8B",
    "chars": 3650,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man8/pbs_iff.8B",
    "chars": 2922,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man8/pbs_interactive.8B",
    "chars": 2697,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man8/pbs_lamboot.8B",
    "chars": 3059,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man8/pbs_mkdirs.8B",
    "chars": 2783,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man8/pbs_mom.8B",
    "chars": 38483,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man8/pbs_mpihp.8B",
    "chars": 4654,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man8/pbs_mpilam.8B",
    "chars": 2931,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man8/pbs_mpirun.8B",
    "chars": 3491,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man8/pbs_probe.8B",
    "chars": 3795,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man8/pbs_sched.8B",
    "chars": 22918,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man8/pbs_server.8B",
    "chars": 9122,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man8/pbs_snapshot.8B",
    "chars": 17624,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man8/pbs_tclsh.8B",
    "chars": 2903,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man8/pbs_tmrsh.8B",
    "chars": 3916,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man8/pbs_topologyinfo.8B",
    "chars": 4004,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man8/pbs_wish.8B",
    "chars": 2432,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man8/pbsfs.8B",
    "chars": 7214,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man8/pbsnodes.8B",
    "chars": 8786,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man8/pbsrun.8B",
    "chars": 24621,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man8/pbsrun_unwrap.8B",
    "chars": 2936,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man8/pbsrun_wrap.8B",
    "chars": 4690,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man8/printjob.8B",
    "chars": 4123,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man8/qdisable.8B",
    "chars": 3426,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man8/qenable.8B",
    "chars": 3277,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man8/qmgr.8B",
    "chars": 51029,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man8/qrun.8B",
    "chars": 8336,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man8/qstart.8B",
    "chars": 3401,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man8/qstop.8B",
    "chars": 3383,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man8/qterm.8B",
    "chars": 5917,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man8/tracejob.8B",
    "chars": 6071,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "doc/man8/win_postinstall.py.8B",
    "chars": 3572,
    "preview": ".\\\"\n.\\\" Copyright (C) 1994-2021 Altair Engineering, Inc.\n.\\\" For more information, contact Altair at www.altair.com.\n.\\\""
  },
  {
    "path": "m4/disable_shell_pipe.m4",
    "chars": 2152,
    "preview": "\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This"
  },
  {
    "path": "m4/disable_syslog.m4",
    "chars": 2119,
    "preview": "\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This"
  },
  {
    "path": "m4/enable_alps.m4",
    "chars": 2010,
    "preview": "\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This"
  },
  {
    "path": "m4/enable_ptl.m4",
    "chars": 2134,
    "preview": "#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This "
  },
  {
    "path": "m4/pbs_decl_epoll.m4",
    "chars": 2097,
    "preview": "\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This"
  },
  {
    "path": "m4/pbs_decl_epoll_pwait.m4",
    "chars": 2568,
    "preview": "\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This"
  },
  {
    "path": "m4/pbs_decl_h_errno.m4",
    "chars": 2433,
    "preview": "\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This f"
  },
  {
    "path": "m4/pbs_decl_ppoll.m4",
    "chars": 2388,
    "preview": "\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This"
  },
  {
    "path": "m4/pbs_decl_socklen_t.m4",
    "chars": 2158,
    "preview": "\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This"
  },
  {
    "path": "m4/pbs_patch_libtool.m4",
    "chars": 2368,
    "preview": "\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This"
  },
  {
    "path": "m4/pbs_systemd_unitdir.m4",
    "chars": 2116,
    "preview": "\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This"
  },
  {
    "path": "m4/pbs_version.m4",
    "chars": 2027,
    "preview": "\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This"
  },
  {
    "path": "m4/security_check.m4",
    "chars": 2104,
    "preview": "\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This"
  },
  {
    "path": "m4/with_cjson.m4",
    "chars": 2748,
    "preview": "\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This"
  },
  {
    "path": "m4/with_core_limit.m4",
    "chars": 2041,
    "preview": "\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This"
  },
  {
    "path": "m4/with_database_dir.m4",
    "chars": 3177,
    "preview": "\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This"
  },
  {
    "path": "m4/with_database_port.m4",
    "chars": 2156,
    "preview": "\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This"
  },
  {
    "path": "m4/with_database_user.m4",
    "chars": 2167,
    "preview": "\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This"
  },
  {
    "path": "m4/with_editline.m4",
    "chars": 3059,
    "preview": "\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This"
  },
  {
    "path": "m4/with_expat.m4",
    "chars": 2734,
    "preview": "\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This"
  },
  {
    "path": "m4/with_hwloc.m4",
    "chars": 3136,
    "preview": "\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This"
  },
  {
    "path": "m4/with_krbauth.m4",
    "chars": 4271,
    "preview": "\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This"
  },
  {
    "path": "m4/with_libical.m4",
    "chars": 3494,
    "preview": "\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This"
  },
  {
    "path": "m4/with_libz.m4",
    "chars": 2691,
    "preview": "\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This"
  },
  {
    "path": "m4/with_min_stack_limit.m4",
    "chars": 2123,
    "preview": "\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This"
  },
  {
    "path": "m4/with_pbs_conf_file.m4",
    "chars": 2192,
    "preview": "\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This"
  },
  {
    "path": "m4/with_pmix.m4",
    "chars": 3550,
    "preview": "\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This"
  },
  {
    "path": "m4/with_python.m4",
    "chars": 2844,
    "preview": "\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This"
  },
  {
    "path": "m4/with_sendmail.m4",
    "chars": 2130,
    "preview": "\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This"
  },
  {
    "path": "m4/with_server_home.m4",
    "chars": 2195,
    "preview": "\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This"
  },
  {
    "path": "m4/with_server_name_file.m4",
    "chars": 2394,
    "preview": "\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This"
  },
  {
    "path": "m4/with_swig.m4",
    "chars": 2541,
    "preview": "\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This"
  },
  {
    "path": "m4/with_tcl.m4",
    "chars": 4046,
    "preview": "\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This"
  },
  {
    "path": "m4/with_tclatrsep.m4",
    "chars": 2087,
    "preview": "\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This"
  },
  {
    "path": "m4/with_tmpdir.m4",
    "chars": 2094,
    "preview": "\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This"
  },
  {
    "path": "m4/with_unsupported_dir.m4",
    "chars": 2104,
    "preview": "\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This"
  },
  {
    "path": "m4/with_xauth.m4",
    "chars": 2052,
    "preview": "\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This"
  },
  {
    "path": "openpbs-rpmlintrc",
    "chars": 2330,
    "preview": "# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This fi"
  },
  {
    "path": "openpbs.spec.in",
    "chars": 18294,
    "preview": "\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This"
  },
  {
    "path": "src/Makefile.am",
    "chars": 1779,
    "preview": "\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This"
  },
  {
    "path": "src/cmds/Makefile.am",
    "chars": 6470,
    "preview": "\n#\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com.\n#\n# This"
  },
  {
    "path": "src/cmds/mpiexec.in",
    "chars": 17826,
    "preview": "#!/bin/sh -\n\n# Copyright (C) 1994-2021 Altair Engineering, Inc.\n# For more information, contact Altair at www.altair.com"
  },
  {
    "path": "src/cmds/pbs_attach.c",
    "chars": 3684,
    "preview": "/*\n * Copyright (C) 1994-2021 Altair Engineering, Inc.\n * For more information, contact Altair at www.altair.com.\n *\n * "
  },
  {
    "path": "src/cmds/pbs_attach_sup.c",
    "chars": 4430,
    "preview": "/*\n * Copyright (C) 1994-2021 Altair Engineering, Inc.\n * For more information, contact Altair at www.altair.com.\n *\n * "
  },
  {
    "path": "src/cmds/pbs_dataservice.c",
    "chars": 4010,
    "preview": "/*\n * Copyright (C) 1994-2021 Altair Engineering, Inc.\n * For more information, contact Altair at www.altair.com.\n *\n * "
  },
  {
    "path": "src/cmds/pbs_demux.c",
    "chars": 5775,
    "preview": "/*\n * Copyright (C) 1994-2021 Altair Engineering, Inc.\n * For more information, contact Altair at www.altair.com.\n *\n * "
  },
  {
    "path": "src/cmds/pbs_ds_password.c",
    "chars": 18335,
    "preview": "/*\n * Copyright (C) 1994-2021 Altair Engineering, Inc.\n * For more information, contact Altair at www.altair.com.\n *\n * "
  }
]

// ... and 996 more files (download for full content)

About this extraction

This page contains the full source code of the PBSPro/pbspro GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1196 files (17.5 MB), approximately 4.6M tokens, and a symbol index with 10751 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!