- /*
- ** cat.c
- **
- ** Made by ali mdidech
- **
- **
- ** Started on Fri Oct 24 17:54:34 2003 ali mdidech
- ** Last update Mon Oct 27 17:13:51 2003 ali mdidech
- */
-
- #include <stdlib.h>
- #include <unistd.h>
- #include <fcntl.h>
-
- void my_putchar(char c)
- {
- write(1, &c, 1);
- }
-
- void my_putstr(char *str)
- {
- for (; *str != 0; str++)
- my_putchar(*str);
- }
-
- void cat(char *fn)
- {
- int nb;
- int fd;
- char *buffer;
-
- fd = open(fn, O_RDONLY);
- buffer = (char *) malloc(sizeof(char) * 512);
- while ((nb = read(fd, buffer, 512)) > 0)
- write(1, buffer, nb);
- if (nb == (-1))
- {
- my_putstr("cat: ");
- my_putstr(fn);
- my_putstr(": Operation not permitted\n");
- }
- close(fd);
- }
-
- void cat_alone()
- {
- char buffer[512];
- int nb;
-
- while ((nb = read(0, buffer, 512)) > 0)
- write (1, buffer, nb);
- }
-
- int main(int ac, char **argv)
- {
- if (ac < 2)
- cat_alone();
- else
- {
- ac--;
- argv++;
- while (ac-- > 0)
- if (*argv[0] == '-')
- cat_alone();
- else
- cat(*argv++);
- }
- return (0);
- }
/*
** cat.c
**
** Made by ali mdidech
**
**
** Started on Fri Oct 24 17:54:34 2003 ali mdidech
** Last update Mon Oct 27 17:13:51 2003 ali mdidech
*/
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
void my_putchar(char c)
{
write(1, &c, 1);
}
void my_putstr(char *str)
{
for (; *str != 0; str++)
my_putchar(*str);
}
void cat(char *fn)
{
int nb;
int fd;
char *buffer;
fd = open(fn, O_RDONLY);
buffer = (char *) malloc(sizeof(char) * 512);
while ((nb = read(fd, buffer, 512)) > 0)
write(1, buffer, nb);
if (nb == (-1))
{
my_putstr("cat: ");
my_putstr(fn);
my_putstr(": Operation not permitted\n");
}
close(fd);
}
void cat_alone()
{
char buffer[512];
int nb;
while ((nb = read(0, buffer, 512)) > 0)
write (1, buffer, nb);
}
int main(int ac, char **argv)
{
if (ac < 2)
cat_alone();
else
{
ac--;
argv++;
while (ac-- > 0)
if (*argv[0] == '-')
cat_alone();
else
cat(*argv++);
}
return (0);
}