Tree @HEAD (Download .tar.gz)
- ..
- add_inter.c
- aio_shim.c
- anticipatory_freeze.c
- arlinkdbg.h
- ast.h
- auto_zlink.c
- auto_zlink.h
- backup_buffer_flush.c
- bin_load.c
- bit_op.h
- buildaux.csh
- buildaux_dse.csh
- buildaux_gde.csh
- buildaux_gtcm_gnp_server.csh
- buildaux_gtcm_pkdisp.csh
- buildaux_gtcm_play.csh
- buildaux_gtcm_server.csh
- buildaux_gtcm_shmclean.csh
- buildaux_gtmcrypt.csh
- buildaux_gtmsecshr.csh
- buildaux_lke.csh
- buildaux_mupip.csh
- buildbdp.csh
- buildbta.csh
- builddbg.csh
- buildpro.csh
- buildshr.csh
- buildwarn.awk
- buildwarn.csh
- callg.c
- callintogtmxfer.c
- callintogtmxfer.h
- ccp_cluster_lock_wake.c
- ccp_fid_msg.c
- ccp_sendmsg.c
- ccp_userwait.c
- ce_init.c
- ce_substitute.c
- cenable.c
- cenable.h
- ch_cond_core.c
- ch_overrun.c
- change_fhead_timer.c
- check_encrypt_support.sh
- check_utf8_support.csh
- ci_ret_code.c
- clear_cache_array.c
- clear_cache_array.h
- cli.c
- cli.h
- cli_disallow.c
- cli_disallow.h
- cli_lex.c
- cli_parse.c
- cli_parse.h
- cmidefsp.h
- cmistub.c
- cms_load.csh
- cms_load_pre_v42.csh
- comimage.csh
- comlist.csh
- comp_lits.c
- comque.csh
- condstk_expand.c
- configure.gtc
- continue_handler.c
- continue_handler.h
- continue_proc.c
- coverage_cc.sh
- crit_wake.c
- ctrap_set.c
- ctrlc_handler.c
- ctrlc_handler.h
- ctrlc_set.c
- custom_errors_sample.txt
- cvtprot.c
- cvttime.c
- daemon_crit.c
- db_ipcs_reset.c
- db_ipcs_reset.h
- db_read.h
- db_snapshot.h
- db_write.h
- db_write_eof_block.c
- db_write_eof_block.h
- dbfilop.c
- dbinit_ch.c
- dec_err.c
- decomment.m
- deferred_signal_handler.c
- deferred_signal_handler.h
- dircompare.m.txt
- disk_block_available.c
- disk_block_available.h
- dm_audit_log.c
- dm_audit_log.h
- dm_read.c
- do_semop.c
- do_semop.h
- do_shmat.c
- do_shmat.h
- do_verify.c
- do_xform.c
- dollarh.c
- dollarh.h
- dpgbldir_sysops.c
- dpgbldir_sysops.h
- dse.c
- dse_cmd.c
- dse_cmd_disallow.c
- dse_cmd_disallow.h
- dse_ctrlc_handler.c
- dse_help.c
- dse_open.c
- dse_puttime.c
- dse_remove.c
- dsk_read.c
- dsk_write_nocache.c
- eintr_wrapper_semop.h
- encrypt_sign_db_key.sh
- err_init.c
- error_return.c
- errorsp.h
- exi_ch.c
- extract_signal_info.c
- exttab_parse.c
- exttime.c
- f_char.c
- f_piece.c
- fake_enospc.c
- fake_enospc.h
- fgn_getinfo.c
- fgncalsp.h
- file_head_read.c
- file_head_write.c
- file_input.c
- file_input.h
- filestruct.h
- fix_pages.c
- forced_exit_err_display.c
- forced_exit_err_display.h
- fork_init.h
- ftok_sem_get_common.c
- ftok_sem_incrcnt.c
- ftok_sem_incrcnt.h
- ftok_sems.c
- ftok_sems.h
- gbldirnam.h
- gcall.h
- gdedefaults.gtc
- gdeget.m
- gdeput.m
- gdeverif.m
- gds_file_size.c
- gds_rundown.c
- gds_rundown_ch.c
- gds_rundown_err_cleanup.c
- gds_rundown_err_cleanup.h
- gdsfheadsp.h
- gdsfilext.c
- gdsfilext_nojnl.c
- gdsfilext_nojnl.h
- gen_gtm_threadgbl_deftypes.csh
- gen_keypair.sh
- gen_sym_hash.sh
- gen_sym_key.sh
- gen_ttt.csh
- gen_vms_ttt.csh
- gen_xfer_desc.cmake
- gen_xfer_desc.csh
- generate_help.csh
- generic_signal_handler.c
- generic_signal_handler.h
- gengtmdeftypes.csh
- genpat.c
- get_command_line.c
- get_full_path.c
- get_page_size.c
- get_src_line.c
- get_ztimeout.c
- getcaps.c
- getcaps.h
- geteditor.c
- geteditor.h
- getjobnum.c
- getmaxfds.c
- getmaxfds.h
- getstorage.c
- getzmode.c
- getzprocess.c
- go_load.c
- golevel.c
- goq_load.c
- gpgagent.tab.in
- grab_crit.c
- grab_crit_encr_cycle_sync.c
- grab_crit_immediate.c
- grab_latch.c
- grab_lock.c
- gse.mpt
- gt_ar.csh
- gt_as.csh
- gt_cc.csh
- gt_timer.h
- gt_timers.c
- gt_timers_add_safe_hndlrs.c
- gt_timers_add_safe_hndlrs.h
- gtcmstub.c
- gtcmtrstub.c
- gtm.c
- gtm.gtc
- gtm_aio.h
- gtm_asm_establish.c
- gtm_bintim.c
- gtm_c_stack_trace.c
- gtm_c_stack_trace_semop.c
- gtm_c_stack_trace_semop.h
- gtm_compare_dir.csh
- gtm_compile.c
- gtm_compile.h
- gtm_confstr.c
- gtm_conv.c
- gtm_conv.h
- gtm_conv_init.c
- gtm_cshrc.csh
- gtm_dbjnl_dupfd_check.c
- gtm_dbjnl_dupfd_check.h
- gtm_descript.h
- gtm_dump.c
- gtm_dump_core.c
- gtm_env.csh
- gtm_env_init_sp.c
- gtm_env_translate.c
- gtm_exit_handler.c
- gtm_exit_handler.h
- gtm_fd_trace.c
- gtm_file_remove.c
- gtm_file_stat.c
- gtm_filter_command.c
- gtm_filter_command.h
- gtm_fork_n_core.c
- gtm_ftok.c
- gtm_getmsg.c
- gtm_getpwuid.c
- gtm_icu.c
- gtm_icu.h
- gtm_icu_api.h
- gtm_image_exit.c
- gtm_init_env.c
- gtm_ipc.h
- gtm_is_main_thread.c
- gtm_isanlp.c
- gtm_isanlp.h
- gtm_logicals.h
- gtm_main.c
- gtm_main.h
- gtm_multi_proc.c
- gtm_multi_proc.h
- gtm_multi_thread.c
- gtm_multi_thread.h
- gtm_permissions.c
- gtm_permissions.h
- gtm_pipe.c
- gtm_pipe.h
- gtm_poll.h
- gtm_post_startup_check_init.c
- gtm_post_startup_check_init.h
- gtm_pthread.h
- gtm_pthread_init_key.c
- gtm_pthread_init_key.h
- gtm_putmsg.c
- gtm_putmsg_list.c
- gtm_rel_quant.h
- gtm_rename.c
- gtm_repl_multi_inst.h
- gtm_sem.h
- gtm_semaphore.h
- gtm_semutils.c
- gtm_semutils.h
- gtm_signal.h
- gtm_startup.c
- gtm_startup.h
- gtm_startup_chk.c
- gtm_startup_chk.h
- gtm_statvfs.h
- gtm_stdio.c
- gtm_stdio.h
- gtm_syslog.h
- gtm_system.c
- gtm_term.h
- gtm_termios.h
- gtm_test_install.csh
- gtm_test_install.txt
- gtm_text_alloc.c
- gtm_threadgbl_asm_access.txt
- gtm_threadgbl_deftypes_asm.si
- gtm_times.h
- gtm_tls.c
- gtm_tls.h
- gtm_tls_funclist.h
- gtm_tls_impl.c
- gtm_tls_impl.h
- gtm_tls_interface.h
- gtm_tls_loadlibrary.c
- gtm_tparm.c
- gtm_tparm.h
- gtm_tputs.c
- gtm_tputs.h
- gtm_trigger.c
- gtm_trigger.h
- gtm_trigger_trc.h
- gtm_ulimit.h
- gtm_unique_file_util.c
- gtm_unlink_all.c
- gtm_unlink_all.h
- gtm_utf8.c
- gtm_utf8.h
- gtm_version_dirname.csh
- gtm_version_dirname.sed
- gtm_wake.c
- gtm_zlib.c
- gtm_zlib.h
- gtmbase.gtc
- gtmci.c
- gtmci.h
- gtmci_ch.c
- gtmci_isv.c
- gtmci_signals.c
- gtmci_signals.h
- gtmcrypt.h
- gtmcrypt_dbk_ref.c
- gtmcrypt_dbk_ref.h
- gtmcrypt_entry.c
- gtmcrypt_funclist.h
- gtmcrypt_interface.h
- gtmcrypt_pk_ref.c
- gtmcrypt_pk_ref.h
- gtmcrypt_ref.c
- gtmcrypt_ref.h
- gtmcrypt_sym_ref.c
- gtmcrypt_sym_ref.h
- gtmcrypt_util.c
- gtmcrypt_util.h
- gtmcshrc.gtc
- gtmdbgflags.h
- gtmdef.csh
- gtmdefinedtypestodb.m
- gtmexcludetypelist.txt
- gtmexe_symbols.exp
- gtmgblstat.c
- gtmgblstat.h
- gtmgblstat.xc
- gtmhelp.m
- gtmhlpld.m
- gtminstall.sh
- gtmio.h
- gtmio_ch.c
- gtmlink.c
- gtmlink.h
- gtmpcat_sh.txt
- gtmprofile.gtc
- gtmprofile_preV54000.gtc
- gtmrecv.c
- gtmrecv.h
- gtmrecv_end.c
- gtmrecv_fetchresync.c
- gtmrecv_poll_actions.c
- gtmrecv_process.c
- gtmrecv_shutdown.c
- gtmrecv_stopfilter.c
- gtmsecshr.c
- gtmsecshr.h
- gtmsecshr_sock_cleanup.c
- gtmsecshr_sock_init.c
- gtmsecshr_wrapper.c
- gtmshr_symbols.exp
- gtmsiginfo.h
- gtmsource.c
- gtmsource.h
- gtmsource_changelog.c
- gtmsource_checkforbacklog.c
- gtmsource_checkhealth.c
- gtmsource_end.c
- gtmsource_flush_fh.c
- gtmsource_freeze.c
- gtmsource_get_opt.c
- gtmsource_heartbeat.c
- gtmsource_inline.h
- gtmsource_jnl_release_timer.c
- gtmsource_jnlpool.c
- gtmsource_losttncomplete.c
- gtmsource_mode_change.c
- gtmsource_needrestart.c
- gtmsource_onln_rlbk_clnup.c
- gtmsource_process.c
- gtmsource_process_ops.c
- gtmsource_readfiles.c
- gtmsource_readpool.c
- gtmsource_rootprimary_init.c
- gtmsource_seqno_init.c
- gtmsource_showbacklog.c
- gtmsource_shutdown.c
- gtmsource_srv_latch.c
- gtmsource_srv_latch.h
- gtmsource_statslog.c
- gtmsource_stopfilter.c
- gtmsrc.csh
- gtmstart.gtc
- gtmstop.gtc
- gtmthreadgblasm.m
- gtmxc_types.h
- gv_trig_cmd_table.h
- gv_trigger.c
- gv_trigger.h
- gv_trigger_protos.h
- gvcmx_canremlk_stub.c
- gvcmx_reqremlk_stub.c
- gvcmx_resremlk_stub.c
- gvcmx_susremlk_stub.c
- gvcmy_open.h
- gvcmz_bunch_stub.c
- gvcmz_error_stub.c
- gvcmz_neterr_stub.c
- gvcmz_zflush_stub.c
- gvcst_init_sysops.c
- gvcst_spr_data.c
- gvcst_spr_kill.c
- gvcst_spr_order.c
- gvcst_spr_query.c
- gvcst_spr_queryget.c
- gvcst_spr_zprevious.c
- gvusr.c
- hex2utf.mpt
- hugetlbfs_overrides.c
- hugetlbfs_overrides.h
- import_and_sign_key.sh
- incr_link.c
- incr_link.h
- init_gtm.c
- install_debug_symbols_sh.txt
- install_gtmpcat_sh.txt
- interlock.h
- invocation_mode.h
- io_get_fgn_driver.c
- io_init_name.c
- io_is_rm.c
- io_is_sn.c
- io_open_try.c
- io_type.c
- iob.h
- iob_close.c
- iob_flush.c
- iob_open_rd.c
- iob_open_wt.c
- iob_read.c
- iob_write.c
- ioff_open.c
- iopi_iocontrol.c
- iopi_open.c
- iorm_close.c
- iorm_flush.c
- iorm_get.c
- iorm_open.c
- iorm_rdone.c
- iorm_read.c
- iorm_readfl.c
- iorm_use.c
- iorm_write.c
- iorm_wteol.c
- iormdef.h
- iosize.h
- iosocket_pass_local.c
- iosocket_tls.c
- iosp.h
- iott_close.c
- iott_edit.c
- iott_edit.h
- iott_flush.c
- iott_flush_time.h
- iott_iocontrol.c
- iott_open.c
- iott_rdone.c
- iott_read.c
- iott_readfl.c
- iott_use.c
- iott_write.c
- iottdef.h
- iottdefsp.h
- ious_iocontrol.c
- ious_open.c
- ious_rdone.c
- ious_read.c
- ious_readfl.c
- ious_write.c
- ious_wtone.c
- ipcrmid.c
- ipcrmid.h
- is_file_identical.c
- is_fstype_nfs.c
- is_fstype_nfs.h
- is_icu_symbol_rename.csh
- is_proc_alive.c
- is_raw_dev.c
- is_raw_dev.h
- jnl_file_close_timer.c
- jnl_file_close_timer.h
- jnl_file_extend.c
- jnl_file_open.c
- jnl_fsync.c
- jnl_output_sp.c
- jnl_prc_vector.c
- jnlext_merge_sort_prepare.c
- jnlext_write.c
- jnlpool_init.c
- jnlsp.h
- jobchild_init.c
- jobchild_init.h
- joberr.h
- jobexam_signal_handler.c
- jobexam_signal_handler.h
- jobsp.h
- kitstart.csh
- laberror.c
- lib_list_ar.sed
- lib_list_lint.sed
- libdse.list
- liblke.list
- libmupip.list
- libstub.list
- lintgtm.csh
- lintimage.csh
- linuxi686_badd.txt
- list_file.c
- lke.c
- lke_cmd.c
- lke_cmd_disallow.c
- lke_cmd_disallow.h
- lke_ctrlc_handler.c
- lke_fileio.c
- lke_fileio.h
- lke_getansw.c
- lke_help.c
- load.h
- lockdefs.h
- lowerc_cp.sh
- lref_parse.c
- m_zrupdate.c
- m_ztrigger.c
- make_cimode.c
- make_dmode.c
- make_mode.c
- make_mode.h
- Makefile.mk
- map_sym.c
- maskpass.c
- mdefsa.h
- mdefsp.h
- mem_access.c
- memprot.c
- memprot.h
- mkutf8dir.csh
- mmrhash.c
- mmrhash.h
- msg.h
- mu_all_version_standalone.c
- mu_all_version_standalone.h
- mu_cre_file.c
- mu_cre_structs.c
- mu_cre_structs.h
- mu_decrypt.c
- mu_decrypt.h
- mu_extract.c
- mu_getkey.c
- mu_getkey.h
- mu_getlst.c
- mu_gvis.c
- mu_int_ch.c
- mu_op_open.c
- mu_op_open.h
- mu_outofband_setup.c
- mu_replpool_grab_sem.c
- mu_replpool_release_sem.c
- mu_rndwn_all.c
- mu_rndwn_all.h
- mu_rndwn_file.c
- mu_rndwn_file.h
- mu_rndwn_repl_instance.c
- mu_rndwn_repl_instance.h
- mu_rndwn_replpool.c
- mu_rndwn_replpool.h
- mu_rndwn_rlnkctl.c
- mu_rndwn_rlnkctl.h
- mu_signal_process.c
- mu_size_arsample.c
- mu_size_impsample.c
- mu_size_scan.c
- mu_swap_root.c
- mu_term_setup.c
- mu_term_setup.h
- mu_trig_trgfile.c
- mu_trig_trgfile.h
- mu_truncate.c
- mu_truncate.h
- mu_upgrd_sig_init.h
- mubexpfilnam.c
- mubfilcpy.c
- mubgetfil.c
- mubinccpy.c
- mucblkini.c
- mumps.cmake
- mumps_clitab.c
- mup_bak_sys.c
- mupip.c
- mupip_cmd.c
- mupip_cmd_disallow.c
- mupip_cmd_disallow.h
- mupip_crypt.c
- mupip_crypt.h
- mupip_ctrl.c
- mupip_ctrl.h
- mupip_cvtgbl.c
- mupip_cvtpgm.c
- mupip_dump_fhead.c
- mupip_dump_fhead.h
- mupip_endiancvt.c
- mupip_endiancvt.h
- mupip_exit.c
- mupip_exit_handler.c
- mupip_ftok.c
- mupip_ftok.h
- mupip_hash.c
- mupip_hash.h
- mupip_help.c
- mupip_load_reg_list.c
- mupip_load_reg_list.h
- mupip_load_triggerfile.h
- mupip_quit.c
- mupip_rctldump.c
- mupip_rctldump.h
- mupip_reorg_encrypt.c
- mupip_reorg_encrypt.h
- mupip_restore.c
- mupip_rundown.c
- mupip_sems.c
- mupip_sems.h
- mupip_set_file.c
- mupip_set_jnlfile.c
- mupip_size.c
- mupip_size.h
- mupip_trigger.c
- mupip_trigger.h
- mupip_upgrade_standalone.c
- mupip_upgrade_standalone.h
- muprecsp.h
- mur_cre_file_extfmt.c
- mur_read_file_sp.c
- murgetlst.c
- mutex.c
- mutex_sock_cleanup.c
- mutex_sock_init.c
- mutex_wake_proc.c
- mutexsp.h
- obj_code.c
- obj_file.c
- obj_filesp.h
- obj_fileu.c
- offset.awk
- offset.csh
- ojchildioclean.c
- ojchildioset.c
- ojchildparms.c
- ojchkfs.c
- ojparams.c
- ojstartchild.c
- op_currhd.c
- op_fgnlookup.c
- op_fnextract.c
- op_fnextract.h
- op_fnfgncal.c
- op_fngetdvi.c
- op_fngetjpi.c
- op_fngetlki.c
- op_fngetsyi.c
- op_fnp1.c
- op_fnpiece.c
- op_fnpopulation.c
- op_fnrandom.c
- op_fnzcall.c
- op_fnzconvert.c
- op_fnzfile.c
- op_fnzlkid.c
- op_fnzparse.c
- op_fnzpeek.c
- op_fnzpid.c
- op_fnzpriv.c
- op_fnzsearch.c
- op_fnzsetprv.c
- op_fnzsyslog.c
- op_fnztrnlnm.c
- op_job.c
- op_setextract.c
- op_setp1.c
- op_setpiece.c
- op_zattach.c
- op_zedit.c
- op_zhelp_xfr.c
- op_zhorolog.c
- op_zlink.c
- op_zmess.c
- op_zrupdate.c
- op_ztrigger.c
- op_zut.c
- outc.c
- parse_file.c
- parse_file.h
- peekbyname.mpt
- pinentry-gtm.sh
- pinentry.m
- pipeint_stats.c
- pipeint_stats.h
- probecrit_rec.h
- proc_wait_stat.c
- proc_wait_stat.h
- process_reorg_encrypt_restart.c
- process_reorg_encrypt_restart.h
- put_cdidx.c
- random.c
- random.h
- rc.h
- rc_cpt.h
- rc_cpt_ops.c
- recover_truncate.c
- recover_truncate.h
- recvpool_init.c
- reg_cmcheck.c
- rel_crit.c
- rel_latch.c
- rel_lock.c
- rel_quant.c
- relinkctl.c
- relinkctl.h
- remove_rms.c
- repl_inst_create.c
- repl_inst_dump.c
- repl_inst_dump.h
- repl_inst_edit.c
- repl_inst_ftok_counter_halted.c
- repl_inst_ftok_counter_halted.h
- repl_instance.c
- repl_instance.h
- repl_ipc_cleanup.c
- repl_log.c
- repl_log_init.c
- repl_logfileinfo_get.c
- repl_msg.h
- repl_sem.c
- repl_sem.h
- repl_sem_sp.h
- repl_sp.h
- resetterm.c
- rmv_mul_slsh.c
- rmv_mul_slsh.h
- rtnhdr.h
- rtnobj.c
- rtnobj.h
- rts_error.c
- runall.csh
- runall_cc_many.csh
- runall_cc_one.csh
- same_device_check.c
- scantypedefs.m
- secshr_client.c
- secshr_client.h
- send_msg.c
- set_jnl_file_close.c
- set_library_path.csh
- set_num_additional_processors.c
- set_zstatus.c
- setactive.csh
- setterm.c
- sgtm_putmsg.c
- show_install_config.sh
- sig_init.c
- sig_init.h
- simple_timeout_timer.c
- sleep.c
- sleep.h
- source_file.c
- ss_anal_shdw_file.c
- ss_context_mgr.c
- ss_get_block.c
- ss_initiate.c
- ss_lock_facility.c
- ss_lock_facility.h
- ss_read_block.c
- ss_release.c
- ss_shdw_mgr.c
- ss_write_block.c
- std_dev_outbndset.c
- stop_image.c
- stop_image_ch.c
- str_match.c
- str_match.h
- stripmine.awk
- suspend.c
- suspsigs_handler.c
- suspsigs_handler.h
- t_recycled2free.c
- t_recycled2free.h
- tab_probecrit_rec.h
- term_setup.c
- timersp.h
- trans_log_name.c
- trigger.h
- trigger_cmd.c
- trigger_compare.c
- trigger_compare_protos.h
- trigger_delete.c
- trigger_delete_protos.h
- trigger_fill_xecute_buffer.c
- trigger_fill_xecute_buffer.h
- trigger_gbl_fill_xecute_buffer.c
- trigger_gbl_fill_xecute_buffer.h
- trigger_incr_cycle.c
- trigger_incr_cycle.h
- trigger_locate_andor_load.c
- trigger_parse.c
- trigger_parse_protos.h
- trigger_read_andor_locate.h
- trigger_scan_string.c
- trigger_scan_string.h
- trigger_select.c
- trigger_select_protos.h
- trigger_source_read_andor_verify.c
- trigger_subs_def.h
- trigger_tpwrap_ch.c
- trigger_trgfile.c
- trigger_trgfile_protos.h
- trigger_update.c
- trigger_update_protos.h
- trigger_upgrade.c
- trigger_upgrade_protos.h
- trigger_user_name.c
- trigger_user_name.h
- trmdef.h
- ttt.txt
- upd_log_init.c
- urx_remove.c
- utf2hex.mpt
- utfcgr.c
- utfcgr.h
- utfcgr_trc.h
- util_exit_handler.c
- util_help.c
- util_help.h
- util_in_open.c
- util_input.c
- util_out_print_gtmio.c
- util_out_print_vaparm.h
- util_output.c
- util_output_cm.c
- util_spawn.c
- v15_filestruct.h
- versions.csh
- wait_for_disk_space.c
- wait_for_disk_space.h
- warn_db_sz.c
- warn_db_sz.h
- wcs_clean_dbsync.c
- wcs_clean_dbsync.h
- wcs_clean_dbsync_timer.c
- wcs_flu.c
- wcs_get_space.c
- wcs_write_in_progress_wait.c
- wcs_write_in_progress_wait.h
- wcs_wt.h
- wcs_wt_restart.c
- wcs_wterror.c
- wcs_wtfini.c
- wcs_wtfini_nocrit.c
- wcs_wtstart.c
- wcs_wtstart_fini.c
- xtrgtmtypes.awk
- ygblstat.mpt
- zbreaksp.h
- zcall_package.c
- zcall_package.h
- zhist.c
- zl_cmd_qlf.c
- zlmov_lnames.c
- zro_gettok.c
- zro_load.c
- zro_search.c
- zro_shlibs.c
- zro_shlibs.h
- zroutinessp.h
- zshow_devices.c
- zshow_rctldump.c
- zshow_zcalls.c
- ztimeout_routines.c
- ztimeout_routines.h
iopi_iocontrol.c @HEAD — raw · history · blame
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 | /**************************************************************** * * * Copyright (c) 2008-2021 Fidelity National Information * * Services, Inc. and/or its subsidiaries. All rights reserved. * * * * This source code contains the intellectual property * * of its copyright holder(s), and is made available * * under a license. If you do not know the terms of * * the license, please stop and do not read further. * * * ****************************************************************/ /* iopi_iocontrol.c */ #include "mdef.h" #include "gtm_unistd.h" #include "gtm_inet.h" #include "gtm_stdio.h" #include "gtm_string.h" #include "io.h" #include "iormdef.h" #include "iotimer.h" #include "gt_timer.h" #include "gtm_caseconv.h" #include "min_max.h" #include "arit.h" #include "gtmio.h" /* define max strings for $zkey */ #define MAX_FIXED_STRING (2 * NUM_DEC_DG_2L) + 2 #define MAX_VAR_STRING NUM_DEC_DG_2L + 1 GBLREF io_pair io_curr_device; error_def(ERR_INVCTLMNE); error_def(ERR_IOERROR); void iopi_iocontrol(mstr *mn, int4 argcnt, va_list args) { char action[MAX_DEVCTL_LENGTH]; d_rm_struct *d_rm; int rc; d_rm = (d_rm_struct *) io_curr_device.out->dev_sp; /* WRITE /EOF only applies to PIPE devices. Sequential file and FIFO devices should be closed with CLOSE.*/ if (!d_rm->is_pipe) return; /* we should not get here unless there is some string length after write / */ assertpro((int)mn->len); if (0 == mn->len) return; lower_to_upper((uchar_ptr_t)&action[0], (uchar_ptr_t)mn->addr, MIN(mn->len, SIZEOF(action))); if (0 == memcmp(&action[0], "EOF", MIN(mn->len, SIZEOF(action)))) { /* Implement the write /EOF action. Close the output stream to force any blocked output to complete. * Doing a write /EOF closes the output file descriptor for the pipe device but does not close the * device. Since the M program could attempt this command more than once, check if the file descriptor * is already closed before the actual close. * Ignore the /EOF action if the device is read-only as this is a nop */ if (d_rm->read_only) return; if (FD_INVALID != d_rm->fildes) { /* A new line will be inserted by iorm_cond_wteol() if $X is non-zero, just like it is done in iorm_close.c. * After this call returns, * $X will be zero, which will keep iorm_readfl() from attempting an iorm_wteol() * in the fixed mode after the file descriptor has been closed. */ iorm_cond_wteol(io_curr_device.out); IORM_FCLOSE(d_rm, fildes, filstr); assert(FD_INVALID == d_rm->fildes); assert(NULL == d_rm->filstr); } } else rts_error_csa(CSA_ARG(NULL) VARLSTCNT(1) ERR_INVCTLMNE); return; } void iopi_dlr_device(mstr *d) { io_desc *iod; /* We will default to the input device for setting $device, since pipe uses both */ iod = io_curr_device.in; PUT_DOLLAR_DEVICE_INTO_MSTR(iod, d); return; } void iopi_dlr_key(mstr *d) { io_desc *iod; int len; iod = io_curr_device.in; len = STRLEN(iod->dollar.key); /* verify internal buffer has enough space for $KEY string value */ assertpro((int)d->len > len); if (len > 0) memcpy(d->addr, iod->dollar.key, MIN(len, d->len)); d->len = len; return; } void iopi_dlr_zkey(mstr *d) { io_desc *iod; int len, save_errno; d_rm_struct *d_rm; char tname[MAX_FIXED_STRING]; gtm_int64_t record_num; /* record offset in fixed record file */ uint4 record_byte; /* byte offset in fixed record block */ boolean_t utf_active; off_t cur_position; iod = io_curr_device.in; d_rm = (d_rm_struct *)(iod->dev_sp); if (d_rm->fifo || d_rm->is_pipe || (2 >= d_rm->fildes)) d->len = 0; else { /* if last operation was a write we need to get the current location into file_pos */ if (RM_WRITE == d_rm->lastop) { /* need to do an lseek to get current location in file */ cur_position = lseek(d_rm->fildes, 0, SEEK_CUR); if ((off_t)-1 == cur_position) { save_errno = errno; SET_DOLLARDEVICE_ONECOMMA_STRERROR(iod, save_errno); RTS_ERROR_CSA_ABT(NULL, VARLSTCNT(9) ERR_IOERROR, 7, RTS_ERROR_LITERAL("lseek"), RTS_ERROR_LITERAL("iopi_dlr_zkey()"), CALLFROM, save_errno); } else d_rm->file_pos = cur_position; } if (d_rm->fixed) { utf_active = gtm_utf8_mode ? (IS_UTF_CHSET(iod->ichset)) : FALSE; if (!utf_active) { /* for M mode the actual recordsize is in iod->width set by open with recordsize or use with width */ record_num = d_rm->file_pos / iod->width; record_byte = d_rm->file_pos % iod->width; } else { record_num = d_rm->file_pos / d_rm->recordsize; /* temporarily save bytes remaining to be read from record */ record_byte = (int4)(d_rm->inbuf_top - d_rm->inbuf_off); /* if partially empty then the offset is based on recordsize */ if (record_byte) { /* bytes read from the record is recordsize minus bytes remaining to be read from record */ record_byte = d_rm->recordsize - record_byte; /* decrement record_num since only partially filled */ record_num--; } } SNPRINTF(tname, MAX_FIXED_STRING, "%lld,%ld", record_num, record_byte); } else { record_num = d_rm->file_pos; SNPRINTF(tname, MAX_VAR_STRING, "%lld", record_num); } len = STRLEN(tname); /* verify internal buffer has enough space for $ZKEY string value */ assertpro((int)d->len > len); if (0 < len) memcpy(d->addr, tname, MIN(len,d->len)); d->len = len; } return; } |