Logo  

CS471/571 - Operating Systems

Displaying ./code/xv6-public/cp.c

#include "types.h"
#include "stat.h"
#include "user.h"
#include "fcntl.h"

#define K	1024

int main(int argc, char *argv[])
{
  if (argc < 3) {
    printf(2, "Usage: cp <src> <dst>\n");
    exit();
  }

  int src = open(argv[1], O_RDONLY);
  if (src < 0) {
    printf(2, "Error opening src for reading.\n");
    exit();
  }
  int dst = open(argv[2], O_WRONLY | O_CREATE);
  if (dst < 0) {
    printf(2, "Error opening dst for writing.\n");
    exit();
  }

  char buf[K];
  int r;

  while ((r = read(src, buf, K)) > 0) {
    write(dst, buf, r);
  }

  close(dst);
  close(src);

  exit();
}