[BACK]Return to test2.c CVS log [TXT][DIR] Up to [local] / OpenXM / src / ox_math

File: [local] / OpenXM / src / ox_math / test2.c (download)

Revision 1.1, Wed Jan 15 05:13:10 2003 UTC (21 years, 4 months ago) by ohara
Branch: MAIN
CVS Tags: R_1_3_1-2, RELEASE_1_3_1_13b, RELEASE_1_2_3_12, RELEASE_1_2_3, RELEASE_1_2_2_KNOPPIX_b, RELEASE_1_2_2_KNOPPIX, RELEASE_1_2_2, KNOPPIX_2006, HEAD, DEB_REL_1_2_3-9

testsuites for interruption on MathLink.

/* -*- mode: C -*- */
/* $OpenXM: OpenXM/src/ox_math/test2.c,v 1.1 2003/01/15 05:13:10 ohara Exp $ */

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

#include <stdio.h>
#include <stdlib.h>
#include <mathlink.h>
#include <unistd.h>
#include <signal.h>

#define FNAME "/tmp/inttest00"

static int signum = 0;

static void handler()
{
    print("handler(): signal received.");
}

static int block0(int sig_no)
{
    sigset_t mask;
    sigemptyset(&mask);
    sigaddset(&mask, sig_no);
    sigprocmask(SIG_SETMASK, &mask, NULL);
}

static int block(int sig_no)
{
    int i;
    sigset_t mask;
    sigemptyset(&mask);
    for(i=1;i<sig_no;i++) {
        sigaddset(&mask, i);
    }
    sigprocmask(SIG_SETMASK, &mask, NULL);
}

int print(char *s)
{
    FILE *fp = fopen(FNAME, "w+");
    fprintf(fp, "%s\n", s);
    fclose(fp);
    return 0;
}

int INT_addto(int x, int y)
{
    while (!MLAbort) {
        sleep(3);
    }
    print("INT_addto(): MLAbort is set.");
    return x+y;
}

int INT_addtoo(int x, int y)
{
    return x+y;
}

int INT_signal(int n)
{
    signal(n, handler);
    signum=n;
    return n;
}

int INT_block(int n)
{
    block(n);
    return n;
}

int main(int argc, char *argv[])
{
    ox_stderr_init(NULL);
    MLMain(argc, argv);
}