Changeset 1785 for trunk/src/kash/shinstance.c
- Timestamp:
- Sep 14, 2008, 7:31:16 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kash/shinstance.c
r1784 r1785 320 320 g_sig_state[signo].sa = old; 321 321 #else 322 g_sig_state[signo].sa.sa_handle = SIG_DFL;322 g_sig_state[signo].sa.sa_handler = SIG_DFL; 323 323 g_sig_state[signo].sa.sa_flags = 0; 324 324 g_sig_state[signo].sa.sa_mask = shold.sh_mask; 325 325 #endif 326 TRACE2((psh, "sh_int_lazy_init_sigaction: signo=%d:%s sa_handler=%p sa_flags=%#x\n", 327 signo, sys_signame[signo], g_sig_state[signo].sa.sa_handler, g_sig_state[signo].sa.sa_flags)); 326 328 327 329 /* update all shells */ … … 345 347 static void sh_sig_common_handler(int signo) 346 348 { 347 349 fprintf(stderr, "sh_sig_common_handler: signo=%d:%s\n", signo, sys_signame[signo]); 348 350 } 349 351 … … 351 353 int sh_sigaction(shinstance *psh, int signo, const struct shsigaction *newp, struct shsigaction *oldp) 352 354 { 353 printf("sh_sigaction: signo=%d newp=%p oldp=%p\n", signo, newp, oldp); 355 if (newp) 356 TRACE2((psh, "sh_sigaction: signo=%d:%s newp=%p:{.sh_handler=%p, .sh_flags=%#x} oldp=%p\n", 357 signo, sys_signame[signo], newp, newp->sh_handler, newp->sh_flags, oldp)); 358 else 359 TRACE2((psh, "sh_sigaction: signo=%d:%s newp=NULL oldp=%p\n", signo, sys_signame[signo], oldp)); 354 360 355 361 /* … … 422 428 g_sig_state[signo].sa.sa_handler = sh_sig_common_handler; 423 429 else if (g_sig_state[signo].num_ignore) 424 g_sig_state[signo].sa.sa_handler = SIG_ DFL;430 g_sig_state[signo].sa.sa_handler = SIG_IGN; 425 431 else 426 432 g_sig_state[signo].sa.sa_handler = SIG_DFL; 427 433 g_sig_state[signo].sa.sa_flags = psh->sigactions[signo].sh_flags & SA_RESTART; 428 434 435 TRACE2((psh, "sh_sigaction: setting signo=%d:%s to {.sa_handler=%p, .sa_flags=%#x}\n", 436 signo, sys_signame[signo], g_sig_state[signo].sa.sa_handler, g_sig_state[signo].sa.sa_flags)); 429 437 # ifdef _MSC_VER 430 438 if (signal(signo, g_sig_state[signo].sa.sa_handler) == SIG_ERR) … … 533 541 void sh_abort(shinstance *psh) 534 542 { 535 #ifdef SH_PURE_STUB_MODE 536 #elif defined(SH_STUB_MODE) 537 (void)psh; 543 TRACE2((psh, "sh_abort\n")); 544 545 #ifdef SH_PURE_STUB_MODE 546 #elif defined(SH_STUB_MODE) 538 547 abort(); 539 548 #else 540 549 #endif 550 551 TRACE2((psh, "sh_abort returns!\n")); 552 (void)psh; 541 553 } 542 554 543 555 void sh_raise_sigint(shinstance *psh) 544 556 { 557 TRACE2((psh, "sh_raise(SIGINT)\n")); 558 545 559 #ifdef SH_PURE_STUB_MODE 546 560 #elif defined(SH_STUB_MODE) … … 549 563 #else 550 564 #endif 565 566 TRACE2((psh, "sh_raise(SIGINT) returns\n")); 567 (void)psh; 551 568 } 552 569 553 570 int sh_kill(shinstance *psh, pid_t pid, int signo) 554 571 { 572 int rc; 573 574 #ifdef SH_PURE_STUB_MODE 575 rc = -1; 576 #elif defined(SH_STUB_MODE) 577 # ifdef _MSC_VER 578 rc = -1; 579 # else 580 //fprintf(stderr, "kill(%d, %d)\n", pid, signo); 581 rc = kill(pid, signo); 582 # endif 583 #else 584 #endif 585 586 TRACE2((psh, "sh_kill(%d, %d) -> %d [%d]\n", pid, signo, rc, errno)); 587 (void)psh; 588 return rc; 589 } 590 591 int sh_killpg(shinstance *psh, pid_t pgid, int signo) 592 { 593 int rc; 594 595 #ifdef SH_PURE_STUB_MODE 596 rc = -1; 597 #elif defined(SH_STUB_MODE) 598 # ifdef _MSC_VER 599 rc = -1; 600 # else 601 //fprintf(stderr, "killpg(%d, %d)\n", pgid, signo); 602 rc = killpg(pgid, signo); 603 # endif 604 #else 605 #endif 606 607 TRACE2((psh, "sh_killpg(%d, %d) -> %d [%d]\n", pgid, signo, rc, errno)); 608 (void)psh; 609 return rc; 610 } 611 612 clock_t sh_times(shinstance *psh, shtms *tmsp) 613 { 614 #ifdef SH_PURE_STUB_MODE 615 return 0; 616 #elif defined(SH_STUB_MODE) 617 (void)psh; 618 # ifdef _MSC_VER 619 return 0; 620 # else 621 return times(tmsp); 622 # endif 623 #else 624 #endif 625 } 626 627 int sh_sysconf_clk_tck(void) 628 { 629 #ifdef SH_PURE_STUB_MODE 630 return 1; 631 #else 632 # ifdef _MSC_VER 633 return CLK_TCK; 634 # else 635 return sysconf(_SC_CLK_TCK); 636 # endif 637 #endif 638 } 639 640 pid_t sh_fork(shinstance *psh) 641 { 642 pid_t pid; 643 TRACE2((psh, "sh_fork\n")); 644 645 #ifdef SH_PURE_STUB_MODE 646 pid = -1; 647 #elif defined(SH_STUB_MODE) 648 # ifdef _MSC_VER 649 pid = -1; 650 # else 651 pid = fork(); 652 # endif 653 #else 654 #endif 655 656 TRACE2((psh, "sh_fork -> %d [%d]\n", pid, errno)); 657 (void)psh; 658 return pid; 659 } 660 661 pid_t sh_waitpid(shinstance *psh, pid_t pid, int *statusp, int flags) 662 { 663 pid_t pidret; 664 665 *statusp = 0; 666 #ifdef SH_PURE_STUB_MODE 667 pidret = -1; 668 #elif defined(SH_STUB_MODE) 669 # ifdef _MSC_VER 670 pidret = -1; 671 # else 672 pidret = waitpid(pid, statusp, flags); 673 # endif 674 #else 675 #endif 676 677 TRACE2((psh, "waitpid(%d, %p, %#x) -> %d [%d] *statusp=%#x (rc=%d)\n", pid, statusp, flags, 678 pidret, errno, *statusp, WEXITSTATUS(*statusp))); 679 (void)psh; 680 return pidret; 681 } 682 683 void sh__exit(shinstance *psh, int rc) 684 { 685 TRACE2((psh, "sh__exit(%d)\n", rc)); 686 (void)psh; 687 555 688 #ifdef SH_PURE_STUB_MODE 556 689 return -1; 557 690 #elif defined(SH_STUB_MODE) 558 (void)psh; 559 # ifdef _MSC_VER 560 return -1; 561 # else 562 //fprintf(stderr, "kill(%d, %d)\n", pid, signo); 563 return kill(pid, signo); 564 # endif 565 #else 566 #endif 567 } 568 569 int sh_killpg(shinstance *psh, pid_t pgid, int signo) 570 { 571 #ifdef SH_PURE_STUB_MODE 572 return -1; 573 #elif defined(SH_STUB_MODE) 574 (void)psh; 575 # ifdef _MSC_VER 576 return -1; 577 # else 578 //fprintf(stderr, "killpg(%d, %d)\n", pgid, signo); 579 return killpg(pgid, signo); 580 # endif 581 #else 582 #endif 583 } 584 585 clock_t sh_times(shinstance *psh, shtms *tmsp) 586 { 587 #ifdef SH_PURE_STUB_MODE 588 return 0; 589 #elif defined(SH_STUB_MODE) 590 (void)psh; 591 # ifdef _MSC_VER 592 return 0; 593 # else 594 return times(tmsp); 595 # endif 596 #else 597 #endif 598 } 599 600 int sh_sysconf_clk_tck(void) 601 { 602 #ifdef SH_PURE_STUB_MODE 603 return 1; 604 #else 605 # ifdef _MSC_VER 606 return CLK_TCK; 607 # else 608 return sysconf(_SC_CLK_TCK); 609 # endif 610 #endif 611 } 612 613 pid_t sh_fork(shinstance *psh) 614 { 615 #ifdef SH_PURE_STUB_MODE 616 return -1; 617 #elif defined(SH_STUB_MODE) 618 (void)psh; 619 # ifdef _MSC_VER 620 return -1; 621 # else 622 return fork(); 623 # endif 624 #else 625 #endif 626 } 627 628 pid_t sh_waitpid(shinstance *psh, pid_t pid, int *statusp, int flags) 629 { 630 *statusp = 0; 631 #ifdef SH_PURE_STUB_MODE 632 return -1; 633 #elif defined(SH_STUB_MODE) 634 (void)psh; 635 # ifdef _MSC_VER 636 return -1; 637 # else 638 pid = waitpid(pid, statusp, flags); 639 //fprintf(stderr, "waitpid -> %d *statusp=%d (rc=%d) flags=%#x\n", pid, *statusp, WEXITSTATUS(*statusp), flags); 691 _exit(rc); 692 #else 693 #endif 694 } 695 696 int sh_execve(shinstance *psh, const char *exe, const char * const *argv, const char * const *envp) 697 { 698 int rc; 699 700 #ifdef DEBUG 701 /* log it all */ 702 TRACE2((psh, "sh_execve(%p:{%s}, %p, %p}\n", exe, exe, argv, envp)); 703 for (rc = 0; argv[rc]; rc++) 704 TRACE2((psh, " argv[%d]=%p:{%s}\n", rc, argv[rc], argv[rc])); 705 #endif 706 707 #ifdef SH_PURE_STUB_MODE 708 rc = -1; 709 #elif defined(SH_STUB_MODE) 710 # ifdef _MSC_VER 711 rc = -1; 712 # else 713 rc = execve(exe, (char **)argv, (char **)envp); 714 # endif 715 #else 716 #endif 717 718 TRACE2((psh, "sh_execve -> %d [%d]\n", rc, errno)); 719 (void)psh; 720 return rc; 721 } 722 723 uid_t sh_getuid(shinstance *psh) 724 { 725 #ifdef SH_PURE_STUB_MODE 726 uid_t uid = 0; 727 #elif defined(SH_STUB_MODE) 728 # ifdef _MSC_VER 729 uid_t uid = 0; 730 # else 731 uid_t uid = getuid(); 732 # endif 733 #else 734 #endif 735 736 TRACE2((psh, "sh_getuid() -> %d [%d]\n", uid, errno)); 737 (void)psh; 738 return uid; 739 } 740 741 uid_t sh_geteuid(shinstance *psh) 742 { 743 #ifdef SH_PURE_STUB_MODE 744 uid_t euid = 0; 745 #elif defined(SH_STUB_MODE) 746 # ifdef _MSC_VER 747 uid_t euid = 0; 748 # else 749 uid_t euid = geteuid(); 750 # endif 751 #else 752 #endif 753 754 TRACE2((psh, "sh_geteuid() -> %d [%d]\n", euid, errno)); 755 (void)psh; 756 return euid; 757 } 758 759 gid_t sh_getgid(shinstance *psh) 760 { 761 #ifdef SH_PURE_STUB_MODE 762 gid_t gid = 0; 763 #elif defined(SH_STUB_MODE) 764 # ifdef _MSC_VER 765 gid_t gid = 0; 766 # else 767 gid_t gid = getgid(); 768 # endif 769 #else 770 #endif 771 772 TRACE2((psh, "sh_getgid() -> %d [%d]\n", gid, errno)); 773 (void)psh; 774 return gid; 775 } 776 777 gid_t sh_getegid(shinstance *psh) 778 { 779 #ifdef SH_PURE_STUB_MODE 780 gid_t egid = 0; 781 #elif defined(SH_STUB_MODE) 782 # ifdef _MSC_VER 783 gid_t egid = 0; 784 # else 785 gid_t egid = getegid(); 786 # endif 787 #else 788 #endif 789 790 TRACE2((psh, "sh_getegid() -> %d [%d]\n", egid, errno)); 791 (void)psh; 792 return egid; 793 } 794 795 pid_t sh_getpid(shinstance *psh) 796 { 797 pid_t pid; 798 799 #ifdef SH_PURE_STUB_MODE 800 pid = 0; 801 #elif defined(SH_STUB_MODE) 802 # ifdef _MSC_VER 803 pid = _getpid(); 804 # else 805 pid = getpid(); 806 # endif 807 #else 808 #endif 809 810 (void)psh; 640 811 return pid; 641 # endif642 #else643 #endif644 }645 646 void sh__exit(shinstance *psh, int rc)647 {648 #ifdef SH_PURE_STUB_MODE649 return -1;650 #elif defined(SH_STUB_MODE)651 (void)psh;652 _exit(rc);653 #else654 #endif655 }656 657 int sh_execve(shinstance *psh, const char *exe, const char * const *argv, const char * const *envp)658 {659 #ifdef SH_PURE_STUB_MODE660 return -1;661 #elif defined(SH_STUB_MODE)662 (void)psh;663 # ifdef _MSC_VER664 return -1;665 # else666 return execve(exe, (char **)argv, (char **)envp);667 # endif668 #else669 #endif670 }671 672 uid_t sh_getuid(shinstance *psh)673 {674 #ifdef SH_PURE_STUB_MODE675 return 0;676 #elif defined(SH_STUB_MODE)677 (void)psh;678 # ifdef _MSC_VER679 return 0;680 # else681 return getuid();682 # endif683 #else684 #endif685 }686 687 uid_t sh_geteuid(shinstance *psh)688 {689 #ifdef SH_PURE_STUB_MODE690 return 0;691 #elif defined(SH_STUB_MODE)692 (void)psh;693 # ifdef _MSC_VER694 return 0;695 # else696 return geteuid();697 # endif698 #else699 #endif700 }701 702 gid_t sh_getgid(shinstance *psh)703 {704 #ifdef SH_PURE_STUB_MODE705 return 0;706 #elif defined(SH_STUB_MODE)707 (void)psh;708 # ifdef _MSC_VER709 return 0;710 # else711 return getgid();712 # endif713 #else714 #endif715 }716 717 gid_t sh_getegid(shinstance *psh)718 {719 #ifdef SH_PURE_STUB_MODE720 return 0;721 #elif defined(SH_STUB_MODE)722 (void)psh;723 # ifdef _MSC_VER724 return 0;725 # else726 return getegid();727 # endif728 #else729 #endif730 }731 732 pid_t sh_getpid(shinstance *psh)733 {734 #ifdef SH_PURE_STUB_MODE735 return 0;736 #elif defined(SH_STUB_MODE)737 (void)psh;738 # ifdef _MSC_VER739 return _getpid();740 # else741 return getpid();742 # endif743 #else744 #endif745 812 } 746 813 … … 748 815 { 749 816 #ifdef SH_PURE_STUB_MODE 750 return 0; 751 #elif defined(SH_STUB_MODE) 752 (void)psh; 753 # ifdef _MSC_VER 754 return _getpid(); 755 # else 756 return getpgrp(); 757 # endif 758 #else 759 #endif 817 pid_t pgrp = 0; 818 #elif defined(SH_STUB_MODE) 819 # ifdef _MSC_VER 820 pid_t pgrp _getpid(); 821 # else 822 pid_t pgrp = getpgrp(); 823 # endif 824 #else 825 #endif 826 827 TRACE2((psh, "sh_getpgrp() -> %d [%d]\n", pgrp, errno)); 828 (void)psh; 829 return pgrp; 760 830 } 761 831 … … 763 833 { 764 834 #ifdef SH_PURE_STUB_MODE 765 return pid; 766 #elif defined(SH_STUB_MODE) 767 (void)psh; 768 # ifdef _MSC_VER 769 return pid; 770 # else 771 return getpgid(pid); 772 # endif 773 #else 774 #endif 835 pid_t pgid = pid; 836 #elif defined(SH_STUB_MODE) 837 # ifdef _MSC_VER 838 pid_t pgid = pid; 839 # else 840 pid_t pgid = getpgid(pid); 841 # endif 842 #else 843 #endif 844 845 TRACE2((psh, "sh_getpgid(%d) -> %d [%d]\n", pid, pgid, errno)); 846 (void)psh; 847 return pgid; 775 848 } 776 849 … … 778 851 { 779 852 #ifdef SH_PURE_STUB_MODE 780 return -1; 781 #elif defined(SH_STUB_MODE) 782 (void)psh; 783 # ifdef _MSC_VER 784 return -1; 785 # else 853 int rc = -1; 854 #elif defined(SH_STUB_MODE) 855 # ifdef _MSC_VER 856 int rc = -1; 857 # else 858 int rc = setpgid(pid, pgid); 859 # endif 860 #else 861 #endif 862 863 TRACE2((psh, "sh_setpgid(%d, %d) -> %d [%d]\n", pid, pgid, rc, errno)); 864 (void)psh; 865 return rc; 866 } 867 868 pid_t sh_tcgetpgrp(shinstance *psh, int fd) 869 { 870 pid_t pgrp; 871 872 #ifdef SH_PURE_STUB_MODE 873 pgrp = -1; 874 #elif defined(SH_STUB_MODE) 875 # ifdef _MSC_VER 876 pgrp = -1; 877 # else 878 pgrp = tcgetpgrp(fd); 879 # endif 880 #else 881 #endif 882 883 TRACE2((psh, "sh_tcgetpgrp(%d) -> %d [%d]\n", fd, pgrp, errno)); 884 (void)psh; 885 return pgrp; 886 } 887 888 int sh_tcsetpgrp(shinstance *psh, int fd, pid_t pgrp) 889 { 786 890 int rc; 787 rc = setpgid(pid, pgid); 788 //fprintf(stderr, "setpgid(%d,%d) -> %d\n", pid, pgid, rc); 891 TRACE2((psh, "sh_tcsetpgrp(%d, %d)\n", fd, pgrp)); 892 893 #ifdef SH_PURE_STUB_MODE 894 rc = -1; 895 #elif defined(SH_STUB_MODE) 896 # ifdef _MSC_VER 897 rc = -1; 898 # else 899 rc = tcsetpgrp(fd, pgrp); 900 # endif 901 #else 902 #endif 903 904 TRACE2((psh, "sh_tcsetpgrp(%d, %d) -> %d [%d]\n", fd, pgrp, rc, errno)); 905 (void)psh; 789 906 return rc; 790 # endif791 #else792 #endif793 }794 795 pid_t sh_tcgetpgrp(shinstance *psh, int fd)796 {797 #ifdef SH_PURE_STUB_MODE798 return -1;799 #elif defined(SH_STUB_MODE)800 (void)psh;801 # ifdef _MSC_VER802 return -1;803 # else804 return tcgetpgrp(fd);805 # endif806 #else807 #endif808 }809 810 int sh_tcsetpgrp(shinstance *psh, int fd, pid_t pgrp)811 {812 #ifdef SH_PURE_STUB_MODE813 return -1;814 #elif defined(SH_STUB_MODE)815 (void)psh;816 # ifdef _MSC_VER817 return -1;818 # else819 return tcsetpgrp(fd, pgrp);820 # endif821 #else822 #endif823 907 } 824 908 … … 826 910 { 827 911 #ifdef SH_PURE_STUB_MODE 828 return -1; 829 #elif defined(SH_STUB_MODE) 830 (void)psh; 831 # ifdef _MSC_VER 832 return -1; 833 # else 834 return getrlimit(resid, limp); 835 # endif 836 #else 837 #endif 912 int rc = -1; 913 #elif defined(SH_STUB_MODE) 914 # ifdef _MSC_VER 915 int rc = -1; 916 # else 917 int rc = getrlimit(resid, limp); 918 # endif 919 #else 920 #endif 921 922 TRACE2((psh, "sh_getrlimit(%d, %p) -> %d [%d] {%ld,%ld}\n", 923 resid, limp, rc, errno, (long)limp->rlim_cur, (long)limp->rlim_max)); 924 (void)psh; 925 return rc; 838 926 } 839 927 … … 841 929 { 842 930 #ifdef SH_PURE_STUB_MODE 843 return -1; 844 #elif defined(SH_STUB_MODE) 845 (void)psh; 846 # ifdef _MSC_VER 847 return -1; 848 # else 849 return setrlimit(resid, limp); 850 # endif 851 #else 852 #endif 853 } 854 931 int rc = -1; 932 #elif defined(SH_STUB_MODE) 933 # ifdef _MSC_VER 934 int rc = -1; 935 # else 936 int rc = setrlimit(resid, limp); 937 # endif 938 #else 939 #endif 940 941 TRACE2((psh, "sh_setrlimit(%d, %p:{%ld,%ld}) -> %d [%d]\n", 942 resid, limp, (long)limp->rlim_cur, (long)limp->rlim_max, rc, errno)); 943 (void)psh; 944 return rc; 945 } 946
Note:
See TracChangeset
for help on using the changeset viewer.