⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 update.c

📁 微操作系统(c++)
💻 C
字号:
/* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */
/* This file is intended to be compiled with Turbo-C */

#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <io.h>

static void
fatal(const char *s)
{
  fputs(s, stderr);
  exit(1);
}

int
main(int argc, char **argv)
{
  int f1;
  int f2;
  char buf1[512];
  char buf2[512];
  int len1, len2;
  
  if (argc < 3)
  {
    fprintf(stderr, "Usage: update <srcfile> <destfile>\n");
    fprintf(stderr, "If srcfile is different than destfile, srcfile is copied to destfile.\n");
    exit(1);
  }

  f1 = _open(argv[1], O_RDONLY);
  if (f1 < 0)
    fatal("Cannot open src file\n");

  f2 = _open(argv[2], O_RDONLY);

  if (f2 >= 0)
    while (1)
    {
      len1 = _read(f1, buf1, 512);
      len2 = _read(f2, buf2, 512);
      if (len1 != len2)
        break;
      if (memcmp(buf1, buf2, len1))
        break;
      if (len1)
        continue;
      exit(0);
    }

  if (f2 >= 0)
  {
    printf("File `%s' updated\n", argv[2]);
    _close(f2);
  }
  else
    printf("File `%s' created\n", argv[2]);

  lseek(f1, 0L, 0);
  f2 = _creat(argv[2], 0);
  while (1)
  {
    len1 = _read(f1, buf1, 512);
    if (len1 == 0)
      break;
    len2 = _write(f2, buf1, len1);
  }
  _close(f1);
  _close(f2);
  exit(0);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -