view lib-src/test-distrib.c @ 19660:fa3d4e7a76d9

(reftex-customize): Added call to customize browse. (reftex-show-commentary): New function. (reftex-label-alist): Prefix may contain % escapes. Nth macro argument may be context. May give two different context methods. (reftex-default-label-alist-entries): Customization type changed. (reftex-label-menu-flags): Extra flag for searches. (reftex-cite-format): Changed completely, % escapes are now used. (reftex-comment-citations): New variable. (reftex-cite-comment-format): New variable. (reftex-cite-punctuation): New variable. (reftex-make-master-buffer): Changed name of master buffer, removed interactive. Runs a hook on the buffer. Interprete TEXINPUTS environment variable. Allow naked argument for \input. Master buffer is now in fundamental mode. (reftex-access-scan-info): Name of master buffer changed. (reftex-section-regexp): Is now computed from section levels, not set independantly. (reftex-section-levels): Made customizable. (reftex-label): Interpret % escapes in prefix. Use label format if given. (reftex-replace-prefix-escapes): New function. (reftex-uniquify-label): New function. (reftex-next-label-number): Function definition removed. (reftex-reference): Use reftex-uniquify-label. Allow more general label commands. (reftex-offer-label-menu): Interpret new flag in reftex-label-menu-flags. (reftex-make-and-insert-label-list): Use text properties to record label index. (reftex-find-nearby-label): Allow more general label commands. (reftex-scan-buffer-for-labels): Allow more general label commands. (reftex-init-section-numbers): New function. (reftex-allow-for-ctrl-m): New function. (reftex-label-info-update): Allow more general label commands. (reftex-label-info): New parameter derive. (reftex-short-context): Interprete integer parse as nth arg of macro. (reftex-nth-parens-substring): New function. (reftex-select-item): Interprete the new 'cnt text property. (reftex-pop-to-label): Allow more general label commands. (reftex-nicify-text): Allow more general label commands. (reftex-toc): Remember previous window configuration. Use text properties to store info. Bind mouse-2. (reftex-make-master-buffer): New Hook. (reftex-last-window-height): New variable. (reftex-toc-show-help): New function. (reftex-toc-help): New constant. (reftex-nearest-section): Use text properties to store info. (reftex-empty-toc-buffer): New function. (reftex-re-enlarge): New function. (reftex-toc-goto-line): New function. (reftex-toc-mouse-goto-line-and-hide): New function. (reftex-cite-format-builtin): New constant. (reftex-cite-format-default): Constant removed. (reftex-cite-format-1-author-simple): Constant removed. (reftex-cite-format-2-authors): Constant removed. (reftex-get-bib-names): New function. (reftex-get-bib-authors) Function removed. (reftex-format-bib-entry): Use now reftex-get-bib-names. (reftex-citation): Completely rewritten. Offers selection of different cite macros first, then the reference menu. Works with the various new variables mentioned above. Accept the `a' key to use all selected citations. (reftex-insert-bib-matches): New function. (reftex-format-citation): Now interpretes % escapes. (reftex-select-item): Emulate a search in the menu buffer. Interpret the 'cnt text property. (reftex-view-crossref): Allow more general label, cite and ref macros. (reftex-highlight-overlays): Add third overlay for search in menu buffer. (reftex-label-alist-builtin): xalignat and xxalignat environments added. Slightly reorganized. (reftex-reset-scanning-information): Just empty *toc* buffer, do not kill it. (reftex-compute-ref-cite-tables): Read the new options in `reftex-label-alist' and store them. Calculate the section regexp.
author Richard M. Stallman <rms@gnu.org>
date Mon, 01 Sep 1997 18:11:35 +0000
parents 55e427250ad3
children 76e2d539ecad
line wrap: on
line source

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

/* Cancel substitutions made by config.h for Emacs.  */
#undef open
#undef read
#undef write
#undef close

#include <stdio.h>

#ifndef O_RDONLY
#define O_RDONLY 0
#endif


/* Break string in two parts to avoid buggy C compilers that ignore characters
   after nulls in strings.  */

char string1[] = "Testing distribution of nonprinting chars:\n\
Should be 0177: \177 Should be 0377: \377 Should be 0212: \212.\n\
Should be 0000: ";

char string2[] = ".\n\
This file is read by the `test-distribution' program.\n\
If you change it, you will make that program fail.\n";

char buf[300];
  
/* Like `read' but keeps trying until it gets SIZE bytes or reaches eof.  */
int
cool_read (fd, buf, size)
     int fd;
     char *buf;
     int size;
{
  int num, sofar = 0;

  while (1)
    {
      if ((num = read (fd, buf + sofar, size - sofar)) == 0)
	return sofar;
      else if (num < 0)
	return num;
      sofar += num;
    }
}

int
main (argc, argv)
     int argc;
     char **argv;
{
  int fd;

  if (argc != 2)
    {
      fprintf (stderr, "Usage: %s testfile\n", argv[0]);
      exit (2);
    }
  fd = open (argv[1], O_RDONLY);
  if (fd < 0)
    {
      perror (argv[1]);
      exit (2);
    }
  if (cool_read (fd, buf, sizeof string1) != sizeof string1 ||
      strcmp (buf, string1) ||
      cool_read (fd, buf, sizeof string2) != sizeof string2 - 1 ||
      strncmp (buf, string2, sizeof string2 - 1))
    {
      fprintf (stderr, "Data in file `%s' has been damaged.\n\
Most likely this means that many nonprinting characters\n\
have been corrupted in the files of Emacs, and it will not work.\n",
	       argv[1]);
      exit (2);
    }
  close (fd);
#ifdef VMS
  exit (1);			/* On VMS, success is 1.  */
#endif
  return (0);
}