Line Clipping in C

#include<stdio.h>
#include<conio.h>
#include<graphics.h>
int xwmin, ywmin, xwmax, ywmax;
void rcode(int, int, int[]);
int check(int[], int[]);
void main() {
    int gdriver = DETECT, gmode, errorcode;
    int x1, y1, x2, y2, code1[4], code2[4], x, y, m;
    int point[2][2], p = 0;
    initgraph( & gdriver, & gmode, "c:/tc/bgi");
    errorcode = graphresult();
    if (errorcode != grOk) {
        printf("Graphics error: %s\n", grapherrormsg(errorcode));
        printf("Press any key to halt:");
        getch();
        exit(1);
    }
    printf("\n Enter the coordinates of window ");
    printf("\n xwmin and ywmin: ");
    scanf("%d%d", & xwmin, & ywmin);
    printf("\n xwmax and ywmax: ");
    scanf("%d%d", & xwmax, & ywmax);
    printf("\n Enter the coordinates of line ");
    printf("\n Enter the coordinate for the first end point of the line: ");
    scanf("%d%d", & x1, & y1);
    printf("\n Enter the coordinate for the second end point of the line: ");
    scanf("%d%d", & x2, & y2);
    rcode(x1, y1, code1);
    rcode(x2, y2, code2);

    if (check(code1, code2) == 1) {
        rectangle(xwmin, ywmin, xwmax, ywmax);
        printf("1");
    } else {
        m = (y2 - y1) / (x2 - x1);
        rectangle(xwmin, ywmin, xwmax, ywmax);
        line(x1, y1, x2, y2);
        setcolor(4);
        if (x1 < xwmin) {
            y = y1 + m * (xwmin - x1);
            x = xwmin;
            x1 = x;
            y1 = y;
        }
        if (x2 > xwmax) {
            y = y2 + m * (xwmax - x2);
            x = xwmax;
            x2 = x;
            y2 = y;
        }
        if (y1 < ywmin) {
            x = x1 + (ywmin - y1) / m;
            y = ywmin;
            x1 = x;
            y1 = y;
        }
        if (y2 > ywmax) {
            x = x2 + (ywmax - y2) / m;
            y = ywmax;
            x2 = x;
            y2 = y;
        }


        line(x1, y1, x2, y2);

    }
    getch();
}

int check(int code1[], int code2[]) {
    int flag = 0;
    if (code1[3] == 1 && code2[3] == 1)
        flag = 1;
    if (code1[2] == 1 && code2[2] == 1)
        flag = 1;
    if (code1[1] == 1 && code2[1] == 1)
        flag = 1;
    if (code1[0] == 1 && code2[0] == 1)
        flag = 1;

    return flag;
}

void rcode(int x, int y, int code[]) {
    if (y > ywmax) //bottom
        code[2] = 1;
    else
        code[2] = 0;
    if (y < ywmin) //top
        code[3] = 1;
    else
        code[3] = 0;
    if (x > xwmax) //right
        code[1] = 1;
    else
        code[1] = 0;
    if (x < xwmin) //left
        code[0] = 1;
    else
        code[0] = 0;
}