summaryrefslogtreecommitdiff
path: root/userspace/cat.c
blob: 94cbdaaccc8b3f214ab426071c3c931affff1aee (plain)
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
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv)
{   
    printf("hmm\n");
    printf("pwd=%s\n",getenv("PWD"));
    FILE *f;
    if(argc>1){
	char buf[256];
	if(argv[1][0]!='/')
	{
	    sprintf(buf,"%s/%s",getenv("PWD"),argv[1]);
	    printf("cat %s\n",buf);
	    f=fopen(buf,"r");
	}
	else
	{
	    printf("cat %s\n",argv[1]);
	    f=fopen(argv[1],"r");
	}
    }
    else f=stdin;

    setvbuf(stdin,NULL,_IONBF,0);
    setvbuf(stdout,NULL,_IONBF,0);

    char c;

    while(fread(&c,1,1,f))
    {
	printf("%c",c);
    }

    return 0;
}