cls.c 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /* $Id$ */
  2. /*
  3. * (c) copyright 1983 by the Vrije Universiteit, Amsterdam, The Netherlands.
  4. *
  5. * This product is part of the Amsterdam Compiler Kit.
  6. *
  7. * Permission to use, sell, duplicate or disclose this software must be
  8. * obtained in writing. Requests for such permissions may be sent to
  9. *
  10. * Dr. Andrew S. Tanenbaum
  11. * Wiskundig Seminarium
  12. * Vrije Universiteit
  13. * Postbox 7161
  14. * 1007 MC Amsterdam
  15. * The Netherlands
  16. *
  17. */
  18. /* Author: J.W. Stevenson */
  19. #include <pc_file.h>
  20. #include <pc_err.h>
  21. extern struct file *_curfil;
  22. extern _trp();
  23. extern _flush();
  24. extern _outcpt();
  25. extern int _close();
  26. _xcls(f) struct file *f; {
  27. if ((f->flags & WRBIT) == 0)
  28. return;
  29. if ((f->flags & (TXTBIT|ELNBIT)) == TXTBIT) {
  30. #ifdef CPM
  31. *f->ptr = '\r';
  32. _outcpt(f);
  33. #endif
  34. *f->ptr = '\n';
  35. _outcpt(f);
  36. }
  37. _flush(f);
  38. }
  39. _cls(f) struct file *f; {
  40. #ifdef MAYBE
  41. char *p;
  42. #endif
  43. _curfil = f;
  44. if ((f->flags&0377) != MAGIC)
  45. return;
  46. #ifdef MAYBE
  47. p = f->bufadr;
  48. if (f->ptr < p)
  49. return;
  50. if (f->buflen <= 0)
  51. return;
  52. p += f->buflen;
  53. if (f->ptr >= p)
  54. return;
  55. #endif
  56. _xcls(f);
  57. if (_close(f->ufd) != 0)
  58. _trp(ECLOSE);
  59. f->flags = 0;
  60. }