w32tex
About: TeX Live provides a comprehensive TeX system including all the major TeX-related programs, macro packages, and fonts that are free software. Windows sources.
  Fossies Dox: w32tex-src.tar.xz  ("unofficial" and yet experimental doxygen-generated source code documentation)  

afm2tfm.c
Go to the documentation of this file.
1 /* $Id: afm2tfm.c 57769 2021-02-17 03:03:54Z karl $ */
2 
3 /* Public domain, originally written by Tom Rokicki.
4  * This program converts AFM files to TeX TFM files, and optionally
5  * to TeX VPL files that retain all kerning and ligature information.
6  * Both files make the characters not normally encoded by TeX available
7  * by character codes greater than 127.
8  */
9 
10 /* (Modified by Don Knuth from Tom Rokicki's pre-VPL version.) */
11 /* VM/CMS port by J. Hafner (hafner@almaden.ibm.com), based on
12  * the port by Alessio Guglielmi (guglielmi@ipisnsib.bitnet)
13  * and Marco Prevedelli (prevedelli@ipisnsva.bitnet).
14  * This port is still in test state. No guarantees.
15  * 11/3/92: more corrections to VM/CMS port. Now it looks correct
16  * and will be supported by J. Hafner.
17  *
18  */
19 /*
20  * More changes, primarily from Karl Berry, enough for a new version
21  * number to 8.0; 1 December 1996. Note that this version computes
22  * checksums differently (more intelligently).
23  */
24 
25 #ifdef KPATHSEA
26 #include "config.h"
27 #include <kpathsea/c-ctype.h>
28 #include <kpathsea/progname.h>
29 #include <kpathsea/version.h>
30 #include <math.h>
31 #else /* ! KPATHSEA */
32 #include <stdio.h>
33 #include <stdlib.h>
34 #include <ctype.h>
35 #if defined(SYSV) || defined(VMS) || defined(__THINK__) || defined(MSDOS) || defined(OS2) || defined(ATARIST) || defined(WIN32)
36 #include <string.h>
37 #else
38 #include <strings.h>
39 #endif
40 #include <math.h>
41 #ifdef ATARIST
42 #include <float.h>
43 #endif
44 #endif /* KPATHSEA */
45 
46 /* JLH: added these to make the code easier to read and remove some
47  ascii<->ebcdic dependencies */
48 #define ASCII_A 65
49 #define ASCII_Z 90
50 #define ASCII_a 97
51 #define ASCII_z 122
52 #define ASCII_0 48
53 #define ASCII_9 57
54 
55 #ifdef VMCMS
56 #define interesting lookstr /* for 8 character truncation conflicts */
57 #include "dvipscms.h"
58 extern FILE *cmsfopen();
59 extern char ebcdic2ascii[];
60 extern char ascii2ebcdic[];
61 #ifdef fopen
62 #undef fopen
63 #endif
64 #define fopen cmsfopen
65 #endif /* VMCMS */
66 
67 #include "dvips.h"
68 /* debug.h redefines fopen to my_real_fopen, but it's still a FILE * */
69 #ifdef fopen
70 #undef fopen
71 #ifdef _MSC_VER
72 __declspec(dllimport) FILE *fopen ();
73 #else
74 extern FILE *fopen ();
75 #endif
76 #endif
77 
78 struct encoding {
79  const char *name;
80  const char *vec[256];
81 };
82 struct encoding staticencoding = {
83  "TeX text",
84  {"Gamma", "Delta", "Theta", "Lambda", "Xi", "Pi", "Sigma",
85  "Upsilon", "Phi", "Psi", "Omega", "arrowup", "arrowdown", "quotesingle",
86  "exclamdown", "questiondown", "dotlessi", "dotlessj", "grave", "acute",
87  "caron", "breve", "macron", "ring", "cedilla", "germandbls", "ae", "oe",
88  "oslash", "AE", "OE", "Oslash", "space", "exclam", "quotedbl", "numbersign",
89  "dollar", "percent", "ampersand", "quoteright", "parenleft", "parenright",
90  "asterisk", "plus", "comma", "hyphen", "period", "slash", "zero", "one",
91  "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon",
92  "semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C",
93  "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R",
94  "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash",
95  "bracketright", "circumflex", "underscore", "quoteleft", "a", "b", "c", "d",
96  "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s",
97  "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", "braceright",
98  "tilde", "dieresis", "", "", "", "", "", "", "", "", "", "", "", "", "",
99  "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
100  "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
101  "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
102  "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
103  "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
104  "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
105  "", "", "", "", "", "", "" } };
106 /*
107  * It's easier to put this in static storage and parse it as we go
108  * than to build the structures ourselves.
109  */
110 const char *staticligkern[] = {
111  "% LIGKERN space l =: lslash ; space L =: Lslash ;",
112  "% LIGKERN question quoteleft =: questiondown ;",
113  "% LIGKERN exclam quoteleft =: exclamdown ;",
114  "% LIGKERN hyphen hyphen =: endash ; endash hyphen =: emdash ;",
115  "% LIGKERN quoteleft quoteleft =: quotedblleft ;",
116  "% LIGKERN quoteright quoteright =: quotedblright ;",
117  "% LIGKERN space {} * ; * {} space ; zero {} * ; * {} zero ;",
118  "% LIGKERN one {} * ; * {} one ; two {} * ; * {} two ;",
119  "% LIGKERN three {} * ; * {} three ; four {} * ; * {} four ;",
120  "% LIGKERN five {} * ; * {} five ; six {} * ; * {} six ;",
121  "% LIGKERN seven {} * ; * {} seven ; eight {} * ; * {} eight ;",
122  "% LIGKERN nine {} * ; * {} nine ;",
123 /* Kern accented characters the same way as their base. */
124  "% LIGKERN Aacute <> A ; aacute <> a ;",
125  "% LIGKERN Acircumflex <> A ; acircumflex <> a ;",
126  "% LIGKERN Adieresis <> A ; adieresis <> a ;",
127  "% LIGKERN Agrave <> A ; agrave <> a ;",
128  "% LIGKERN Aring <> A ; aring <> a ;",
129  "% LIGKERN Atilde <> A ; atilde <> a ;",
130  "% LIGKERN Ccedilla <> C ; ccedilla <> c ;",
131  "% LIGKERN Eacute <> E ; eacute <> e ;",
132  "% LIGKERN Ecircumflex <> E ; ecircumflex <> e ;",
133  "% LIGKERN Edieresis <> E ; edieresis <> e ;",
134  "% LIGKERN Egrave <> E ; egrave <> e ;",
135  "% LIGKERN Iacute <> I ; iacute <> i ;",
136  "% LIGKERN Icircumflex <> I ; icircumflex <> i ;",
137  "% LIGKERN Idieresis <> I ; idieresis <> i ;",
138  "% LIGKERN Igrave <> I ; igrave <> i ;",
139  "% LIGKERN Ntilde <> N ; ntilde <> n ;",
140  "% LIGKERN Oacute <> O ; oacute <> o ;",
141  "% LIGKERN Ocircumflex <> O ; ocircumflex <> o ;",
142  "% LIGKERN Odieresis <> O ; odieresis <> o ;",
143  "% LIGKERN Ograve <> O ; ograve <> o ;",
144  "% LIGKERN Oslash <> O ; oslash <> o ;",
145  "% LIGKERN Otilde <> O ; otilde <> o ;",
146  "% LIGKERN Scaron <> S ; scaron <> s ;",
147  "% LIGKERN Uacute <> U ; uacute <> u ;",
148  "% LIGKERN Ucircumflex <> U ; ucircumflex <> u ;",
149  "% LIGKERN Udieresis <> U ; udieresis <> u ;",
150  "% LIGKERN Ugrave <> U ; ugrave <> u ;",
151  "% LIGKERN Yacute <> Y ; yacute <> y ;",
152  "% LIGKERN Ydieresis <> Y ; ydieresis <> y ;",
153  "% LIGKERN Zcaron <> Z ; zcaron <> z ;",
154 /*
155  * These next are only included for deficient afm files that
156  * have the lig characters but not the lig commands.
157  */
158  "% LIGKERN f i =: fi ; f l =: fl ; f f =: ff ; ff i =: ffi ;",
159  "% LIGKERN ff l =: ffl ;",
160  0 };
161 /*
162  * The above layout corresponds to TeX Typewriter Type and is compatible
163  * with TeX Text because the position of ligatures is immaterial.
164  */
165 struct encoding *outencoding = 0;
166 struct encoding *inencoding = 0;
167 char *outenname = NULL,
168  *inenname = NULL;/* the file names for input and output encodings */
169 int boundarychar = -1; /* the boundary character */
170 int ignoreligkern; /* do we look at ligkern info in the encoding? */
171 /*
172  * This is what we store Adobe data in.
173  */
174 struct adobeinfo {
175  struct adobeinfo *next;
177  const char *adobename;
178  int llx, lly, urx, ury;
179  struct lig *ligs;
180  struct kern *kerns;
182  struct pcc *pccs;
183  int wptr, hptr, dptr, iptr;
184 } *adobechars, *adobeptrs[256], *texptrs[256],
185  *uppercase[256], *lowercase[256];
186 int nexttex[256]; /* for characters encoded multiple times in output */
187 /*
188  * These are the eight ligature ops, in VPL terms and in METAFONT terms.
189  */
190 const char *vplligops[] = {
191  "LIG", "/LIG", "/LIG>", "LIG/", "LIG/>", "/LIG/", "/LIG/>", "/LIG/>>", 0
192 };
193 const char *encligops[] = {
194  "=:", "|=:", "|=:>", "=:|", "=:|>", "|=:|", "|=:|>", "|=:|>>", 0
195 };
196 struct lig {
197  struct lig *next;
198  const char *succ, *sub;
199  short op, boundleft;
200 };
201 struct kern {
202  struct kern *next;
203  const char *succ;
204  int delta;
205 };
206 struct adobeptr {
207  struct adobeptr *next;
208  struct adobeinfo *ch;
209 };
210 struct pcc {
211  struct pcc *next;
212  const char * partname;
214 };
215 
217 #define MAXNAME 256
218 char inname[MAXNAME], outname[MAXNAME]; /* names of input and output files */
219 char tmpstr[MAXNAME]; /* a buffer for one string */
220 #define INBUFSIZE 1024
221 char buffer[INBUFSIZE+10]; /* input buffer (modified while parsing) */
222 char obuffer[INBUFSIZE+10]; /* unmodified copy of input buffer */
223 char *param; /* current position in input buffer */
224 const char *fontname = "Unknown";
225 const char *codingscheme = "Unspecified";
226 #ifdef VMCMS
227 char *ebfontname;
228 char *ebcodingscheme;
229 #endif
230 float italicangle = 0.0;
232 char makevpl;
233 char pedantic;
235 int xheight = 400;
237 int bc, ec;
238 long cksum;
239 float efactor = 1.0, slant = 0.0;
240 float capheight = 0.8;
242 double newslant;
243 char titlebuf[500];
244 
245 static void
246 error(const char *s)
247 {
248  fprintf(stderr, "%s\n", s);
249  if (obuffer[0]) {
250  fprintf(stderr, "%s\n", obuffer);
251  while (param > buffer) {
252  fprintf(stderr, " ");
253  param--;
254  }
255  fprintf(stderr, "^\n");
256  }
257  if (*s == '!')
258  exit(1);
259 }
260 
261 static int
262 transform(register int x, register int y)
263 {
264  register double acc;
265  acc = efactor * x + slant *y;
266  return (int)(acc>=0? floor(acc+0.5) : ceil(acc-0.5) );
267 }
268 
269 static int
271  register char *p;
272  register int c;
273 
274  param = buffer;
275  for (p=buffer; (c=getc(afmin)) != EOF;) {
276  if (p - buffer >= INBUFSIZE)
277  error("! input line too long; perhaps input file is malformed?");
278  *p++ = c;
279  if (c == '\r') {
280  c = getc(afmin);
281  if (c != EOF) {
282  if (c == '\n') {
283  *p++ = c;
284  } else {
285  ungetc(c, afmin);
286  }
287  }
288  break;
289  } else if (c == '\n') {
290  break;
291  }
292  }
293  *p = 0;
295  if (p == buffer && c == EOF)
296  return(0);
297  else
298  return(1);
299 }
300 
301 const char *interesting[] = { "FontName", "ItalicAngle", "IsFixedPitch",
302  "XHeight", "C", "KPX", "CC", "EncodingScheme", NULL};
303 #define FontName (0)
304 #define ItalicAngle (1)
305 #define IsFixedPitch (2)
306 #define XHeight (3)
307 #define C (4)
308 #define KPX (5)
309 #define CC (6)
310 #define EncodingScheme (7)
311 #define NONE (-1)
312 static int
313 interest(const char *s)
314 {
315  register const char **p;
316  register int n;
317 
318  for (p=interesting, n=0; *p; p++, n++)
319  if (strcmp(s, *p)==0)
320  return(n);
321  return(NONE);
322 }
323 
324 static char *
325 mymalloc(unsigned long len)
326 {
327  register char *p;
328  int i;
329 
330 #ifdef SMALLMALLOC
331  if (len > 65500L)
332  error("! can't allocate more than 64K!");
333 #endif
334  p = (char *) malloc((unsigned)len);
335  if (p==NULL)
336  error("! out of memory");
337  for (i=0; i<len; i++)
338  p[i] = 0;
339  return(p);
340 }
341 
342 static char *
343 newstring(char *s)
344 {
345  char *q = mymalloc((unsigned long)(strlen(s) + 1));
346  strcpy(q, s);
347  return q;
348 }
349 
350 static char *
352  register char *p, *q;
353 
354  p = param;
355  while (*p > ' ')
356  p++;
357  if (*p != 0)
358  *p++ = 0;
359  q = newstring(param);
360  while (*p && *p <= ' ')
361  p++;
362  param = p;
363  return(q);
364 }
365 
366 static char *
367 paramstring(void) {
368  register char *p, *q;
369 
370  p = param;
371  while (*p > ' ')
372  p++;
373  q = param;
374  if (*p != 0)
375  *p++ = 0;
376  while (*p && *p <= ' ')
377  p++;
378  param = p;
379  return(q);
380 }
381 
382 static int
383 paramnum(void) {
384  register char *p;
385  int i;
386 
387  p = paramstring();
388  if (sscanf(p, "%d", &i) != 1)
389  error("! integer expected");
390  return(i);
391 }
392 
393 static float
394 paramfloat(void) {
395  register char *p;
396  float i;
397 
398  p = paramstring();
399  if (sscanf(p, "%f", &i) != 1)
400  error("! number expected");
401  return(i);
402 }
403 
404 static struct adobeinfo *
405 newchar(void) {
406  register struct adobeinfo *ai;
407 
408  ai = (struct adobeinfo *)mymalloc((unsigned long)sizeof(struct adobeinfo));
409  ai->adobenum = -1;
410  ai->texnum = -1;
411  ai->width = -1;
412  ai->adobename = NULL;
413  ai->llx = -1;
414  ai->lly = -1;
415  ai->urx = -1;
416  ai->ury = -1;
417  ai->ligs = NULL;
418  ai->kerns = NULL;
419  ai->kern_equivs = NULL;
420  ai->pccs = NULL;
421  ai->next = adobechars;
422  adobechars = ai;
423  return(ai);
424 }
425 
426 static struct kern *
427 newkern(void) {
428  register struct kern *nk;
429 
430  nk = (struct kern *)mymalloc((unsigned long)sizeof(struct kern));
431  nk->next = NULL;
432  nk->succ = NULL;
433  nk->delta = 0;
434  return(nk);
435 }
436 
437 static struct pcc *
438 newpcc(void) {
439  register struct pcc *np;
440 
441  np = (struct pcc *)mymalloc((unsigned long)sizeof(struct pcc));
442  np->next = NULL;
443  np->partname = NULL;
444  np->xoffset = 0;
445  np->yoffset = 0;
446  return(np);
447 }
448 
449 static struct lig *
450 newlig(void) {
451  register struct lig *nl;
452 
453  nl = (struct lig *)mymalloc((unsigned long)sizeof(struct lig));
454  nl->next = NULL;
455  nl->succ = NULL;
456  nl->sub = NULL;
457  nl->op = 0; /* the default =: op */
458  nl->boundleft = 0;
459  return(nl);
460 }
461 
462 static void
463 expect(const char *s)
464 {
465  if (strcmp(paramstring(), s) != 0) {
466  fprintf(stderr, "%s expected: ", s);
467  error("! syntax error");
468  }
469 }
470 
471 static void
472 handlechar(void) { /* an input line beginning with C */
473  register struct adobeinfo *ai;
474  register struct lig *nl;
475 
476  ai = newchar();
477  ai->adobenum = paramnum();
478  expect(";");
479  expect("WX");
480  ai->width = transform(paramnum(),0);
481  if (ai->adobenum >= 0 && ai->adobenum < 256) {
482  adobeptrs[ai->adobenum] = ai;
483  }
484  expect(";");
485 /* Ignore vertical metrics information */
486  if (*param == 'W' && *(param + 1) == 'Y') {
487  expect("WY");
488  paramnum();
489  expect(";");
490  }
491  expect("N");
492  ai->adobename = paramnewstring();
493  expect(";");
494  expect("B");
495  ai->llx = paramnum();
496  ai->lly = paramnum();
497  ai->llx = transform(ai->llx, ai->lly);
498  ai->urx = paramnum();
499  ai->ury = paramnum();
500  ai->urx = transform(ai->urx, ai->ury);
501 /* We need to avoid negative heights or depths. They break accents in
502  math mode, among other things. */
503  if (ai->lly > 0)
504  ai->lly = 0;
505  if (ai->ury < 0)
506  ai->ury = 0;
507  expect(";");
508 /* Now look for ligatures (which aren't present in fixedpitch fonts) */
509  while (*param == 'L' && !fixedpitch) {
510  expect("L");
511  nl = newlig();
512  nl->succ = paramnewstring();
513  nl->sub = paramnewstring();
514  nl->next = ai->ligs;
515  ai->ligs = nl;
516  expect(";");
517  }
518 }
519 
520 static struct adobeinfo *
521 findadobe(const char *p)
522 {
523  register struct adobeinfo *ai;
524 
525  for (ai=adobechars; ai; ai = ai->next)
526  if (strcmp(p, ai->adobename)==0)
527  return(ai);
528  return(NULL);
529 }
530 
531 
532 /*
533  * The following comment no longer applies; we rely on the LIGKERN
534  * entries to kill space kerns. Also, the same applies to numbers.
535  *
536  * We ignore kerns before and after space characters, because (1) TeX
537  * is using the space only for Polish ligatures, and (2) TeX's
538  * boundarychar mechanisms are not oriented to kerns (they apply
539  * to both spaces and punctuation) so we don't want to use them.
540  */
541 static void
542 handlekern(void) { /* an input line beginning with KPX */
543  register struct adobeinfo *ai;
544  register char *p;
545  register struct kern *nk;
546 
547  p = paramstring();
548  ai = findadobe(p);
549  if (ai == NULL)
550  error("kern char not found");
551  else {
552  nk = newkern();
553  nk->succ = paramnewstring();
554  nk->delta = transform(paramnum(),0);
555  nk->next = ai->kerns;
556  ai->kerns = nk;
557  }
558 }
559 
560 static void
561 handleconstruct(void) { /* an input line beginning with CC */
562  register struct adobeinfo *ai;
563  register char *p;
564  register struct pcc *np;
565  register int n;
566  struct pcc *npp = NULL;
567 
568  p = paramstring();
569  ai = findadobe(p);
570  if (ai == NULL)
571  error("! composite character name not found");
572  n = paramnum();
573  expect(";");
574  while (n--) {
575  if (strcmp(paramstring(),"PCC") != 0) return;
576  /* maybe I should expect("PCC") instead, but I'm playing it safe */
577  np = newpcc();
578  np->partname = paramnewstring();
579  if (findadobe(np->partname)==NULL) return;
580  np->xoffset = paramnum();
581  np->yoffset = paramnum();
582  np->xoffset = transform(np->xoffset, np->yoffset);
583  if (npp) npp->next = np;
584  else ai->pccs = np;
585  npp = np;
586  expect(";");
587  }
588 }
589 
590 static struct encoding *readencoding(char *);
591 
592 #if 0
593 /* Not used */
594 static void
595 makeaccentligs(void) {
596  register struct adobeinfo *ai, *aci;
597  register char *p;
598  register struct lig *nl;
599  for (ai=adobechars; ai; ai=ai->next) {
600  p = ai->adobename;
601  if (strlen(p)>2)
602  if ((aci=findadobe(p+1)) && (aci->adobenum > 127)) {
603  nl = newlig();
604  nl->succ = mymalloc((unsigned long)2);
605  *(nl->succ + 1) = 0;
606  *(nl->succ) = *p;
607  nl->sub = ai->adobename;
608  nl->next = aci->ligs;
609  aci->ligs = nl;
610  }
611  }
612 }
613 #endif
614 
615 static void
616 readadobe(void) {
617  struct adobeinfo *ai;
618 #ifdef VMCMS
619  int i;
620 #endif
621 
622 /*
623  * We allocate a placeholder boundary char.
624  */
625  ai = newchar();
626  ai->adobenum = -1;
627  ai->adobename = "||"; /* boundary character name */
628  while (texlive_getline()) {
629  switch(interest(paramstring())) {
630 case FontName:
632 #ifdef VMCMS
633 /* fontname comes in as ebcdic but we need it asciified for tfm file
634  so we save it in ebfontname and change it in fontname */
635  ebfontname = newstring(fontname);
636  i=0;
637  while(fontname[i] != '\0') {
638  fontname[i]=ebcdic2ascii[fontname[i]];
639  i++;
640  };
641 #endif
642  break;
643 case EncodingScheme:
645 #ifdef VMCMS
646 /* for codingscheme, we do the same as we did for fontname */
647  ebcodingscheme = newstring(codingscheme);
648  i=0;
649  while(codingscheme[i] != '\0') {
650  codingscheme[i]=ebcdic2ascii[codingscheme[i]];
651  i++;
652  }
653 #endif
654  break;
655 case ItalicAngle:
657  break;
658 case IsFixedPitch:
659  if (*param == 't' || *param == 'T')
660  fixedpitch = 1;
661  else
662  fixedpitch = 0;
663  break;
664 case XHeight:
665  xheight = paramnum();
666  break;
667 case C:
668  handlechar();
669  break;
670 case KPX:
671  handlekern();
672  break;
673 case CC:
674  handleconstruct();
675  break;
676 default:
677  break;
678  }
679  }
680  fclose(afmin);
681  afmin = 0;
682 }
683 /*
684  * Re-encode the adobe font. Assumes that the header file will
685  * also contain the appropriate instructions!
686  */
687 static void
689  if (inenname) {
690  int i;
691  struct adobeinfo *ai;
692  const char *p;
693 
694  ignoreligkern = 1;
696  for (i=0; i<256; i++)
697  if (0 != (ai=adobeptrs[i])) {
698  ai->adobenum = -1;
699  adobeptrs[i] = NULL;
700  }
701  for (i=0; i<256; i++) {
702  p = inencoding->vec[i];
703  if (p && *p && strcmp(p, ".notdef") != 0 && 0 != (ai = findadobe(p))) {
704  ai->adobenum = i;
705  adobeptrs[i] = ai;
706  }
707  }
709  }
710  ignoreligkern = 0;
711  if (outenname) {
713  } else {
714  outencoding = readencoding((char *)0);
715  }
716 }
717 
718 /*
719  * This routine reverses a list. We use it because we accumulate the
720  * adobeinfo list in reverse order, but when we go to map the
721  * characters, we would prefer to use the original ordering. It just
722  * makes more sense.
723  */
724 static struct adobeinfo *
725 revlist (struct adobeinfo *p)
726 {
727  struct adobeinfo *q = 0, *t;
728 
729  while (p) {
730  t = p->next;
731  p->next = q;
732  q = p;
733  p = t;
734  }
735  return q;
736 }
737 
738 static void
739 assignchars(void) {
740  register const char **p;
741  register int i, j;
742  register struct adobeinfo *ai, *pai;
743  int nextfree = 128;
744  struct pcc *pcp;
745 
746 /*
747  * First, we assign all those that match perfectly.
748  */
749  for (i=0, p=outencoding->vec; i<256; i++, p++)
750  if (*p && strcmp(*p, ".notdef") != 0 &&
751  (ai=findadobe(*p)) && (ai->adobenum >= 0 || ai->pccs != NULL)) {
752  if (ai->texnum >= 0)
753  nexttex[i] = ai->texnum; /* linked list */
754  ai->texnum = i;
755  texptrs[i] = ai;
756  }
757  if (pedantic)
758  return;
759 /*
760  * Next, we assign all the others, retaining the adobe positions, possibly
761  * multiply assigning characters. Unless the output encoding was
762  * precisely specified.
763  */
764  for (ai=adobechars; ai; ai=ai->next)
765  if (ai->adobenum >= 0 && ai->adobenum <256
766  && ai->texnum < 0 && texptrs[ai->adobenum] == 0) {
767  ai->texnum = ai->adobenum;
768  texptrs[ai->adobenum] = ai;
769  }
770 /*
771  * Finally, we map all remaining characters into free locations beginning
772  * with 128, if we know how to construct those characters. We need to
773  * make sure the component pieces are mapped.
774  */
776  for (ai=adobechars; ai; ai=ai->next)
777  if (ai->texnum<0 && (ai->adobenum>=0 || ai->pccs != NULL)) {
778  while (texptrs[nextfree]) {
779  nextfree=(nextfree+1)&255;
780  if (nextfree==128) goto finishup; /* all slots full */
781  }
782  ai->texnum = nextfree;
783  texptrs[nextfree] = ai;
784  }
785 finishup:
786 /*
787  * We now check all of the composite characters. If any of the
788  * components are not mapped, we unmap the composite character.
789  */
790  for (i=0; i<256; i++) {
791  ai = texptrs[i];
792  if (ai && ai->pccs != NULL && ai->texnum >= 0) {
793  for (pcp = ai->pccs; pcp; pcp = pcp->next) {
794  pai = findadobe(pcp->partname);
795  if (pai == NULL || pai->texnum < 0) {
796  texptrs[ai->texnum] = 0;
797  ai->texnum = -1;
798  break;
799  }
800  }
801  }
802  }
803 /*
804  * Now, if any of the characters are encoded multiple times, we want
805  * ai->texnum to be the first one assigned, since that is most likely
806  * to be the most important one. So we reverse the above lists.
807  */
808  for (ai=adobechars; ai; ai=ai->next)
809  if (ai->texnum >= 0 && ai->texnum < 256) {
810  j = -1;
811  while (nexttex[ai->texnum] >= 0) {
812  i = nexttex[ai->texnum];
813  nexttex[ai->texnum] = j;
814  j = ai->texnum;
815  ai->texnum = i;
816  }
817  nexttex[ai->texnum] = j;
818  }
819 }
820 
821 static void
822 upmap(void) { /* Compute uppercase mapping, when making a small caps font */
823  register struct adobeinfo *ai, *Ai;
824  register const char *p;
825  register char *q;
826  register struct pcc *np, *nq;
827  int i;
828  char lwr[50];
829 
830 /* JLH: changed some lines below to be ascii<->ebcdic independent
831  any reason we don't use 'isupper'?.
832  Looks like we should use isupper to me --karl. */
833  for (Ai=adobechars; Ai; Ai=Ai->next) {
834  p = Ai->adobename;
835  if (isupper ((unsigned char)*p)) {
836  q = lwr;
837  for (; *p; p++)
838  *q++ = TOLOWER (*p);
839  *q = '\0'; /* changed this too! */
840 
841  if (0 != (ai=findadobe(lwr))) {
842  for (i = ai->texnum; i >= 0; i = nexttex[i])
843  uppercase[i] = Ai;
844  for (i = Ai->texnum; i >= 0; i = nexttex[i])
845  lowercase[i] = ai;
846  }
847  }
848  }
849 /* Note that, contrary to the normal true/false conventions,
850  * uppercase[i] is NULL and lowercase[i] is non-NULL when i is the
851  * ASCII code of an uppercase letter; and vice versa for lowercase letters */
852 
853  if (0 != (ai=findadobe("germandbls")))
854  if (0 != (Ai=findadobe("S"))) { /* we also construct SS */
855  for (i=ai->texnum; i >= 0; i = nexttex[i])
856  uppercase[i] = ai;
857  ai->adobenum = -1;
858  ai->width = Ai->width << 1;
859  ai->llx = Ai->llx;
860  ai->lly = Ai->lly;
861  ai->urx = Ai->width + Ai->urx;
862  ai->ury = Ai->ury;
863  ai->kerns = Ai->kerns;
864  np = newpcc();
865  np->partname = "S";
866  nq = newpcc();
867  nq->partname = "S";
868  nq->xoffset = Ai->width;
869  np->next = nq;
870  ai->pccs = np;
871  }
872  if ((ai=findadobe("dotlessi")))
873  for (i=ai->texnum; i >= 0; i = nexttex[i])
874  uppercase[i] = findadobe("I");
875  if ((ai=findadobe("dotlessj")))
876  for (i=ai->texnum; i >= 0; i = nexttex[i])
877  uppercase[i] = findadobe("J");
878 }
879 /* The logic above seems to work well enough, but it leaves useless characters
880  * like `fi' and `fl' in the font if they were present initially,
881  * and it omits characters like `dotlessj' if they are absent initially */
882 
883 /* Now we turn to computing the TFM file */
884 
885 int lf, lh, nw, nh, nd, ni, nl, nk, ne, np;
886 
887 static void
888 write16(register short what)
889 {
890  fputc(what >> 8, tfmout);
891  fputc(what & 255, tfmout);
892 }
893 
894 static void
895 writearr(register long *p, register int n)
896 {
897  while (n) {
898  write16((short)(*p >> 16));
899  write16((short)(*p & 65535));
900  p++;
901  n--;
902  }
903 }
904 
905 static void
906 makebcpl(register long *p, register const char *s, register int n)
907 {
908  register long t;
909  register long sc;
910 
911  if (strlen(s) < n)
912  n = strlen(s);
913  t = ((long)n) << 24;
914  sc = 16;
915  while (n > 0) {
916  t |= ((long)(*(unsigned const char *)s++)) << sc;
917  sc -= 8;
918  if (sc < 0) {
919  *p++ = t;
920  t = 0;
921  sc = 24;
922  }
923  n--;
924  }
925  *p++ = t;
926 }
927 
928 int source[257];
929 int unsort[257];
930 
931 /*
932  * Next we need a routine to reduce the number of distinct dimensions
933  * in a TFM file. Given an array what[0]...what[oldn-1], we want to
934  * group its elements into newn clusters, in such a way that the maximum
935  * difference between elements of a cluster is as small as possible.
936  * Furthermore, what[0]=0, and this value must remain in a cluster by
937  * itself. Data such as `0 4 6 7 9' with newn=3 shows that an iterative
938  * scheme in which 6 is first clustered with 7 will not work. So we
939  * borrow a neat algorithm from METAFONT to find the true optimum.
940  * Memory location what[oldn] is set to 0x7fffffffL for convenience.
941  */
942 long nextd; /* smallest value that will give a different mincover */
943 static int
944 mincover(long *what,
945  register long d) /* tells how many clusters result, given max difference d */
946 {
947  register int m;
948  register long l;
949  register long *p;
950 
951  nextd = 0x7fffffffL;
952  p = what+1;
953  m = 1;
954  while (*p<0x7fffffffL) {
955  m++;
956  l = *p;
957  while (*++p <= l+d);
958  if (*p-l < nextd) nextd = *p-l;
959  }
960  return (m);
961 }
962 
963 static void
964 remap(long * what, int oldn, int newn)
965 {
966  register int i, j;
967  register long d, l;
968 
969  what[oldn] = 0x7fffffffL;
970  for (i=oldn-1; i>0; i--) {
971  d = what[i];
972  for (j=i; what[j+1]<d; j++) {
973  what[j] = what[j+1];
974  source[j] = source[j+1];
975  }
976  what[j] = d;
977  source[j] = i;
978  } /* Tom, don't let me ever catch you using bubblesort again! -- Don */
979 
980  i = mincover(what, 0L);
981  d = nextd;
982  while (mincover(what,d+d)>newn) d += d;
983  while (mincover(what,d)>newn) d = nextd;
984 
985  i = 1;
986  j = 0;
987  while (i<oldn) {
988  j++;
989  l = what[i];
990  unsort[source[i]] = j;
991  while (what[++i] <= l+d) {
992  unsort[source[i]] = j;
993  if (i-j == oldn-newn) d = 0;
994  }
995  what[j] = (l+what[i-1])/2;
996  }
997 }
998 
999 static long
1000 checksum(void) {
1001  int i;
1002  unsigned long s1 = 0, s2 = 0;
1003  const char *p;
1004  struct adobeinfo *ai;
1005 
1006  for (i=0; i<256; i++)
1007  if (0 != (ai=adobeptrs[i])) {
1008  s1 = ((s1 << 1) ^ (s1>>31)) ^ ai->width; /* cyclic left shift */
1009  s1 &= 0xffffffff; /* in case we're on a 64-bit machine */
1010  for (p=ai->adobename; *p; p++)
1011 #ifndef VMCMS
1012  s2 = (s2 * 3) + *p;
1013 #else
1014  s2 = (s2 * 3) + ebcdic2ascii[*p];
1015 #endif
1016  }
1017  s1 = (s1 << 1) ^ s2;
1018  return s1;
1019 }
1020 
1021 /*
1022  * The next routine simply scales something.
1023  * Input is in 1000ths of an em. Output is in FIXFACTORths of 1000.
1024  */
1025 #define FIXFACTOR (0x100000L) /* 2^{20}, the unit fixnum */
1026 static long
1028 {
1029  return(((what / 1000) << 20) +
1030  (((what % 1000) << 20) + 500) / 1000);
1031 }
1032 
1035 long *tfmdata;
1036 
1037 static void
1038 buildtfm(void) {
1039  register int i, j;
1040  register struct adobeinfo *ai;
1041 
1042  header = tfmdata;
1043  cksum = checksum();
1044  header[0] = cksum;
1045  header[1] = 0xa00000; /* 10pt design size */
1046  makebcpl(header+2, codingscheme, 39);
1047  makebcpl(header+12, fontname, 19);
1048  lh = 17;
1049  charinfo = header + lh;
1050 
1051  for (i=0; i<256 && adobeptrs[i]==NULL; i++);
1052  bc = i;
1053  for (i=255; i>=0 && adobeptrs[i]==NULL; i--);
1054  ec = i;
1055  if (ec < bc)
1056  error("! no Adobe characters");
1057 
1058  width = charinfo + (ec - bc + 1);
1059  width[0] = 0;
1060  nw++;
1061  for (i=bc; i<=ec; i++)
1062  if (0 != (ai=adobeptrs[i])) {
1063  width[nw]=ai->width;
1064  for (j=1; width[j]!=ai->width; j++);
1065  ai->wptr = j;
1066  if (j==nw)
1067  nw++;
1068  }
1069  if (nw>256)
1070  error("! 256 chars with different widths");
1071  depth = width + nw;
1072  depth[0] = 0;
1073  nd = 1;
1074  for (i=bc; i<=ec; i++)
1075  if (0 != (ai=adobeptrs[i])) {
1076  depth[nd] = -ai->lly;
1077  for (j=0; depth[j]!=-ai->lly; j++);
1078  ai->dptr = j;
1079  if (j==nd)
1080  nd++;
1081  }
1082  if (nd > 16) {
1083  remap(depth, nd, 16);
1084  nd = 16;
1085  for (i=bc; i<=ec; i++)
1086  if (0 != (ai=adobeptrs[i]))
1087  ai->dptr = unsort[ai->dptr];
1088  }
1089  height = depth + nd;
1090  height[0] = 0;
1091  nh = 1;
1092  for (i=bc; i<=ec; i++)
1093  if (0 != (ai=adobeptrs[i])) {
1094  height[nh]=ai->ury;
1095  for (j=0; height[j]!=ai->ury; j++);
1096  ai->hptr = j;
1097  if (j==nh)
1098  nh++;
1099  }
1100  if (nh > 16) {
1101  remap(height, nh, 16);
1102  nh = 16;
1103  for (i=bc; i<=ec; i++)
1104  if (0 != (ai=adobeptrs[i]))
1105  ai->hptr = unsort[ai->hptr];
1106  }
1107  italic = height + nh;
1108  italic[0] = 0;
1109  ni = 1;
1110  for (i=bc; i<=ec; i++)
1111  if (0 != (ai=adobeptrs[i])) {
1112  italic[ni] = ai->urx - ai->width;
1113  if (italic[ni]<0)
1114  italic[ni] = 0;
1115  for (j=0; italic[j]!=italic[ni]; j++);
1116  ai->iptr = j;
1117  if (j==ni)
1118  ni++;
1119  }
1120  if (ni > 64) {
1121  remap(italic, ni, 64);
1122  ni = 64;
1123  for (i=bc; i<=ec; i++)
1124  if (0 != (ai=adobeptrs[i]))
1125  ai->iptr = unsort[ai->iptr];
1126  }
1127 
1128  for (i=bc; i<=ec; i++)
1129  if (0 != (ai=adobeptrs[i]))
1130  charinfo[i-bc] = ((long)(ai->wptr)<<24) +
1131  ((long)(ai->hptr)<<20) +
1132  ((long)(ai->dptr)<<16) +
1133  ((long)(ai->iptr)<<10);
1134 
1135  ligkern = italic + ni;
1136  nl = 0; /* ligatures and kerns omitted from raw Adobe font */
1137  kern = ligkern + nl;
1138  nk = 0;
1139 
1140  newslant = (double)slant - efactor * tan(italicangle*(3.1415926535/180.0));
1141  tparam = kern + nk;
1142  tparam[0] = (long)(FIXFACTOR * newslant + 0.5);
1143  tparam[1] = scale((long)fontspace);
1144  tparam[2] = (fixedpitch ? 0 : scale((long)(300*efactor+0.5)));
1145  tparam[3] = (fixedpitch ? 0 : scale((long)(100*efactor+0.5)));
1146  tparam[4] = scale((long)xheight);
1147  tparam[5] = scale((long)(1000*efactor+0.5));
1148  np = 6;
1149 }
1150 
1151 static void
1152 writesarr(long *what, int len)
1153 {
1154  register long *p;
1155  int i;
1156 
1157  p = what;
1158  i = len;
1159  while (i) {
1160  *p = scale(*p);
1161  scale(*p); /* need this kludge for some compilers */
1162  p++;
1163  i--;
1164  }
1165  writearr(what, len);
1166 }
1167 
1168 static void
1169 writetfm(void) {
1170  lf = 6 + lh + (ec - bc + 1) + nw + nh + nd + ni + nl + nk + ne + np;
1171  write16((short)lf);
1172  write16((short)lh);
1173  write16((short)bc);
1174  write16((short)ec);
1175  write16((short)nw);
1176  write16((short)nh);
1177  write16((short)nd);
1178  write16((short)ni);
1179  write16((short)nl);
1180  write16((short)nk);
1181  write16((short)ne);
1182  write16((short)np);
1183  writearr(header, lh);
1184  writearr(charinfo, ec-bc+1);
1185  writesarr(width, nw);
1186  writesarr(height, nh);
1187  writesarr(depth, nd);
1188  writesarr(italic, ni);
1189  writearr(ligkern, nl);
1190  writesarr(kern, nk);
1191  writearr(tparam, np);
1192 }
1193 
1194 /* OK, the TFM file is done! Now for our next trick, the VPL file. */
1195 
1196 /* For TeX we want to compute a character height that works properly
1197  with accents. We only do this if the xheight has a reasonable value
1198  (>50), and only if the -a flag is not given. Furthermore, we never
1199  return a height less than the height of the original character.
1200 
1201  The idea of this routine is to adjust the heights of bare characters
1202  (say, t) so that the result of using the \accent primitive (say, \"t)
1203  is the same as a precomposed tdieresis character. This is done in
1204  the vpl output, so the vf+tfm generated from the vpl are affected,
1205  but not the original tfm.
1206 
1207  This idea is reasonable, but the downside is that changing the height
1208  of the base character at all, but especially downward, has
1209  undesirable consequences: when putting a rule over the character or
1210  constructing a math bar-over accent, for example, the rule will be
1211  too close to (or too far from, if the height is increased) the
1212  character.
1213 
1214  Furthermore, these days, except when using the original CM fonts,
1215  precomposed accent glyphs are widely available and used. And afm2tfm
1216  is not used much with the original CM fonts, as they don't come with
1217  afm files :).
1218 
1219  In any case, there is one situation where adjusting the height of the
1220  base character by looking at the standalone accent is definitely
1221  wrong: the dcaron, tcaron, and [Ll]caron glyphs. In these cases, the
1222  usual check-above shape is replaced by (approximately) an apostrophe
1223  to the right of the character. Therefore looking at the standalone
1224  check glyph is inapplicable.
1225 
1226  In general, it seems wrong to ever decrease the height from the
1227  original, since that will almost certainly result in crashes with
1228  \bar and the like. That seems worse than a mispositioned accent.
1229  So the routine returns the original height if the heuristic would
1230  decrease it.
1231 
1232  Nevertheless, despite all the above, the original behavior has been
1233  around for so many years that it seems bad to change it now. So
1234  adjustments upward are still made, unless -a is given.
1235 
1236  The following list of accents doesn't need to be complete. */
1237 const char *accents[] = { "acute", "tilde", "caron", "dieresis", NULL };
1238 
1239 static int
1241 {
1242  const char **p;
1243  struct adobeinfo *aci, *acci;
1244  /* The `ai' argument is the base letter, e.g., "d".
1245  `aci' is the accent, e.g., "caron".
1246  `acci' is the pre-composed accented letter, e.g., "dcaron". */
1247 
1248  /* If -a was given, or the xheight is too small, or the character
1249  name is more than one letter long, return the original height. */
1251  || xheight <= 50
1252  || *(ai->adobename + 1))
1253  return ai->ury;
1254 
1255  for (p = accents; *p; p++) { /* otherwise we look for accented letters */
1256  aci = findadobe(*p);
1257  if (aci) {
1258  strcpy(buffer, ai->adobename);
1259  strcat(buffer, *p);
1260  acci = findadobe(buffer);
1261  if (acci) {
1262  /* height heuristic since \accent assumes x-height positioning */
1263  int guess = acci->ury - aci->ury + xheight;
1264  if (guess > ai->ury) { /* ignore guess if it reduces height */
1265  return guess;
1266  }
1267  }
1268  }
1269  }
1270 
1271  /* didn't find anything to adjust, return original */
1272  return ai->ury;
1273 }
1274 
1275 /* modified tgr to eliminate varargs problems */
1276 
1277 #define vout(s) fprintf(vplout, s)
1278 int level; /* the depth of parenthesis nesting in VPL file being written */
1279 static void
1280 vlevout(void)
1281 {
1282  register int l = level;
1283  while (l--) vout(" ");
1284 }
1285 static void
1287 {
1288  vout("\n");
1289  vlevout();
1290 }
1291 #define voutln(str) {fprintf(vplout,"%s\n",str);vlevout();}
1292 #define voutln2(f,s) {fprintf(vplout,f,s);vlevnlout();}
1293 #define voutln3(f,a,b) {fprintf(vplout,f,a,b);vlevnlout();}
1294 #define voutln4(f,a,b,c) {fprintf(vplout,f,a,b,c);vlevnlout();}
1295 static void
1296 vleft(void)
1297 {
1298  level++;
1299  vout("(");
1300 }
1301 
1302 static void
1303 vright(void)
1304 {
1305  level--;
1306  voutln(")");
1307 }
1308 
1309 int forceoctal = 0;
1310 
1311 char vcharbuf[100];
1312 static char *
1313 vchar(int c)
1314 {
1315  if (forceoctal == 0 && ISALNUM (c))
1316  sprintf(vcharbuf,"C %c",
1317 #ifndef VMCMS
1318  c);
1319 #else
1320  ascii2ebcdic[c]);
1321 #endif
1322  else sprintf(vcharbuf,"O %o", (unsigned)c);
1323  return vcharbuf;
1324 }
1325 
1326 char vnamebuf[1000];
1327 static char *
1328 vname(int c)
1329 {
1330  if (!forceoctal && ISALNUM (c)) {
1331  vnamebuf[0] = 0;
1332  } else if (c >= 0 && c < 256) {
1333  snprintf (vnamebuf, sizeof (vnamebuf),
1334  " (comment %s)", texptrs[c]->adobename);
1335  }
1336  return vnamebuf;
1337 }
1338 
1339 static void
1341 {
1342  register int i, j, k;
1343  register struct adobeinfo *ai;
1344  register struct lig *nlig;
1345  register struct kern *nkern;
1346  register struct pcc *npcc;
1347  struct adobeinfo *asucc, *asub, *api;
1348  struct adobeptr *kern_eq;
1349  int xoff, yoff, ht;
1350  char unlabeled;
1351 
1352  voutln2("(VTITLE Created by %s)", titlebuf);
1353  voutln("(COMMENT Please edit that VTITLE if you edit this file)");
1354  snprintf(obuffer, sizeof(obuffer), "TeX-%s%s%s%s", outname,
1355  (efactor==1.0? "" : "-E"), (slant==0.0? "" : "-S"),
1356  (makevpl==1? "" : "-CSC"));
1357  if (strlen(obuffer)>19) { /* too long, will retain first 9 and last 10 */
1358  register char *p, *q;
1359  for (p = &obuffer[9], q = &obuffer[strlen(obuffer)-10]; p<&obuffer[19];
1360  p++, q++) *p = *q;
1361  obuffer[19] = '\0';
1362  }
1363  voutln2("(FAMILY %s)" , obuffer);
1364  {
1365  char tbuf[300];
1366  const char *base_encoding =
1367 #ifndef VMCMS
1368  codingscheme;
1369 #else
1370  ebcodingscheme;
1371 #endif
1372 
1373  if (strcmp (outencoding->name, base_encoding) == 0) {
1374  snprintf(tbuf, sizeof(tbuf), "%s", outencoding->name);
1375  } else {
1376  snprintf(tbuf, sizeof(tbuf), "%s + %s", base_encoding,
1377  outencoding->name);
1378  }
1379 
1380  if (strlen(tbuf) > 39) {
1381  error("Coding scheme too long; shortening to 39 characters.");
1382  tbuf[39] = 0;
1383  }
1384  voutln2("(CODINGSCHEME %s)", tbuf);
1385  }
1386  voutln("(DESIGNSIZE R 10.0)");
1387  voutln("(DESIGNUNITS R 1000)");
1388  voutln("(COMMENT DESIGNSIZE (1 em) IS IN POINTS)");
1389  voutln("(COMMENT OTHER DIMENSIONS ARE MULTIPLES OF DESIGNSIZE/1000)");
1390  /* Let vptovf compute the checksum. */
1391  /* voutln2("(CHECKSUM O %lo)",cksum ^ 0xffffffff); */
1392  if (boundarychar >= 0)
1393  voutln2("(BOUNDARYCHAR O %lo)", (unsigned long)boundarychar);
1394  vleft(); voutln("FONTDIMEN");
1395  if (newslant)
1396  voutln2("(SLANT R %f)", newslant);
1397  voutln2("(SPACE D %d)", fontspace);
1398  if (! fixedpitch) {
1399  voutln2("(STRETCH D %d)", transform(200,0));
1400  voutln2("(SHRINK D %d)", transform(100,0));
1401  }
1402  voutln2("(XHEIGHT D %d)", xheight);
1403  voutln2("(QUAD D %d)", transform(1000,0));
1404  voutln2("(EXTRASPACE D %d)", fixedpitch ? fontspace : transform(111, 0));
1405  vright();
1406  vleft(); voutln("MAPFONT D 0");
1407  voutln2("(FONTNAME %s)", outname);
1408  /* voutln2("(FONTCHECKSUM O %lo)", (unsigned long)cksum); */
1409  vright();
1410  if (makevpl>1) {
1411  vleft(); voutln("MAPFONT D 1");
1412  voutln2("(FONTNAME %s)", outname);
1413  voutln2("(FONTAT D %d)", (int)(1000.0*capheight+0.5));
1414  /* voutln2("(FONTCHECKSUM O %lo)", (unsigned long)cksum); */
1415  vright();
1416  }
1417 
1418  for (i=0; i<256 && texptrs[i]==NULL; i++);
1419  bc = i;
1420  for (i=255; i>=0 && texptrs[i]==NULL; i--);
1421  ec = i;
1422 
1423  vleft(); voutln("LIGTABLE");
1424  ai = findadobe("||");
1425  unlabeled = 1;
1426  for (nlig=ai->ligs; nlig; nlig=nlig->next)
1427  if (0 != (asucc=findadobe(nlig->succ))) {
1428  if (0 != (asub=findadobe(nlig->sub)))
1429  if (asucc->texnum>=0)
1430  if (asub->texnum>=0) {
1431  if (unlabeled) {
1432  voutln("(LABEL BOUNDARYCHAR)");
1433  unlabeled = 0;
1434  }
1435  for (j = asucc->texnum; j >= 0; j = nexttex[j]) {
1436  voutln4("(%s %s O %o)", vplligops[nlig->op],
1437  vchar(j), (unsigned)asub->texnum);
1438  }
1439  }
1440  }
1441  if (! unlabeled) voutln("(STOP)");
1442  for (i=bc; i<=ec; i++)
1443  if ((ai=texptrs[i]) && ai->texnum == i) {
1444  unlabeled = 1;
1445  if (uppercase[i]==NULL) /* omit ligatures from smallcap lowercase */
1446  for (nlig=ai->ligs; nlig; nlig=nlig->next)
1447  if (0 != (asucc=findadobe(nlig->succ)))
1448  if (0 != (asub=findadobe(nlig->sub)))
1449  if (asucc->texnum>=0)
1450  if (asub->texnum>=0) {
1451  if (unlabeled) {
1452  for (j = ai->texnum; j >= 0; j = nexttex[j])
1453  voutln3("(LABEL %s)%s", vchar(j), vname(j));
1454  unlabeled = 0;
1455  }
1456  for (j = asucc->texnum; j >= 0; j = nexttex[j]) {
1457  voutln4("(%s %s O %o)", vplligops[nlig->op],
1458  vchar(j), (unsigned)asub->texnum);
1459  if (nlig->boundleft)
1460  break;
1461  }
1462  }
1463  for (nkern = (uppercase[i] ? uppercase[i]->kerns : ai->kerns);
1464  nkern; nkern=nkern->next)
1465  if (0 != (asucc=findadobe(nkern->succ)))
1466  for (j = asucc->texnum; j >= 0; j = nexttex[j]) {
1467  if (uppercase[j]==NULL) {
1468  if (unlabeled) {
1469  for (k = ai->texnum; k >= 0; k = nexttex[k])
1470  voutln3("(LABEL %s)%s", vchar(k), vname(k));
1471  unlabeled = 0;
1472  }
1473  /* If other characters have the same kerns as this
1474  one, output the label here. This makes the TFM
1475  file much smaller than if we output all the
1476  kerns again under a different label. */
1477  for (kern_eq = ai->kern_equivs; kern_eq;
1478  kern_eq = kern_eq->next) {
1479  k = kern_eq->ch->texnum;
1480  if (k >= 0 && k < 256)
1481  voutln3("(LABEL %s)%s", vchar(k), vname(k));
1482  }
1483  ai->kern_equivs = 0; /* Only output those labels once. */
1484  if (uppercase[i]) {
1485  if (lowercase[j]) {
1486  for (k=lowercase[j]->texnum; k >= 0; k = nexttex[k])
1487  voutln4("(KRN %s R %.1f)%s", vchar(k),
1488  capheight*nkern->delta, vname(k));
1489  } else voutln4("(KRN %s R %.1f)%s",
1490  vchar(j), capheight*nkern->delta, vname(j));
1491  } else {
1492  voutln4("(KRN %s R %d)%s", vchar(j),
1493  nkern->delta, vname(j));
1494  if (lowercase[j])
1495  for (k=lowercase[j]->texnum; k >= 0; k = nexttex[k])
1496  voutln4("(KRN %s R %.1f)%s", vchar(k),
1497  capheight*nkern->delta, vname(k));
1498  }
1499  }
1500  }
1501  if (! unlabeled) voutln("(STOP)");
1502  }
1503  vright();
1504 
1505  for (i=bc; i<=ec; i++)
1506  if (0 != (ai=texptrs[i])) {
1507  vleft(); fprintf(vplout, "CHARACTER %s", vchar(i));
1508  if (*vcharbuf=='C') {
1509  voutln("");
1510  } else
1511  voutln2(" (comment %s)", ai->adobename);
1512  if (uppercase[i]) {
1513  ai=uppercase[i];
1514  voutln2("(CHARWD R %.1f)", capheight * (ai->width));
1515  if (0 != (ht=texheight(ai)))
1516  voutln2("(CHARHT R %.1f)", capheight * ht);
1517  if (ai->lly)
1518  voutln2("(CHARDP R %.1f)", -capheight * ai->lly);
1519  if (ai->urx > ai->width)
1520  voutln2("(CHARIC R %.1f)", capheight * (ai->urx - ai->width));
1521  } else {
1522  voutln2("(CHARWD R %d)", ai->width);
1523  if (0 != (ht=texheight(ai)))
1524  voutln2("(CHARHT R %d)", ht);
1525  if (ai->lly)
1526  voutln2("(CHARDP R %d)", -ai->lly);
1527  if (ai->urx > ai->width)
1528  voutln2("(CHARIC R %d)", ai->urx - ai->width);
1529  }
1530  if (ai->adobenum != i || uppercase[i]) {
1531  vleft(); voutln("MAP");
1532  if (uppercase[i]) voutln("(SELECTFONT D 1)");
1533  if (ai->pccs && ai->adobenum < 0) {
1534  xoff = 0; yoff = 0;
1535  for (npcc = ai->pccs; npcc; npcc=npcc->next)
1536  if (0 != (api=findadobe(npcc->partname)))
1537  if (api->texnum>=0) {
1538  if (npcc->xoffset != xoff) {
1539  if (uppercase[i]) {
1540  voutln2("(MOVERIGHT R %.1f)",
1541  capheight * (npcc->xoffset - xoff));
1542  } else voutln2("(MOVERIGHT R %d)",
1543  npcc->xoffset - xoff);
1544  xoff = npcc->xoffset;
1545  }
1546  if (npcc->yoffset != yoff) {
1547  if (uppercase[i]) {
1548  voutln2("(MOVEUP R %.1f)",
1549  capheight * (npcc->yoffset - yoff));
1550  } else voutln2("(MOVEUP R %d)",
1551  npcc->yoffset - yoff);
1552  yoff = npcc->yoffset;
1553  }
1554  voutln2("(SETCHAR O %o)", (unsigned)api->adobenum);
1555  xoff += texptrs[api->texnum]->width;
1556  }
1557  } else voutln2("(SETCHAR O %o)", (unsigned)ai->adobenum);
1558  vright();
1559  }
1560  vright();
1561  }
1562  if (level) error("! I forgot to match the parentheses");
1563 }
1564 
1565 #ifdef KPATHSEA
1566 static void
1567 version(FILE *f)
1568 {
1569  fputs ("afm2tfm(k) (dvips(k) 2021.1) 8.4\n", f);
1570  fprintf (f, "%s\n", kpathsea_version_string);
1571  fputs ("Copyright 2021 Radical Eye Software.\n\
1572 There is NO warranty. You may redistribute this software\n\
1573 under the terms of the GNU General Public License\n\
1574 and the Dvips copyright.\n\
1575 For more information about these matters, see the files\n\
1576 named COPYING and afm2tfm.c.\n\
1577 Original author of afm2tfm: T. Rokicki.\n", f);
1578 }
1579 
1580 #define USAGE "\
1581  Convert an Adobe font metric file to TeX font metric format.\n\
1582 \n\
1583 -a omit heuristic adjustment of heights for accents\n\
1584 -c REAL use REAL for height of small caps made with -V [0.8]\n\
1585 -e REAL widen (extend) characters by a factor of REAL\n\
1586 -O use octal for all character codes in the vpl file\n\
1587 -p ENCFILE read/download ENCFILE for the PostScript encoding\n\
1588 -s REAL oblique (slant) characters by REAL, generally <<1\n\
1589 -t ENCFILE read ENCFILE for the encoding of the vpl file\n\
1590 -T ENCFILE equivalent to -p ENCFILE -t ENCFILE\n\
1591 -u output only characters from encodings, nothing extra\n\
1592 -v FILE[.vpl] make a VPL file for conversion to VF\n\
1593 -V SCFILE[.vpl] like -v, but synthesize smallcaps as lowercase\n\
1594 --help print this message and exit.\n\
1595 --version print version number and exit.\n\
1596 "
1597 
1598 static void
1599 usage(FILE *f)
1600 {
1601  fputs ("Usage: afm2tfm FILE[.afm] [OPTION]... [FILE[.tfm]]\n", f);
1602  fputs (USAGE, f);
1603  putc ('\n', f);
1605 }
1606 #else /* ! KPATHSEA */
1607 static void
1609 {
1610  fprintf(f,
1611  "afm2tfm 8.1, Copyright 1990-97 by Radical Eye Software\n");
1612  fprintf(f,
1613  "Usage: afm2tfm foo[.afm] [-O] [-u] [-v|-V bar[.vpl]]\n");
1614  fprintf(f,
1615  " [-e expansion] [-s slant] [-c capheight]\n");
1616  fprintf(f,
1617  " [-p|-t|-T encodingfile] [foo[.tfm]]\n");
1618 }
1619 #endif
1620 
1621 #define CHECKARG3 if (argc < 4) { usage(stderr); exit(1); }
1622 
1623 static void
1624 openfiles(int argc, char **argv)
1625 {
1626 #ifndef KPATHSEA
1627  register int lastext;
1628 #else
1629  const char *q;
1630 #endif
1631  register int i;
1632  const char *p;
1633  int arginc;
1634 
1635  tfmout = (FILE *)NULL;
1636 
1637  if (argc == 1) {
1638  usage(stdout);
1639  exit(0);
1640  }
1641 
1642 #if defined(MSDOS) || defined(OS2) || defined(ATARIST)
1643  /* Make VPL file identical to that created under Unix */
1644  snprintf(titlebuf, sizeof(titlebuf), "afm2tfm %s", argv[1]);
1645 #else
1646 #ifdef VMCMS
1647  /* Make VPL file identical to that created under Unix */
1648  snprintf(titlebuf, sizeof(titlebuf), "afm2tfm %s", argv[1]);
1649 #else
1650  snprintf(titlebuf, sizeof(titlebuf), "%s %s", argv[0], argv[1]);
1651 #endif
1652 #endif
1653  if(strlen(argv[1]) >= MAXNAME - 4)
1654  error("! too long input file name");
1655  strcpy(inname, argv[1]);
1656 #ifdef KPATHSEA
1657  if (find_suffix(inname) == NULL)
1658  strcat(inname, ".afm");
1659 #else
1660  lastext = -1;
1661  for (i=0; inname[i]; i++)
1662  if (inname[i] == '.')
1663  lastext = i;
1664  else if (inname[i] == '/' || inname[i] == ':')
1665  lastext = -1;
1666  if (lastext == -1) strcat(inname, ".afm");
1667 #endif
1668  while (argc>2 && *argv[2]=='-') {
1669  arginc = 2;
1670  i = argv[2][1];
1671  if (i == '/')
1672  i = argv[2][2] - 32; /* /a ==> A for VMS */
1673  switch (i) {
1674 case 'V': makevpl++;
1675 case 'v': makevpl++;
1676  CHECKARG3
1677  if(strlen(argv[3]) >= MAXNAME - 4)
1678  error("! too long output VPL file name");
1679  strcpy(outname, argv[3]);
1680 #ifdef KPATHSEA
1681  if (find_suffix(outname) == NULL)
1682  strcat(outname, ".vpl");
1683 #else
1684  lastext = -1;
1685  for (i=0; outname[i]; i++)
1686  if (outname[i] == '.')
1687  lastext = i;
1688  else if (outname[i] == '/' || outname[i] == ':')
1689  lastext = -1;
1690  if (lastext == -1) strcat(outname, ".vpl");
1691 #endif
1692 #ifndef VMCMS
1693 #ifndef ATARIST
1694  if ((vplout=fopen(outname, WRITEBIN))==NULL)
1695 #else
1696  if ((vplout=fopen(outname, "w"))==NULL)
1697 #endif
1698 #else
1699  if ((vplout=fopen(outname, "w"))==NULL)
1700 #endif
1701  error("! can't open vpl output file");
1702  break;
1703 case 'a':
1705  arginc = 1;
1706  break;
1707 case 'c':
1708  CHECKARG3
1709  if (sscanf(argv[3], "%f", &capheight)==0 || capheight<0.01)
1710  error("! Bad small caps height");
1711  break;
1712 case 'e': CHECKARG3
1713  if (sscanf(argv[3], "%f", &efactor)==0 || efactor<0.01)
1714  error("! Bad extension factor");
1715  efactorparam = argv[3];
1716  break;
1717 case 'O':
1718  forceoctal = 1;
1719  arginc = 1;
1720  break;
1721 case 'P':
1722 case 'p':
1723  CHECKARG3
1724  inenname = argv[3];
1725  break;
1726 case 's':
1727  CHECKARG3
1728  if (sscanf(argv[3], "%f", &slant)==0)
1729  error("! Bad slant parameter");
1730  slantparam = argv[3];
1731  break;
1732 case 'T':
1733  CHECKARG3
1734  inenname = outenname = argv[3];
1735  break;
1736 case 't':
1737  CHECKARG3
1738  outenname = argv[3];
1739  break;
1740 case 'u':
1741  pedantic = 1;
1742  arginc = 1;
1743  break;
1744 default: fprintf(stderr, "Unknown option %s %s ignored.\n", argv[2], argv[3]);
1745  }
1746  for (i=0; i<arginc; i++) {
1748  sizeof(titlebuf) - strlen(titlebuf), " %s", argv[2]);
1749  argv++;
1750  argc--;
1751  }
1752  }
1753 
1754 #ifdef KPATHSEA
1755  afmin = kpse_open_file (inname, kpse_afm_format);
1756 #else /* ! KPATHSEA */
1757  if ((afmin=fopen(inname, "r"))==NULL)
1758  error("! can't open afm input file");
1759 #endif /* KPATHSEA */
1761 
1762  if (argc>3 || (argc==3 && *argv[2]=='-')) {
1763  error("! need at most two non-option arguments");
1764  usage(stderr);
1765  }
1766 
1767  if (argc == 2) strcpy(outname, inname);
1768  else strcpy(outname, argv[2]);
1769 
1770 #ifdef KPATHSEA
1771  if ((p = find_suffix(outname)) != NULL)
1772  outname[p-outname-1] = 0;
1773  strcat(outname, ".tfm");
1774  if (tfmout == NULL && (tfmout=fopen(outname, WRITEBIN))==NULL)
1775  error("! can't open tfm output file");
1776 /*
1777  * Now we strip off any directory information, so we only use the
1778  * base name in the vf file.
1779  */
1780  if (p == NULL)
1781  p = find_suffix(outname);
1782  outname[p-outname-1] = 0;
1783 
1784  q = xbasename(outname);
1785  strcpy(tmpstr, q); /* be careful, q and outname are overlapping */
1786  strcpy(outname, tmpstr);
1787 #else
1788  lastext = -1;
1789  for (i=0; outname[i]; i++)
1790  if (outname[i] == '.')
1791  lastext = i;
1792  else if (outname[i] == '/' || outname[i] == ':' || outname[i] == '\\')
1793  lastext = -1;
1794  if (argc == 2) {
1795  outname[lastext] = 0;
1796  lastext = -1;
1797  }
1798  if (lastext == -1) {
1799  lastext = strlen(outname);
1800  strcat(outname, ".tfm");
1801  }
1802  if (tfmout == NULL && (tfmout=fopen(outname, WRITEBIN))==NULL)
1803  error("! can't open tfm output file");
1804  outname[lastext] = 0;
1805 /*
1806  * Now we strip off any directory information, so we only use the
1807  * base name in the vf file. We accept any of /, :, or \ as directory
1808  * delimiters, so none of these are available for use inside the
1809  * base name; this shouldn't be a problem.
1810  */
1811  for (i=0, lastext=0; outname[i]; i++)
1812  if (outname[i] == '/' || outname[i] == ':' || outname[i] == '\\')
1813  lastext = i + 1;
1814  if (lastext)
1815  strcpy(outname, outname + lastext);
1816 #endif
1817 }
1818 /*
1819  * Some routines to remove kerns that match certain patterns.
1820  */
1821 static struct kern *
1822 rmkernmatch(struct kern *k, char *s)
1823 {
1824  struct kern *nkern;
1825 
1826  while (k && strcmp(k->succ, s)==0)
1827  k = k->next;
1828  if (k) {
1829  for (nkern = k; nkern; nkern = nkern->next)
1830  while (nkern->next && strcmp(nkern->next->succ, s)==0)
1831  nkern->next = nkern->next->next;
1832  }
1833  return k;
1834 }
1835 /*
1836  * Recursive to one level.
1837  */
1838 static void
1839 rmkern(char *s1, char *s2, struct adobeinfo *ai)
1840 {
1841  if (ai == 0) {
1842  if (strcmp(s1, "*") == 0) {
1843  for (ai=adobechars; ai; ai = ai->next)
1844  rmkern(s1, s2, ai);
1845  return;
1846  } else {
1847  ai = findadobe(s1);
1848  if (ai == 0)
1849  return;
1850  }
1851  }
1852  if (strcmp(s2, "*")==0)
1853  ai->kerns = 0; /* drop them on the floor */
1854  else
1855  ai->kerns = rmkernmatch(ai->kerns, s2);
1856 }
1857 
1858 /* Make the kerning for character S1 equivalent to that for S2.
1859  If either S1 or S2 do not exist, do nothing.
1860  If S1 already has kerning, do nothing. */
1861 static void
1862 addkern(char *s1, char *s2)
1863 {
1864  struct adobeinfo *ai1 = findadobe (s1);
1865  struct adobeinfo *ai2 = findadobe (s2);
1866  if (ai1 && ai2 && !ai1->kerns) {
1867  /* Put the new one at the head of the list, since order is immaterial. */
1868  struct adobeptr *ap
1869  = (struct adobeptr *) mymalloc((unsigned long)sizeof(struct adobeptr));
1870  ap->next = ai2->kern_equivs;
1871  ap->ch = ai1;
1872  ai2->kern_equivs = ap;
1873  }
1874 }
1876 /*
1877  * Reads a ligkern line, if this is one. Assumes the first character
1878  * passed is `%'.
1879  */
1880 static void
1882 {
1883  char *oparam = param;
1884  char *mlist[5];
1885  int n;
1886 
1887  s++;
1888  while (*s && *s <= ' ')
1889  s++;
1890  if (strncmp(s, "LIGKERN", 7)==0) {
1891  sawligkern = 1;
1892  s += 7;
1893  while (*s && *s <= ' ')
1894  s++;
1895  param = s;
1896  while (*param) {
1897  for (n=0; n<5;) {
1898  if (*param == 0)
1899  break;
1900  mlist[n] = paramstring();
1901  if (strcmp(mlist[n], ";") == 0)
1902  break;
1903  n++;
1904  }
1905  if (n > 4)
1906  error("! too many parameters in lig kern data");
1907  if (n < 3)
1908  error("! too few parameters in lig kern data");
1909  if (n == 3 && strcmp(mlist[1], "{}") == 0) { /* rmkern command */
1910  rmkern(mlist[0], mlist[2], (struct adobeinfo *)0);
1911  } else if (n == 3 && strcmp(mlist[1], "<>") == 0) { /* addkern */
1912  addkern(mlist[0], mlist[2]);
1913  } else if (n == 3 && strcmp(mlist[0], "||") == 0 &&
1914  strcmp(mlist[1], "=") == 0) { /* bc command */
1915  struct adobeinfo *ai = findadobe("||");
1916 
1917  if (boundarychar != -1)
1918  error("! multiple boundary character commands?");
1919  if (sscanf(mlist[2], "%d", &n) != 1)
1920  error("! expected number assignment for boundary char");
1921  if (n < 0 || n > 255)
1922  error("! boundary character number must be 0..255");
1923  boundarychar = n;
1924  if (ai == 0)
1925  error("! internal error: boundary char");
1926  ai->texnum = n; /* prime the pump, so to speak, for lig/kerns */
1927  } else if (n == 4) {
1928  int op = -1;
1929  struct adobeinfo *ai;
1930 
1931  for (n=0; encligops[n]; n++)
1932  if (strcmp(mlist[2], encligops[n])==0) {
1933  op = n;
1934  break;
1935  }
1936  if (op < 0)
1937  error("! bad ligature op specified");
1938  if (0 != (ai = findadobe(mlist[0]))) {
1939  struct lig *lig;
1940 
1941  if (findadobe(mlist[2])) /* remove coincident kerns */
1942  rmkern(mlist[0], mlist[1], ai);
1943  if (strcmp(mlist[3], "||") == 0)
1944  error("! you can't lig to the boundary character!");
1945  if (! fixedpitch) { /* fixed pitch fonts get *0* ligs */
1946  for (lig=ai->ligs; lig; lig = lig->next)
1947  if (strcmp(lig->succ, mlist[1]) == 0)
1948  break; /* we'll re-use this structure */
1949  if (lig == 0) {
1950  lig = newlig();
1951  lig->succ = newstring(mlist[1]);
1952  lig->next = ai->ligs;
1953  ai->ligs = lig;
1954  }
1955  lig->sub = newstring(mlist[3]);
1956  lig->op = op;
1957  if (strcmp(mlist[1], "||")==0) {
1958  lig->boundleft = 1;
1959  if (strcmp(mlist[0], "||")==0)
1960  error("! you can't lig boundarychar boundarychar!");
1961  } else
1962  lig->boundleft = 0;
1963  }
1964  }
1965  } else
1966  error("! bad form in LIGKERN command");
1967  }
1968  }
1969  param = oparam;
1970 }
1971 /*
1972  * Here we get a token from the AFM file. We parse just as much PostScript
1973  * as we expect to find in an encoding file. We allow commented lines and
1974  * names like 0, .notdef, _foo_. We do not allow //abc.
1975  */
1976 char smbuffer[100]; /* for tokens */
1977 static char *
1978 gettoken(void) {
1979  char *p, *q;
1980 
1981  while (1) {
1982  while (param == 0 || *param == 0) {
1983  if (texlive_getline() == 0)
1984  error("! premature end in encoding file");
1985  for (p=buffer; *p; p++)
1986  if (*p == '%') {
1987  if (ignoreligkern == 0)
1988  checkligkern(p);
1989  *p = 0;
1990  break;
1991  }
1992  }
1993  while (*param && *param <= ' ')
1994  param++;
1995  if (*param) {
1996  if (*param == '[' || *param == ']' ||
1997  *param == '{' || *param == '}') {
1998  smbuffer[0] = *param++;
1999  smbuffer[1] = 0;
2000  return smbuffer;
2001  } else if (*param == '/' || *param == '-' || *param == '_' ||
2002  *param == '.' ||
2003  ('0' <= *param && *param <= '9') ||
2004  ('a' <= *param && *param <= 'z') ||
2005  ('A' <= *param && *param <= 'Z')) {
2006  smbuffer[0] = *param;
2007  for (p=param+1, q=smbuffer+1;
2008  *p == '-' || *p == '_' || *p == '.' ||
2009  ('0' <= *p && *p <= '9') ||
2010  ('a' <= *p && *p <= 'z') ||
2011  ('A' <= *p && *p <= 'Z'); p++, q++)
2012  *q = *p;
2013  *q = 0;
2014  param = p;
2015  return smbuffer;
2016  }
2017  }
2018  }
2019 }
2020 static void
2022  int i;
2023 
2024  for (i=0; staticligkern[i]; i++) {
2027  param = buffer;
2029  }
2030 }
2031 /*
2032  * This routine reads in an encoding file, given the name. It returns
2033  * the final total structure. It performs a number of consistency checks.
2034  */
2035 static struct encoding *
2037 {
2038  char *p;
2039  int i;
2040  struct encoding *e =
2041  (struct encoding *)mymalloc((unsigned long)sizeof(struct encoding));
2042 
2043  sawligkern = 0;
2044  if (afmin)
2045  error("! oops; internal afmin error");
2046  if (enc) {
2047 #ifdef KPATHSEA
2048  afmin = kpse_open_file(enc, kpse_enc_format);
2049 #else
2050  afmin = fopen(enc, "r");
2051 #endif
2053  param = 0;
2054  if (afmin == 0)
2055 #ifdef KPATHSEA
2056  FATAL1 ("couldn't open encoding file `%s'", enc);
2057 #else
2058  error("! couldn't open that encoding file");
2059 #endif
2060  p = gettoken();
2061  if (*p != '/' || p[1] == 0)
2062  error("! first token in encoding must be literal encoding name");
2063  e->name = newstring(p+1);
2064  p = gettoken();
2065  if (strcmp(p, "["))
2066  error("! second token in encoding must be mark ([) token");
2067  for (i=0; i<256; i++) {
2068  p = gettoken();
2069  if (*p != '/' || p[1] == 0)
2070  error("! tokens 3 to 257 in encoding must be literal names");
2071  e->vec[i] = newstring(p+1);
2072  }
2073  p = gettoken();
2074  if (strcmp(p, "]"))
2075  error("! token 258 in encoding must be make-array (])");
2076  while (texlive_getline()) {
2077  for (p=buffer; *p; p++)
2078  if (*p == '%') {
2079  if (ignoreligkern == 0)
2080  checkligkern(p);
2081  *p = 0;
2082  break;
2083  }
2084  }
2085  fclose(afmin);
2086  afmin = 0;
2087  if (ignoreligkern == 0 && sawligkern == 0)
2089  } else {
2090  e = &staticencoding;
2092  }
2093  param = 0;
2094  return e;
2095 }
2096 /*
2097  * This routine prints out the line that needs to be added to psfonts.map.
2098  */
2099 static void
2101 #ifndef VMCMS
2102  printf("%s %s", outname,
2103  fontname);
2104 #else /* VM/CMS: fontname is ascii, so we use ebfontname */
2105  printf("%s %s", outname,
2106  ebfontname);
2107 #endif
2108  if (slantparam || efactorparam || inenname) {
2109  printf(" \"");
2110  if (slantparam)
2111  printf(" %s SlantFont", slantparam);
2112  if (efactorparam)
2113  printf(" %s ExtendFont", efactorparam);
2114  if (inenname)
2115  printf(" %s ReEncodeFont", inencoding->name);
2116  printf(" \"");
2117  if (inenname)
2118  printf(" <%s", inenname);
2119  }
2120  printf("\n");
2121 }
2122 #ifndef VMS
2123 int
2124 #endif
2125 main(int argc, char **argv)
2126 {
2127  int i;
2128 
2129 #ifdef KPATHSEA
2130  kpse_set_program_name (argv[0], "afm2tfm");
2131 
2132  if (argc == 1) {
2133  fputs ("afm2tfm: Need at least one file argument.\n", stderr);
2134  fputs ("Try `afm2tfm --help' for more information.\n", stderr);
2135  exit(1);
2136  }
2137  if (argc == 2) {
2138  if (strcmp (argv[1], "--help") == 0) {
2139  usage (stdout);
2140  exit (0);
2141  } else if (strcmp (argv[1], "--version") == 0) {
2142  version (stdout);
2143  exit (0);
2144  }
2145  }
2146 #endif /* KPATHSEA */
2147  for (i=0; i<256; i++)
2148  nexttex[i] = -1; /* encoding chains have length 0 */
2149  tfmdata = (long *)mymalloc((unsigned long)40000L);
2150  openfiles(argc, argv);
2151  readadobe();
2152  if (fontspace == 0) {
2153  struct adobeinfo *ai;
2154 
2155  if (0 != (ai = findadobe("space")))
2156  fontspace = ai->width;
2157  else if (adobeptrs[32])
2158  fontspace = adobeptrs[32]->width;
2159  else
2160  fontspace = transform(500, 0);
2161  }
2162  handlereencoding();
2163  buildtfm();
2164  writetfm();
2165  conspsfonts();
2166  if (makevpl) {
2167  assignchars();
2168  if (makevpl>1) upmap();
2169  writevpl();
2170  }
2171  return 0;
2172  /*NOTREACHED*/
2173 }
2174 
return _Result< 0 ? -1 :_Result;} #line 1069 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vsnwprintf_s_l(wchar_t *const _Buffer, size_t const _BufferCount, size_t const _MaxCount, wchar_t const *const _Format, _locale_t const _Locale, va_list _ArgList) { int const _Result=__stdio_common_vsnwprintf_s((*__local_stdio_printf_options()), _Buffer, _BufferCount, _MaxCount, _Format, _Locale, _ArgList);return _Result< 0 ? -1 :_Result;} #line 1091 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vsnwprintf_s(wchar_t *const _Buffer, size_t const _BufferCount, size_t const _MaxCount, wchar_t const *const _Format, va_list _ArgList) { return _vsnwprintf_s_l(_Buffer, _BufferCount, _MaxCount, _Format,((void *) 0), _ArgList);} #line 1108 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "_snwprintf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _snwprintf(wchar_t *_Buffer, size_t _BufferCount, wchar_t const *_Format,...);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_vsnwprintf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _vsnwprintf(wchar_t *_Buffer, size_t _BufferCount, wchar_t const *_Format, va_list _Args);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_vsnwprintf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _vsnwprintf(wchar_t *_Buffer, size_t _BufferCount, wchar_t const *_Format, va_list _ArgList) { return _vsnwprintf_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);} #line 1133 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vswprintf_c_l(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, _locale_t const _Locale, va_list _ArgList) { int const _Result=__stdio_common_vswprintf((*__local_stdio_printf_options()), _Buffer, _BufferCount, _Format, _Locale, _ArgList);return _Result< 0 ? -1 :_Result;} #line 1163 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vswprintf_c(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, va_list _ArgList) { return _vswprintf_c_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);} #line 1179 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vswprintf_l(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, _locale_t const _Locale, va_list _ArgList) { return _vswprintf_c_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);} #line 1196 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl __vswprintf_l(wchar_t *const _Buffer, wchar_t const *const _Format, _locale_t const _Locale, va_list _ArgList) { return _vswprintf_l(_Buffer,(size_t) -1, _Format, _Locale, _ArgList);} #line 1212 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vswprintf(wchar_t *const _Buffer, wchar_t const *const _Format, va_list _ArgList) { return _vswprintf_l(_Buffer,(size_t) -1, _Format,((void *) 0), _ArgList);} #line 1227 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl vswprintf(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, va_list _ArgList) { return _vswprintf_c_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);} #line 1243 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vswprintf_s_l(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, _locale_t const _Locale, va_list _ArgList) { int const _Result=__stdio_common_vswprintf_s((*__local_stdio_printf_options()), _Buffer, _BufferCount, _Format, _Locale, _ArgList);return _Result< 0 ? -1 :_Result;} #line 1264 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl vswprintf_s(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, va_list _ArgList) { return _vswprintf_s_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);} #line 1281 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" #line 1283 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vswprintf_p_l(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, _locale_t const _Locale, va_list _ArgList) { int const _Result=__stdio_common_vswprintf_p((*__local_stdio_printf_options()), _Buffer, _BufferCount, _Format, _Locale, _ArgList);return _Result< 0 ? -1 :_Result;} #line 1312 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vswprintf_p(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, va_list _ArgList) { return _vswprintf_p_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);} #line 1328 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vscwprintf_l(wchar_t const *const _Format, _locale_t const _Locale, va_list _ArgList) { int const _Result=__stdio_common_vswprintf((*__local_stdio_printf_options())|(1ULL<< 1),((void *) 0), 0, _Format, _Locale, _ArgList);return _Result< 0 ? -1 :_Result;} #line 1347 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vscwprintf(wchar_t const *const _Format, va_list _ArgList) { return _vscwprintf_l(_Format,((void *) 0), _ArgList);} #line 1361 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vscwprintf_p_l(wchar_t const *const _Format, _locale_t const _Locale, va_list _ArgList) { int const _Result=__stdio_common_vswprintf_p((*__local_stdio_printf_options())|(1ULL<< 1),((void *) 0), 0, _Format, _Locale, _ArgList);return _Result< 0 ? -1 :_Result;} #line 1380 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vscwprintf_p(wchar_t const *const _Format, va_list _ArgList) { return _vscwprintf_p_l(_Format,((void *) 0), _ArgList);} #line 1394 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl __swprintf_l(wchar_t *const _Buffer, wchar_t const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=__vswprintf_l(_Buffer, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1414 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _swprintf_l(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vswprintf_c_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1435 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _swprintf(wchar_t *const _Buffer, wchar_t const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=__vswprintf_l(_Buffer, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1454 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl swprintf(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vswprintf_c_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1474 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "__swprintf_l_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl __swprintf_l(wchar_t *_Buffer, wchar_t const *_Format, _locale_t _Locale,...);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_vswprintf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl __vswprintf_l(wchar_t *_Buffer, wchar_t const *_Format, _locale_t _Locale, va_list _Args);__declspec(deprecated("This function or variable may be unsafe. Consider using " "swprintf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _swprintf(wchar_t *_Buffer, wchar_t const *_Format,...);__declspec(deprecated("This function or variable may be unsafe. Consider using " "vswprintf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _vswprintf(wchar_t *_Buffer, wchar_t const *_Format, va_list _Args);__inline int __cdecl _swprintf_s_l(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vswprintf_s_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1511 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl swprintf_s(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vswprintf_s_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1532 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" #line 1534 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _swprintf_p_l(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vswprintf_p_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1562 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _swprintf_p(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vswprintf_p_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1582 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _swprintf_c_l(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vswprintf_c_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1603 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _swprintf_c(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vswprintf_c_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1623 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "_snwprintf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _snwprintf_l(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsnwprintf_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1646 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _snwprintf(wchar_t *_Buffer, size_t _BufferCount, wchar_t const *_Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsnwprintf_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1668 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _snwprintf_s_l(wchar_t *const _Buffer, size_t const _BufferCount, size_t const _MaxCount, wchar_t const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsnwprintf_s_l(_Buffer, _BufferCount, _MaxCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1690 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _snwprintf_s(wchar_t *const _Buffer, size_t const _BufferCount, size_t const _MaxCount, wchar_t const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsnwprintf_s_l(_Buffer, _BufferCount, _MaxCount, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1711 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _scwprintf_l(wchar_t const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vscwprintf_l(_Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1737 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _scwprintf(wchar_t const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vscwprintf_l(_Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1755 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _scwprintf_p_l(wchar_t const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vscwprintf_p_l(_Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1774 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _scwprintf_p(wchar_t const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vscwprintf_p_l(_Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1792 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" #pragma warning(push) #pragma warning(disable:4141 6054) #pragma warning(pop) #line 1856 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" int __cdecl __stdio_common_vswscanf(unsigned __int64 _Options, wchar_t const *_Buffer, size_t _BufferCount, wchar_t const *_Format, _locale_t _Locale, va_list _ArgList);__inline int __cdecl _vswscanf_l(wchar_t const *const _Buffer, wchar_t const *const _Format, _locale_t const _Locale, va_list _ArgList) { return __stdio_common_vswscanf((*__local_stdio_scanf_options()), _Buffer,(size_t) -1, _Format, _Locale, _ArgList);} #line 1897 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl vswscanf(wchar_t const *_Buffer, wchar_t const *_Format, va_list _ArgList) { return _vswscanf_l(_Buffer, _Format,((void *) 0), _ArgList);} #line 1912 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vswscanf_s_l(wchar_t const *const _Buffer, wchar_t const *const _Format, _locale_t const _Locale, va_list _ArgList) { return __stdio_common_vswscanf((*__local_stdio_scanf_options())|(1ULL<< 0), _Buffer,(size_t) -1, _Format, _Locale, _ArgList);} #line 1930 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl vswscanf_s(wchar_t const *const _Buffer, wchar_t const *const _Format, va_list _ArgList) { return _vswscanf_s_l(_Buffer, _Format,((void *) 0), _ArgList);} #line 1947 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" #line 1949 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "_vsnwscanf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _vsnwscanf_l(wchar_t const *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, _locale_t const _Locale, va_list _ArgList) { return __stdio_common_vswscanf((*__local_stdio_scanf_options()), _Buffer, _BufferCount, _Format, _Locale, _ArgList);} #line 1976 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vsnwscanf_s_l(wchar_t const *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, _locale_t const _Locale, va_list _ArgList) { return __stdio_common_vswscanf((*__local_stdio_scanf_options())|(1ULL<< 0), _Buffer, _BufferCount, _Format, _Locale, _ArgList);} #line 1995 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "_swscanf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _swscanf_l(wchar_t const *const _Buffer, wchar_t const *const _Format, _locale_t _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vswscanf_l(_Buffer, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2015 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "swscanf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl swscanf(wchar_t const *const _Buffer, wchar_t const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vswscanf_l(_Buffer, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2034 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _swscanf_s_l(wchar_t const *const _Buffer, wchar_t const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vswscanf_s_l(_Buffer, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2054 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl swscanf_s(wchar_t const *const _Buffer, wchar_t const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vswscanf_s_l(_Buffer, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2075 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" #line 2077 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "_snwscanf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _snwscanf_l(wchar_t const *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsnwscanf_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2100 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "_snwscanf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _snwscanf(wchar_t const *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsnwscanf_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2122 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _snwscanf_s_l(wchar_t const *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsnwscanf_s_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2143 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _snwscanf_s(wchar_t const *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsnwscanf_s_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2163 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __pragma(pack(pop))#pragma warning(pop) #pragma warning(push)#pragma warning(disable:4324 4514 4574 4710 4793 4820 4995 4996 28719 28726 28727) __pragma(pack(push, 8)) typedef __int64 fpos_t;errno_t __cdecl _get_stream_buffer_pointers(FILE *_Stream, char ***_Base, char ***_Pointer, int **_Count);errno_t __cdecl clearerr_s(FILE *_Stream);errno_t __cdecl fopen_s(FILE **_Stream, char const *_FileName, char const *_Mode);size_t __cdecl fread_s(void *_Buffer, size_t _BufferSize, size_t _ElementSize, size_t _ElementCount, FILE *_Stream);errno_t __cdecl freopen_s(FILE **_Stream, char const *_FileName, char const *_Mode, FILE *_OldStream);char *__cdecl gets_s(char *_Buffer, rsize_t _Size);errno_t __cdecl tmpfile_s(FILE **_Stream);errno_t __cdecl tmpnam_s(char *_Buffer, rsize_t _Size);#line 145 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" void __cdecl clearerr(FILE *_Stream);int __cdecl fclose(FILE *_Stream);int __cdecl _fcloseall(void);FILE *__cdecl _fdopen(int _FileHandle, char const *_Mode);int __cdecl feof(FILE *_Stream);int __cdecl ferror(FILE *_Stream);int __cdecl fflush(FILE *_Stream);int __cdecl fgetc(FILE *_Stream);int __cdecl _fgetchar(void);int __cdecl fgetpos(FILE *_Stream, fpos_t *_Position);char *__cdecl fgets(char *_Buffer, int _MaxCount, FILE *_Stream);int __cdecl _fileno(FILE *_Stream);int __cdecl _flushall(void);__declspec(deprecated("This function or variable may be unsafe. Consider using " "fopen_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) FILE *__cdecl fopen(char const *_FileName, char const *_Mode);int __cdecl fputc(int _Character, FILE *_Stream);int __cdecl _fputchar(int _Character);int __cdecl fputs(char const *_Buffer, FILE *_Stream);size_t __cdecl fread(void *_Buffer, size_t _ElementSize, size_t _ElementCount, FILE *_Stream);__declspec(deprecated("This function or variable may be unsafe. Consider using " "freopen_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) FILE *__cdecl freopen(char const *_FileName, char const *_Mode, FILE *_Stream);FILE *__cdecl _fsopen(char const *_FileName, char const *_Mode, int _ShFlag);int __cdecl fsetpos(FILE *_Stream, fpos_t const *_Position);int __cdecl fseek(FILE *_Stream, long _Offset, int _Origin);int __cdecl _fseeki64(FILE *_Stream, __int64 _Offset, int _Origin);long __cdecl ftell(FILE *_Stream);__int64 __cdecl _ftelli64(FILE *_Stream);size_t __cdecl fwrite(void const *_Buffer, size_t _ElementSize, size_t _ElementCount, FILE *_Stream);int __cdecl getc(FILE *_Stream);int __cdecl getchar(void);int __cdecl _getmaxstdio(void);int __cdecl _getw(FILE *_Stream);void __cdecl perror(char const *_ErrorMessage);int __cdecl _pclose(FILE *_Stream);FILE *__cdecl _popen(char const *_Command, char const *_Mode);#line 344 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" int __cdecl putc(int _Character, FILE *_Stream);int __cdecl putchar(int _Character);int __cdecl puts(char const *_Buffer);int __cdecl _putw(int _Word, FILE *_Stream);int __cdecl remove(char const *_FileName);int __cdecl rename(char const *_OldFileName, char const *_NewFileName);int __cdecl _unlink(char const *_FileName);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_unlink" ". See online help for details.")) int __cdecl unlink(char const *_FileName);#line 391 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" void __cdecl rewind(FILE *_Stream);int __cdecl _rmtmp(void);__declspec(deprecated("This function or variable may be unsafe. Consider using " "setvbuf" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) void __cdecl setbuf(FILE *_Stream, char *_Buffer);int __cdecl _setmaxstdio(int _Maximum);int __cdecl setvbuf(FILE *_Stream, char *_Buffer, int _Mode, size_t _Size);__declspec(allocator) char *__cdecl _tempnam(char const *_DirectoryName, char const *_FilePrefix);__declspec(deprecated("This function or variable may be unsafe. Consider using " "tmpfile_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) FILE *__cdecl tmpfile(void);__declspec(deprecated("This function or variable may be unsafe. Consider using " "tmpnam_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char *__cdecl tmpnam(char *_Buffer);int __cdecl ungetc(int _Character, FILE *_Stream);void __cdecl _lock_file(FILE *_Stream);void __cdecl _unlock_file(FILE *_Stream);int __cdecl _fclose_nolock(FILE *_Stream);int __cdecl _fflush_nolock(FILE *_Stream);int __cdecl _fgetc_nolock(FILE *_Stream);int __cdecl _fputc_nolock(int _Character, FILE *_Stream);size_t __cdecl _fread_nolock(void *_Buffer, size_t _ElementSize, size_t _ElementCount, FILE *_Stream);size_t __cdecl _fread_nolock_s(void *_Buffer, size_t _BufferSize, size_t _ElementSize, size_t _ElementCount, FILE *_Stream);int __cdecl _fseek_nolock(FILE *_Stream, long _Offset, int _Origin);int __cdecl _fseeki64_nolock(FILE *_Stream, __int64 _Offset, int _Origin);long __cdecl _ftell_nolock(FILE *_Stream);__int64 __cdecl _ftelli64_nolock(FILE *_Stream);size_t __cdecl _fwrite_nolock(void const *_Buffer, size_t _ElementSize, size_t _ElementCount, FILE *_Stream);int __cdecl _getc_nolock(FILE *_Stream);int __cdecl _putc_nolock(int _Character, FILE *_Stream);int __cdecl _ungetc_nolock(int _Character, FILE *_Stream);int *__cdecl __p__commode(void);#line 596 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" int __cdecl __stdio_common_vfprintf(unsigned __int64 _Options, FILE *_Stream, char const *_Format, _locale_t _Locale, va_list _ArgList);int __cdecl __stdio_common_vfprintf_s(unsigned __int64 _Options, FILE *_Stream, char const *_Format, _locale_t _Locale, va_list _ArgList);int __cdecl __stdio_common_vfprintf_p(unsigned __int64 _Options, FILE *_Stream, char const *_Format, _locale_t _Locale, va_list _ArgList);__inline int __cdecl _vfprintf_l(FILE *const _Stream, char const *const _Format, _locale_t const _Locale, va_list _ArgList) { return __stdio_common_vfprintf((*__local_stdio_printf_options()), _Stream, _Format, _Locale, _ArgList);} #line 648 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl vfprintf(FILE *const _Stream, char const *const _Format, va_list _ArgList) { return _vfprintf_l(_Stream, _Format,((void *) 0), _ArgList);} #line 662 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vfprintf_s_l(FILE *const _Stream, char const *const _Format, _locale_t const _Locale, va_list _ArgList) { return __stdio_common_vfprintf_s((*__local_stdio_printf_options()), _Stream, _Format, _Locale, _ArgList);} #line 677 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl vfprintf_s(FILE *const _Stream, char const *const _Format, va_list _ArgList) { return _vfprintf_s_l(_Stream, _Format,((void *) 0), _ArgList);} #line 693 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #line 695 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vfprintf_p_l(FILE *const _Stream, char const *const _Format, _locale_t const _Locale, va_list _ArgList) { return __stdio_common_vfprintf_p((*__local_stdio_printf_options()), _Stream, _Format, _Locale, _ArgList);} #line 710 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vfprintf_p(FILE *const _Stream, char const *const _Format, va_list _ArgList) { return _vfprintf_p_l(_Stream, _Format,((void *) 0), _ArgList);} #line 724 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vprintf_l(char const *const _Format, _locale_t const _Locale, va_list _ArgList) { return _vfprintf_l((__acrt_iob_func(1)), _Format, _Locale, _ArgList);} #line 738 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl vprintf(char const *const _Format, va_list _ArgList) { return _vfprintf_l((__acrt_iob_func(1)), _Format,((void *) 0), _ArgList);} #line 751 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vprintf_s_l(char const *const _Format, _locale_t const _Locale, va_list _ArgList) { return _vfprintf_s_l((__acrt_iob_func(1)), _Format, _Locale, _ArgList);} #line 765 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl vprintf_s(char const *const _Format, va_list _ArgList) { return _vfprintf_s_l((__acrt_iob_func(1)), _Format,((void *) 0), _ArgList);} #line 780 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #line 782 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vprintf_p_l(char const *const _Format, _locale_t const _Locale, va_list _ArgList) { return _vfprintf_p_l((__acrt_iob_func(1)), _Format, _Locale, _ArgList);} #line 796 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vprintf_p(char const *const _Format, va_list _ArgList) { return _vfprintf_p_l((__acrt_iob_func(1)), _Format,((void *) 0), _ArgList);} #line 809 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _fprintf_l(FILE *const _Stream, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfprintf_l(_Stream, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 828 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl fprintf(FILE *const _Stream, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfprintf_l(_Stream, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 846 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" int __cdecl _set_printf_count_output(int _Value);int __cdecl _get_printf_count_output(void);__inline int __cdecl _fprintf_s_l(FILE *const _Stream, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfprintf_s_l(_Stream, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 871 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl fprintf_s(FILE *const _Stream, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfprintf_s_l(_Stream, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 891 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #line 893 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _fprintf_p_l(FILE *const _Stream, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfprintf_p_l(_Stream, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 912 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _fprintf_p(FILE *const _Stream, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfprintf_p_l(_Stream, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 930 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _printf_l(char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfprintf_l((__acrt_iob_func(1)), _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 948 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl printf(char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfprintf_l((__acrt_iob_func(1)), _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 965 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _printf_s_l(char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfprintf_s_l((__acrt_iob_func(1)), _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 983 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl printf_s(char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfprintf_s_l((__acrt_iob_func(1)), _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1002 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #line 1004 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _printf_p_l(char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfprintf_p_l((__acrt_iob_func(1)), _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1022 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _printf_p(char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfprintf_p_l((__acrt_iob_func(1)), _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1039 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" int __cdecl __stdio_common_vfscanf(unsigned __int64 _Options, FILE *_Stream, char const *_Format, _locale_t _Locale, va_list _Arglist);__inline int __cdecl _vfscanf_l(FILE *const _Stream, char const *const _Format, _locale_t const _Locale, va_list _ArgList) { return __stdio_common_vfscanf((*__local_stdio_scanf_options()), _Stream, _Format, _Locale, _ArgList);} #line 1070 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl vfscanf(FILE *const _Stream, char const *const _Format, va_list _ArgList) { return _vfscanf_l(_Stream, _Format,((void *) 0), _ArgList);} #line 1084 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vfscanf_s_l(FILE *const _Stream, char const *const _Format, _locale_t const _Locale, va_list _ArgList) { return __stdio_common_vfscanf((*__local_stdio_scanf_options())|(1ULL<< 0), _Stream, _Format, _Locale, _ArgList);} #line 1101 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl vfscanf_s(FILE *const _Stream, char const *const _Format, va_list _ArgList) { return _vfscanf_s_l(_Stream, _Format,((void *) 0), _ArgList);} #line 1118 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #line 1120 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vscanf_l(char const *const _Format, _locale_t const _Locale, va_list _ArgList) { return _vfscanf_l((__acrt_iob_func(0)), _Format, _Locale, _ArgList);} #line 1134 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl vscanf(char const *const _Format, va_list _ArgList) { return _vfscanf_l((__acrt_iob_func(0)), _Format,((void *) 0), _ArgList);} #line 1147 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vscanf_s_l(char const *const _Format, _locale_t const _Locale, va_list _ArgList) { return _vfscanf_s_l((__acrt_iob_func(0)), _Format, _Locale, _ArgList);} #line 1161 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl vscanf_s(char const *const _Format, va_list _ArgList) { return _vfscanf_s_l((__acrt_iob_func(0)), _Format,((void *) 0), _ArgList);} #line 1176 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #line 1178 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "_fscanf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _fscanf_l(FILE *const _Stream, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfscanf_l(_Stream, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1197 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "fscanf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl fscanf(FILE *const _Stream, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfscanf_l(_Stream, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1215 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _fscanf_s_l(FILE *const _Stream, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfscanf_s_l(_Stream, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1234 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl fscanf_s(FILE *const _Stream, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfscanf_s_l(_Stream, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1254 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #line 1256 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "_scanf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _scanf_l(char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfscanf_l((__acrt_iob_func(0)), _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1274 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "scanf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl scanf(char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfscanf_l((__acrt_iob_func(0)), _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1291 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _scanf_s_l(char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfscanf_s_l((__acrt_iob_func(0)), _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1309 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl scanf_s(char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfscanf_s_l((__acrt_iob_func(0)), _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1328 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #line 1330 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" int __cdecl __stdio_common_vsprintf(unsigned __int64 _Options, char *_Buffer, size_t _BufferCount, char const *_Format, _locale_t _Locale, va_list _ArgList);int __cdecl __stdio_common_vsprintf_s(unsigned __int64 _Options, char *_Buffer, size_t _BufferCount, char const *_Format, _locale_t _Locale, va_list _ArgList);int __cdecl __stdio_common_vsnprintf_s(unsigned __int64 _Options, char *_Buffer, size_t _BufferCount, size_t _MaxCount, char const *_Format, _locale_t _Locale, va_list _ArgList);int __cdecl __stdio_common_vsprintf_p(unsigned __int64 _Options, char *_Buffer, size_t _BufferCount, char const *_Format, _locale_t _Locale, va_list _ArgList);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_vsnprintf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _vsnprintf_l(char *const _Buffer, size_t const _BufferCount, char const *const _Format, _locale_t const _Locale, va_list _ArgList) { int const _Result=__stdio_common_vsprintf((*__local_stdio_printf_options())|(1ULL<< 0), _Buffer, _BufferCount, _Format, _Locale, _ArgList);return _Result< 0 ? -1 :_Result;} #line 1399 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vsnprintf(char *const _Buffer, size_t const _BufferCount, char const *const _Format, va_list _ArgList) { return _vsnprintf_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);} #line 1415 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl vsnprintf(char *const _Buffer, size_t const _BufferCount, char const *const _Format, va_list _ArgList) { int const _Result=__stdio_common_vsprintf((*__local_stdio_printf_options())|(1ULL<< 1), _Buffer, _BufferCount, _Format,((void *) 0), _ArgList);return _Result< 0 ? -1 :_Result;} #line 1446 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "_vsprintf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _vsprintf_l(char *const _Buffer, char const *const _Format, _locale_t const _Locale, va_list _ArgList) { return _vsnprintf_l(_Buffer,(size_t) -1, _Format, _Locale, _ArgList);} #line 1462 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "vsprintf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl vsprintf(char *const _Buffer, char const *const _Format, va_list _ArgList) { return _vsnprintf_l(_Buffer,(size_t) -1, _Format,((void *) 0), _ArgList);} #line 1477 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vsprintf_s_l(char *const _Buffer, size_t const _BufferCount, char const *const _Format, _locale_t const _Locale, va_list _ArgList) { int const _Result=__stdio_common_vsprintf_s((*__local_stdio_printf_options()), _Buffer, _BufferCount, _Format, _Locale, _ArgList);return _Result< 0 ? -1 :_Result;} #line 1498 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl vsprintf_s(char *const _Buffer, size_t const _BufferCount, char const *const _Format, va_list _ArgList) { return _vsprintf_s_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);} #line 1516 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #line 1526 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vsprintf_p_l(char *const _Buffer, size_t const _BufferCount, char const *const _Format, _locale_t const _Locale, va_list _ArgList) { int const _Result=__stdio_common_vsprintf_p((*__local_stdio_printf_options()), _Buffer, _BufferCount, _Format, _Locale, _ArgList);return _Result< 0 ? -1 :_Result;} #line 1547 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vsprintf_p(char *const _Buffer, size_t const _BufferCount, char const *const _Format, va_list _ArgList) { return _vsprintf_p_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);} #line 1563 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vsnprintf_s_l(char *const _Buffer, size_t const _BufferCount, size_t const _MaxCount, char const *const _Format, _locale_t const _Locale, va_list _ArgList) { int const _Result=__stdio_common_vsnprintf_s((*__local_stdio_printf_options()), _Buffer, _BufferCount, _MaxCount, _Format, _Locale, _ArgList);return _Result< 0 ? -1 :_Result;} #line 1585 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vsnprintf_s(char *const _Buffer, size_t const _BufferCount, size_t const _MaxCount, char const *const _Format, va_list _ArgList) { return _vsnprintf_s_l(_Buffer, _BufferCount, _MaxCount, _Format,((void *) 0), _ArgList);} #line 1602 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl vsnprintf_s(char *const _Buffer, size_t const _BufferCount, size_t const _MaxCount, char const *const _Format, va_list _ArgList) { return _vsnprintf_s_l(_Buffer, _BufferCount, _MaxCount, _Format,((void *) 0), _ArgList);} #line 1630 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #line 1641 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vscprintf_l(char const *const _Format, _locale_t const _Locale, va_list _ArgList) { int const _Result=__stdio_common_vsprintf((*__local_stdio_printf_options())|(1ULL<< 1),((void *) 0), 0, _Format, _Locale, _ArgList);return _Result< 0 ? -1 :_Result;} #line 1659 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vscprintf(char const *const _Format, va_list _ArgList) { return _vscprintf_l(_Format,((void *) 0), _ArgList);} #line 1672 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vscprintf_p_l(char const *const _Format, _locale_t const _Locale, va_list _ArgList) { int const _Result=__stdio_common_vsprintf_p((*__local_stdio_printf_options())|(1ULL<< 1),((void *) 0), 0, _Format, _Locale, _ArgList);return _Result< 0 ? -1 :_Result;} #line 1690 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vscprintf_p(char const *const _Format, va_list _ArgList) { return _vscprintf_p_l(_Format,((void *) 0), _ArgList);} #line 1703 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vsnprintf_c_l(char *const _Buffer, size_t const _BufferCount, char const *const _Format, _locale_t const _Locale, va_list _ArgList) { int const _Result=__stdio_common_vsprintf((*__local_stdio_printf_options()), _Buffer, _BufferCount, _Format, _Locale, _ArgList);return _Result< 0 ? -1 :_Result;} #line 1723 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vsnprintf_c(char *const _Buffer, size_t const _BufferCount, char const *const _Format, va_list _ArgList) { return _vsnprintf_c_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);} #line 1739 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "_sprintf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _sprintf_l(char *const _Buffer, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsprintf_l(_Buffer, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1761 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl sprintf(char *const _Buffer, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsprintf_l(_Buffer, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1782 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "sprintf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) int __cdecl sprintf(char *_Buffer, char const *_Format,...);__declspec(deprecated("This function or variable may be unsafe. Consider using " "vsprintf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) int __cdecl vsprintf(char *_Buffer, char const *_Format, va_list _Args);__inline int __cdecl _sprintf_s_l(char *const _Buffer, size_t const _BufferCount, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsprintf_s_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1810 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl sprintf_s(char *const _Buffer, size_t const _BufferCount, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsprintf_s_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1832 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #line 1834 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _sprintf_p_l(char *const _Buffer, size_t const _BufferCount, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsprintf_p_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1862 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _sprintf_p(char *const _Buffer, size_t const _BufferCount, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsprintf_p_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1882 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "_snprintf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _snprintf_l(char *const _Buffer, size_t const _BufferCount, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsnprintf_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1905 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl snprintf(char *const _Buffer, size_t const _BufferCount, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=vsnprintf(_Buffer, _BufferCount, _Format, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1936 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _snprintf(char *const _Buffer, size_t const _BufferCount, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsnprintf(_Buffer, _BufferCount, _Format, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1956 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "_snprintf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) int __cdecl _snprintf(char *_Buffer, size_t _BufferCount, char const *_Format,...);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_vsnprintf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) int __cdecl _vsnprintf(char *_Buffer, size_t _BufferCount, char const *_Format, va_list _Args);__inline int __cdecl _snprintf_c_l(char *const _Buffer, size_t const _BufferCount, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsnprintf_c_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1986 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _snprintf_c(char *const _Buffer, size_t const _BufferCount, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsnprintf_c_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2006 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _snprintf_s_l(char *const _Buffer, size_t const _BufferCount, size_t const _MaxCount, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsnprintf_s_l(_Buffer, _BufferCount, _MaxCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2028 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _snprintf_s(char *const _Buffer, size_t const _BufferCount, size_t const _MaxCount, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsnprintf_s_l(_Buffer, _BufferCount, _MaxCount, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2049 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _scprintf_l(char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vscprintf_l(_Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2075 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _scprintf(char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vscprintf_l(_Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2092 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _scprintf_p_l(char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vscprintf_p_l(_Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2110 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _scprintf_p(char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vscprintf_p(_Format, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2127 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" int __cdecl __stdio_common_vsscanf(unsigned __int64 _Options, char const *_Buffer, size_t _BufferCount, char const *_Format, _locale_t _Locale, va_list _ArgList);__inline int __cdecl _vsscanf_l(char const *const _Buffer, char const *const _Format, _locale_t const _Locale, va_list _ArgList) { return __stdio_common_vsscanf((*__local_stdio_scanf_options()), _Buffer,(size_t) -1, _Format, _Locale, _ArgList);} #line 2158 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl vsscanf(char const *const _Buffer, char const *const _Format, va_list _ArgList) { return _vsscanf_l(_Buffer, _Format,((void *) 0), _ArgList);} #line 2172 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vsscanf_s_l(char const *const _Buffer, char const *const _Format, _locale_t const _Locale, va_list _ArgList) { return __stdio_common_vsscanf((*__local_stdio_scanf_options())|(1ULL<< 0), _Buffer,(size_t) -1, _Format, _Locale, _ArgList);} #line 2189 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #pragma warning(push) #pragma warning(disable:6530) __inline int __cdecl vsscanf_s(char const *const _Buffer, char const *const _Format, va_list _ArgList) { return _vsscanf_s_l(_Buffer, _Format,((void *) 0), _ArgList);} #line 2208 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #pragma warning(pop) #line 2219 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "_sscanf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _sscanf_l(char const *const _Buffer, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsscanf_l(_Buffer, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2238 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "sscanf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl sscanf(char const *const _Buffer, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsscanf_l(_Buffer, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2256 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _sscanf_s_l(char const *const _Buffer, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsscanf_s_l(_Buffer, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2275 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl sscanf_s(char const *const _Buffer, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=vsscanf_s(_Buffer, _Format, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2297 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #line 2299 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #pragma warning(push) #pragma warning(disable:6530) __declspec(deprecated("This function or variable may be unsafe. Consider using " "_snscanf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _snscanf_l(char const *const _Buffer, size_t const _BufferCount, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=__stdio_common_vsscanf((*__local_stdio_scanf_options()), _Buffer, _BufferCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2326 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "_snscanf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _snscanf(char const *const _Buffer, size_t const _BufferCount, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=__stdio_common_vsscanf((*__local_stdio_scanf_options()), _Buffer, _BufferCount, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2349 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _snscanf_s_l(char const *const _Buffer, size_t const _BufferCount, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=__stdio_common_vsscanf((*__local_stdio_scanf_options())|(1ULL<< 0), _Buffer, _BufferCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2374 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _snscanf_s(char const *const _Buffer, size_t const _BufferCount, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=__stdio_common_vsscanf((*__local_stdio_scanf_options())|(1ULL<< 0), _Buffer, _BufferCount, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2397 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #pragma warning(pop) __declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_tempnam" ". See online help for details.")) char *__cdecl tempnam(char const *_Directory, char const *_FilePrefix);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_fcloseall" ". See online help for details.")) int __cdecl fcloseall(void);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_fdopen" ". See online help for details.")) FILE *__cdecl fdopen(int _FileHandle, char const *_Format);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_fgetchar" ". See online help for details.")) int __cdecl fgetchar(void);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_fileno" ". See online help for details.")) int __cdecl fileno(FILE *_Stream);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_flushall" ". See online help for details.")) int __cdecl flushall(void);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_fputchar" ". See online help for details.")) int __cdecl fputchar(int _Ch);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_getw" ". See online help for details.")) int __cdecl getw(FILE *_Stream);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_putw" ". See online help for details.")) int __cdecl putw(int _Ch, FILE *_Stream);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_rmtmp" ". See online help for details.")) int __cdecl rmtmp(void);#line 2441 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h"__pragma(pack(pop))#pragma warning(pop) #pragma once#pragma once#pragma once#pragma once#pragma warning(push)#pragma warning(disable:4324 4514 4574 4710 4793 4820 4995 4996 28719 28726 28727) __pragma(pack(push, 8)) int *__cdecl _errno(void);errno_t __cdecl _set_errno(int _Value);errno_t __cdecl _get_errno(int *_Value);unsigned long *__cdecl __doserrno(void);errno_t __cdecl _set_doserrno(unsigned long _Value);errno_t __cdecl _get_doserrno(unsigned long *_Value);__pragma(pack(pop))#pragma warning(pop) #pragma once#pragma warning(push)#pragma warning(disable:4514 4820) __pragma(pack(push, 8)) void *__cdecl memchr(void const *_Buf, int _Val, size_t _MaxCount);int __cdecl memcmp(void const *_Buf1, void const *_Buf2, size_t _Size);void *__cdecl memcpy(void *_Dst, void const *_Src, size_t _Size);void *__cdecl memmove(void *_Dst, void const *_Src, size_t _Size);void *__cdecl memset(void *_Dst, int _Val, size_t _Size);char *__cdecl strchr(char const *_Str, int _Val);char *__cdecl strrchr(char const *_Str, int _Ch);char *__cdecl strstr(char const *_Str, char const *_SubStr);wchar_t *__cdecl wcschr(wchar_t const *_Str, wchar_t _Ch);wchar_t *__cdecl wcsrchr(wchar_t const *_Str, wchar_t _Ch);wchar_t *__cdecl wcsstr(wchar_t const *_Str, wchar_t const *_SubStr);__pragma(pack(pop))#pragma warning(pop) #pragma warning(push)#pragma warning(disable:4324 4514 4574 4710 4793 4820 4995 4996 28719 28726 28727) __pragma(pack(push, 8)) static __inline errno_t __cdecl memcpy_s(void *const _Destination, rsize_t const _DestinationSize, void const *const _Source, rsize_t const _SourceSize) { if(_SourceSize==0) { return 0;} { int _Expr_val=!!(_Destination !=((void *) 0));if(!(_Expr_val)) {(*_errno())=22;_invalid_parameter_noinfo();return 22;} } ;if(_Source==((void *) 0)||_DestinationSize< _SourceSize) { memset(_Destination, 0, _DestinationSize);{ int _Expr_val=!!(_Source !=((void *) 0));if(!(_Expr_val)) {(*_errno())=22;_invalid_parameter_noinfo();return 22;} } ;{ int _Expr_val=!!(_DestinationSize >=_SourceSize);if(!(_Expr_val)) {(*_errno())=34;_invalid_parameter_noinfo();return 34;} } ;return 22 ;} memcpy(_Destination, _Source, _SourceSize);return 0;} static __inline errno_t __cdecl memmove_s(void *const _Destination, rsize_t const _DestinationSize, void const *const _Source, rsize_t const _SourceSize) { if(_SourceSize==0) { return 0;} { int _Expr_val=!!(_Destination !=((void *) 0));if(!(_Expr_val)) {(*_errno())=22;_invalid_parameter_noinfo();return 22;} } ;{ int _Expr_val=!!(_Source !=((void *) 0));if(!(_Expr_val)) {(*_errno())=22;_invalid_parameter_noinfo();return 22;} } ;{ int _Expr_val=!!(_DestinationSize >=_SourceSize);if(!(_Expr_val)) {(*_errno())=34;_invalid_parameter_noinfo();return 34;} } ;memmove(_Destination, _Source, _SourceSize);return 0;}#pragma warning(pop) __pragma(pack(pop))#pragma warning(push)#pragma warning(disable:4324 4514 4574 4710 4793 4820 4995 4996 28719 28726 28727) __pragma(pack(push, 8)) int __cdecl _memicmp(void const *_Buf1, void const *_Buf2, size_t _Size);int __cdecl _memicmp_l(void const *_Buf1, void const *_Buf2, size_t _Size, _locale_t _Locale);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_memccpy" ". See online help for details.")) void *__cdecl memccpy(void *_Dst, void const *_Src, int _Val, size_t _Size);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_memicmp" ". See online help for details.")) int __cdecl memicmp(void const *_Buf1, void const *_Buf2, size_t _Size);__pragma(pack(pop))#pragma warning(pop) #pragma once#pragma warning(push)#pragma warning(disable:4324 4514 4574 4710 4793 4820 4995 4996 28719 28726 28727) __pragma(pack(push, 8)) errno_t __cdecl wcscat_s(wchar_t *_Destination, rsize_t _SizeInWords, wchar_t const *_Source);errno_t __cdecl wcscpy_s(wchar_t *_Destination, rsize_t _SizeInWords, wchar_t const *_Source);errno_t __cdecl wcsncat_s(wchar_t *_Destination, rsize_t _SizeInWords, wchar_t const *_Source, rsize_t _MaxCount);errno_t __cdecl wcsncpy_s(wchar_t *_Destination, rsize_t _SizeInWords, wchar_t const *_Source, rsize_t _MaxCount);wchar_t *__cdecl wcstok_s(wchar_t *_String, wchar_t const *_Delimiter, wchar_t **_Context);__declspec(allocator) wchar_t *__cdecl _wcsdup(wchar_t const *_String);__declspec(deprecated("This function or variable may be unsafe. Consider using " "wcscat_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) wchar_t *__cdecl wcscat(wchar_t *_Destination, wchar_t const *_Source);int __cdecl wcscmp(wchar_t const *_String1, wchar_t const *_String2);__declspec(deprecated("This function or variable may be unsafe. Consider using " "wcscpy_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) wchar_t *__cdecl wcscpy(wchar_t *_Destination, wchar_t const *_Source);size_t __cdecl wcscspn(wchar_t const *_String, wchar_t const *_Control);size_t __cdecl wcslen(wchar_t const *_String);size_t __cdecl wcsnlen(wchar_t const *_Source, size_t _MaxCount);static __inline size_t __cdecl wcsnlen_s(wchar_t const *_Source, size_t _MaxCount) { return(_Source==0) ? 0 :wcsnlen(_Source, _MaxCount);}__declspec(deprecated("This function or variable may be unsafe. Consider using " "wcsncat_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) wchar_t *__cdecl wcsncat(wchar_t *_Destination, wchar_t const *_Source, size_t _Count);int __cdecl wcsncmp(wchar_t const *_String1, wchar_t const *_String2, size_t _MaxCount);__declspec(deprecated("This function or variable may be unsafe. Consider using " "wcsncpy_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) wchar_t *__cdecl wcsncpy(wchar_t *_Destination, wchar_t const *_Source, size_t _Count);wchar_t *__cdecl wcspbrk(wchar_t const *_String, wchar_t const *_Control);size_t __cdecl wcsspn(wchar_t const *_String, wchar_t const *_Control);__declspec(deprecated("This function or variable may be unsafe. Consider using " "wcstok_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) wchar_t *__cdecl wcstok(wchar_t *_String, wchar_t const *_Delimiter, wchar_t **_Context);#line 237 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstring.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "wcstok_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) static __inline wchar_t *__cdecl _wcstok(wchar_t *const _String, wchar_t const *const _Delimiter) { return wcstok(_String, _Delimiter, 0);} __declspec(deprecated("This function or variable may be unsafe. Consider using " "_wcserror_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) wchar_t *__cdecl _wcserror(int _ErrorNumber);errno_t __cdecl _wcserror_s(wchar_t *_Buffer, size_t _SizeInWords, int _ErrorNumber);__declspec(deprecated("This function or variable may be unsafe. Consider using " "__wcserror_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) wchar_t *__cdecl __wcserror(wchar_t const *_String);errno_t __cdecl __wcserror_s(wchar_t *_Buffer, size_t _SizeInWords, wchar_t const *_ErrorMessage);int __cdecl _wcsicmp(wchar_t const *_String1, wchar_t const *_String2);int __cdecl _wcsicmp_l(wchar_t const *_String1, wchar_t const *_String2, _locale_t _Locale);int __cdecl _wcsnicmp(wchar_t const *_String1, wchar_t const *_String2, size_t _MaxCount);int __cdecl _wcsnicmp_l(wchar_t const *_String1, wchar_t const *_String2, size_t _MaxCount, _locale_t _Locale);errno_t __cdecl _wcsnset_s(wchar_t *_Destination, size_t _SizeInWords, wchar_t _Value, size_t _MaxCount);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_wcsnset_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) wchar_t *__cdecl _wcsnset(wchar_t *_String, wchar_t _Value, size_t _MaxCount);wchar_t *__cdecl _wcsrev(wchar_t *_String);errno_t __cdecl _wcsset_s(wchar_t *_Destination, size_t _SizeInWords, wchar_t _Value);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_wcsset_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) wchar_t *__cdecl _wcsset(wchar_t *_String, wchar_t _Value);errno_t __cdecl _wcslwr_s(wchar_t *_String, size_t _SizeInWords);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_wcslwr_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) wchar_t *__cdecl _wcslwr(wchar_t *_String);errno_t __cdecl _wcslwr_s_l(wchar_t *_String, size_t _SizeInWords, _locale_t _Locale);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_wcslwr_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) wchar_t *__cdecl _wcslwr_l(wchar_t *_String, _locale_t _Locale);errno_t __cdecl _wcsupr_s(wchar_t *_String, size_t _Size);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_wcsupr_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) wchar_t *__cdecl _wcsupr(wchar_t *_String);errno_t __cdecl _wcsupr_s_l(wchar_t *_String, size_t _Size, _locale_t _Locale);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_wcsupr_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) wchar_t *__cdecl _wcsupr_l(wchar_t *_String, _locale_t _Locale);size_t __cdecl wcsxfrm(wchar_t *_Destination, wchar_t const *_Source, size_t _MaxCount);size_t __cdecl _wcsxfrm_l(wchar_t *_Destination, wchar_t const *_Source, size_t _MaxCount, _locale_t _Locale);int __cdecl wcscoll(wchar_t const *_String1, wchar_t const *_String2);int __cdecl _wcscoll_l(wchar_t const *_String1, wchar_t const *_String2, _locale_t _Locale);int __cdecl _wcsicoll(wchar_t const *_String1, wchar_t const *_String2);int __cdecl _wcsicoll_l(wchar_t const *_String1, wchar_t const *_String2, _locale_t _Locale);int __cdecl _wcsncoll(wchar_t const *_String1, wchar_t const *_String2, size_t _MaxCount);int __cdecl _wcsncoll_l(wchar_t const *_String1, wchar_t const *_String2, size_t _MaxCount, _locale_t _Locale);int __cdecl _wcsnicoll(wchar_t const *_String1, wchar_t const *_String2, size_t _MaxCount);int __cdecl _wcsnicoll_l(wchar_t const *_String1, wchar_t const *_String2, size_t _MaxCount, _locale_t _Locale);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_wcsdup" ". See online help for details.")) wchar_t *__cdecl wcsdup(wchar_t const *_String);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_wcsicmp" ". See online help for details.")) int __cdecl wcsicmp(wchar_t const *_String1, wchar_t const *_String2);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_wcsnicmp" ". See online help for details.")) int __cdecl wcsnicmp(wchar_t const *_String1, wchar_t const *_String2, size_t _MaxCount);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_wcsnset" ". See online help for details.")) wchar_t *__cdecl wcsnset(wchar_t *_String, wchar_t _Value, size_t _MaxCount);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_wcsrev" ". See online help for details.")) wchar_t *__cdecl wcsrev(wchar_t *_String);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_wcsset" ". See online help for details.")) wchar_t *__cdecl wcsset(wchar_t *_String, wchar_t _Value);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_wcslwr" ". See online help for details.")) wchar_t *__cdecl wcslwr(wchar_t *_String);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_wcsupr" ". See online help for details.")) wchar_t *__cdecl wcsupr(wchar_t *_String);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_wcsicoll" ". See online help for details.")) int __cdecl wcsicoll(wchar_t const *_String1, wchar_t const *_String2);__pragma(pack(pop))#pragma warning(pop) #pragma warning(push)#pragma warning(disable:4324 4514 4574 4710 4793 4820 4995 4996 28719 28726 28727) __pragma(pack(push, 8)) errno_t __cdecl strcpy_s(char *_Destination, rsize_t _SizeInBytes, char const *_Source);errno_t __cdecl strcat_s(char *_Destination, rsize_t _SizeInBytes, char const *_Source);errno_t __cdecl strerror_s(char *_Buffer, size_t _SizeInBytes, int _ErrorNumber);errno_t __cdecl strncat_s(char *_Destination, rsize_t _SizeInBytes, char const *_Source, rsize_t _MaxCount);errno_t __cdecl strncpy_s(char *_Destination, rsize_t _SizeInBytes, char const *_Source, rsize_t _MaxCount);char *__cdecl strtok_s(char *_String, char const *_Delimiter, char **_Context);void *__cdecl _memccpy(void *_Dst, void const *_Src, int _Val, size_t _MaxCount);__declspec(deprecated("This function or variable may be unsafe. Consider using " "strcat_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char *__cdecl strcat(char *_Destination, char const *_Source);int __cdecl strcmp(char const *_Str1, char const *_Str2);int __cdecl _strcmpi(char const *_String1, char const *_String2);int __cdecl strcoll(char const *_String1, char const *_String2);int __cdecl _strcoll_l(char const *_String1, char const *_String2, _locale_t _Locale);__declspec(deprecated("This function or variable may be unsafe. Consider using " "strcpy_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char *__cdecl strcpy(char *_Destination, char const *_Source);size_t __cdecl strcspn(char const *_Str, char const *_Control);__declspec(allocator) char *__cdecl _strdup(char const *_Source);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_strerror_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char *__cdecl _strerror(char const *_ErrorMessage);errno_t __cdecl _strerror_s(char *_Buffer, size_t _SizeInBytes, char const *_ErrorMessage);__declspec(deprecated("This function or variable may be unsafe. Consider using " "strerror_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char *__cdecl strerror(int _ErrorMessage);int __cdecl _stricmp(char const *_String1, char const *_String2);int __cdecl _stricoll(char const *_String1, char const *_String2);int __cdecl _stricoll_l(char const *_String1, char const *_String2, _locale_t _Locale);int __cdecl _stricmp_l(char const *_String1, char const *_String2, _locale_t _Locale);size_t __cdecl strlen(char const *_Str);errno_t __cdecl _strlwr_s(char *_String, size_t _Size);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_strlwr_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char *__cdecl _strlwr(char *_String);errno_t __cdecl _strlwr_s_l(char *_String, size_t _Size, _locale_t _Locale);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_strlwr_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char *__cdecl _strlwr_l(char *_String, _locale_t _Locale);__declspec(deprecated("This function or variable may be unsafe. Consider using " "strncat_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char *__cdecl strncat(char *_Destination, char const *_Source, size_t _Count);int __cdecl strncmp(char const *_Str1, char const *_Str2, size_t _MaxCount);int __cdecl _strnicmp(char const *_String1, char const *_String2, size_t _MaxCount);int __cdecl _strnicmp_l(char const *_String1, char const *_String2, size_t _MaxCount, _locale_t _Locale);int __cdecl _strnicoll(char const *_String1, char const *_String2, size_t _MaxCount);int __cdecl _strnicoll_l(char const *_String1, char const *_String2, size_t _MaxCount, _locale_t _Locale);int __cdecl _strncoll(char const *_String1, char const *_String2, size_t _MaxCount);int __cdecl _strncoll_l(char const *_String1, char const *_String2, size_t _MaxCount, _locale_t _Locale);size_t __cdecl __strncnt(char const *_String, size_t _Count);__declspec(deprecated("This function or variable may be unsafe. Consider using " "strncpy_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char *__cdecl strncpy(char *_Destination, char const *_Source, size_t _Count);size_t __cdecl strnlen(char const *_String, size_t _MaxCount);static __inline size_t __cdecl strnlen_s(char const *_String, size_t _MaxCount) { return _String==0 ? 0 :strnlen(_String, _MaxCount);} errno_t __cdecl _strnset_s(char *_String, size_t _SizeInBytes, int _Value, size_t _MaxCount);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_strnset_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char *__cdecl _strnset(char *_Destination, int _Value, size_t _Count);char *__cdecl strpbrk(char const *_Str, char const *_Control);char *__cdecl _strrev(char *_Str);errno_t __cdecl _strset_s(char *_Destination, size_t _DestinationSize, int _Value);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_strset_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char *__cdecl _strset(char *_Destination, int _Value);size_t __cdecl strspn(char const *_Str, char const *_Control);__declspec(deprecated("This function or variable may be unsafe. Consider using " "strtok_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char *__cdecl strtok(char *_String, char const *_Delimiter);errno_t __cdecl _strupr_s(char *_String, size_t _Size);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_strupr_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char *__cdecl _strupr(char *_String);errno_t __cdecl _strupr_s_l(char *_String, size_t _Size, _locale_t _Locale);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_strupr_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char *__cdecl _strupr_l(char *_String, _locale_t _Locale);size_t __cdecl strxfrm(char *_Destination, char const *_Source, size_t _MaxCount);size_t __cdecl _strxfrm_l(char *_Destination, char const *_Source, size_t _MaxCount, _locale_t _Locale);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_strdup" ". See online help for details.")) char *__cdecl strdup(char const *_String);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_strcmpi" ". See online help for details.")) int __cdecl strcmpi(char const *_String1, char const *_String2);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_stricmp" ". See online help for details.")) int __cdecl stricmp(char const *_String1, char const *_String2);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_strlwr" ". See online help for details.")) char *__cdecl strlwr(char *_String);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_strnicmp" ". See online help for details.")) int __cdecl strnicmp(char const *_String1, char const *_String2, size_t _MaxCount);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_strnset" ". See online help for details.")) char *__cdecl strnset(char *_String, int _Value, size_t _MaxCount);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_strrev" ". See online help for details.")) char *__cdecl strrev(char *_String);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_strset" ". See online help for details.")) char *__cdecl strset(char *_String, int _Value);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_strupr" ". See online help for details.")) char *__cdecl strupr(char *_String);__pragma(pack(pop))#pragma warning(pop) #pragma once#pragma warning(push)#pragma warning(disable:4514 4820) __pragma(pack(push, 8)) __pragma(pack(pop))#pragma warning(pop) #pragma once#pragma warning(push)#pragma warning(disable:4324 4514 4574 4710 4793 4820 4995 4996 28719 28726 28727) typedef unsigned short _ino_t;typedef _ino_t ino_t;#line 24 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\sys/types.h" typedef unsigned int _dev_t;typedef _dev_t dev_t;#line 36 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\sys/types.h" typedef long _off_t;typedef _off_t off_t;#line 48 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\sys/types.h"#pragma warning(pop) typedef char *sds;#pragma pack(push, 1) struct sdshdr5 { unsigned char flags;char buf[];};struct sdshdr8 { uint8_t len;uint8_t alloc;unsigned char flags;char buf[];};struct sdshdr16 { uint16_t len;uint16_t alloc;unsigned char flags;char buf[];};struct sdshdr32 { uint32_t len;uint32_t alloc;unsigned char flags;char buf[];};struct sdshdr64 { uint64_t len;uint64_t alloc;unsigned char flags;char buf[];};#pragma pack(pop) static inline size_t sdslen(const sds s) { unsigned char flags=s[-1];switch(flags &7) { case 0 :return((flags) >> 3) ;case 1 :return((struct sdshdr8 *)((s) -(sizeof(struct sdshdr8)))) ->len;case 2 :return((struct sdshdr16 *)((s) -(sizeof(struct sdshdr16)))) ->len;case 3 :return((struct sdshdr32 *)((s) -(sizeof(struct sdshdr32)))) ->len;case 4 :return((struct sdshdr64 *)((s) -(sizeof(struct sdshdr64)))) ->len;} return 0;}static inline size_t sdsavail(const sds s) { unsigned char flags=s[-1];switch(flags &7) { case 0 :{ return 0;} case 1 :{ struct sdshdr8 *sh=(void *)((s) -(sizeof(struct sdshdr8)));;return sh->alloc - sh->len;} case 2 :{ struct sdshdr16 *sh=(void *)((s) -(sizeof(struct sdshdr16)));;return sh->alloc - sh->len;} case 3 :{ struct sdshdr32 *sh=(void *)((s) -(sizeof(struct sdshdr32)));;return sh->alloc - sh->len;} case 4 :{ struct sdshdr64 *sh=(void *)((s) -(sizeof(struct sdshdr64)));;return sh->alloc - sh->len;} } return 0;}static inline void sdssetlen(sds s, size_t newlen) { unsigned char flags=s[-1];switch(flags &7) { case 0 :{ unsigned char *fp=((unsigned char *) s) - 1;*fp=0|(newlen<< 3);} break;case 1 :((struct sdshdr8 *)((s) -(sizeof(struct sdshdr8)))) ->len=(uint8_t) newlen;break;case 2 :((struct sdshdr16 *)((s) -(sizeof(struct sdshdr16)))) ->len=(uint16_t) newlen;break;case 3 :((struct sdshdr32 *)((s) -(sizeof(struct sdshdr32)))) -> len
Definition: CPAL.d:15583
double __cdecl tan(double _X)
static const char * find_suffix(const char *name)
Definition: afm2pl.c:390
#define USAGE
Definition: afm2pl.c:2006
static const char * xbasename(const char *name)
Definition: afm2pl.c:410
#define ISALNUM(c)
Definition: afm2pl.c:427
q
Definition: afm2pl.c:2287
@ kpse_enc_format
Definition: afm2pl.c:372
@ kpse_afm_format
Definition: afm2pl.c:372
static long scale(long what)
Definition: afm2tfm.c:1027
static int transform(register int x, register int y)
Definition: afm2tfm.c:262
static void checkligkern(char *s)
Definition: afm2tfm.c:1881
static void rmkern(char *s1, char *s2, struct adobeinfo *ai)
Definition: afm2tfm.c:1839
FILE * afmin
Definition: afm2tfm.c:216
long * width
Definition: afm2tfm.c:1033
long * height
Definition: afm2tfm.c:1033
static struct kern * newkern(void)
Definition: afm2tfm.c:427
long * italic
Definition: afm2tfm.c:1034
static void handlechar(void)
Definition: afm2tfm.c:472
#define EncodingScheme
Definition: afm2tfm.c:310
const char * interesting[]
Definition: afm2tfm.c:301
double newslant
Definition: afm2tfm.c:242
static char * newstring(char *s)
Definition: afm2tfm.c:343
char makevpl
Definition: afm2tfm.c:232
long * tfmdata
Definition: afm2tfm.c:1035
static struct adobeinfo * findadobe(const char *p)
Definition: afm2tfm.c:521
#define FontName
Definition: afm2tfm.c:303
float italicangle
Definition: afm2tfm.c:230
#define FIXFACTOR
Definition: afm2tfm.c:1025
static void usage(FILE *f)
Definition: afm2tfm.c:1608
char titlebuf[500]
Definition: afm2tfm.c:243
long cksum
Definition: afm2tfm.c:238
static void writetfm(void)
Definition: afm2tfm.c:1169
char * slantparam
Definition: afm2tfm.c:241
long * tparam
Definition: afm2tfm.c:1033
static void readadobe(void)
Definition: afm2tfm.c:616
int xheight
Definition: afm2tfm.c:235
static struct adobeinfo * newchar(void)
Definition: afm2tfm.c:405
int nl
Definition: afm2tfm.c:885
FILE * vplout
Definition: afm2tfm.c:216
float slant
Definition: afm2tfm.c:239
char vcharbuf[100]
Definition: afm2tfm.c:1311
struct encoding * inencoding
Definition: afm2tfm.c:166
int lf
Definition: afm2tfm.c:885
#define voutln2(f, s)
Definition: afm2tfm.c:1292
const char * vplligops[]
Definition: afm2tfm.c:190
struct encoding * outencoding
Definition: afm2tfm.c:165
static void handleconstruct(void)
Definition: afm2tfm.c:561
int ne
Definition: afm2tfm.c:885
int main(int argc, char **argv)
Definition: afm2tfm.c:2125
static void handlekern(void)
Definition: afm2tfm.c:542
static long checksum(void)
Definition: afm2tfm.c:1000
static void write16(register short what)
Definition: afm2tfm.c:888
static char * vname(int c)
Definition: afm2tfm.c:1328
static struct pcc * newpcc(void)
Definition: afm2tfm.c:438
#define ItalicAngle
Definition: afm2tfm.c:304
static void error(const char *s)
Definition: afm2tfm.c:246
FILE * fopen()
static void writesarr(long *what, int len)
Definition: afm2tfm.c:1152
static struct kern * rmkernmatch(struct kern *k, char *s)
Definition: afm2tfm.c:1822
char buffer[1024+10]
Definition: afm2tfm.c:221
int ec
Definition: afm2tfm.c:237
char * param
Definition: afm2tfm.c:223
static int texheight(struct adobeinfo *ai)
Definition: afm2tfm.c:1240
#define voutln(str)
Definition: afm2tfm.c:1291
int nw
Definition: afm2tfm.c:885
static void expect(const char *s)
Definition: afm2tfm.c:463
#define XHeight
Definition: afm2tfm.c:306
#define NONE
Definition: afm2tfm.c:311
static char * paramstring(void)
Definition: afm2tfm.c:367
char pedantic
Definition: afm2tfm.c:233
static void writearr(register long *p, register int n)
Definition: afm2tfm.c:895
static int mincover(long *what, register long d)
Definition: afm2tfm.c:944
static struct lig * newlig(void)
Definition: afm2tfm.c:450
static void openfiles(int argc, char **argv)
Definition: afm2tfm.c:1624
#define CC
Definition: afm2tfm.c:309
char * outenname
Definition: afm2tfm.c:167
float efactor
Definition: afm2tfm.c:239
char * inenname
Definition: afm2tfm.c:168
int nk
Definition: afm2tfm.c:885
#define IsFixedPitch
Definition: afm2tfm.c:305
char outname[256]
Definition: afm2tfm.c:218
static char * vchar(int c)
Definition: afm2tfm.c:1313
int sawligkern
Definition: afm2tfm.c:1875
const char * encligops[]
Definition: afm2tfm.c:193
#define KPX
Definition: afm2tfm.c:308
long * depth
Definition: afm2tfm.c:1033
int np
Definition: afm2tfm.c:885
char vnamebuf[1000]
Definition: afm2tfm.c:1326
char obuffer[1024+10]
Definition: afm2tfm.c:222
static void getligkerndefaults(void)
Definition: afm2tfm.c:2021
static char * gettoken(void)
Definition: afm2tfm.c:1978
long * kern
Definition: afm2tfm.c:1033
int bc
Definition: afm2tfm.c:237
char fixedpitch
Definition: afm2tfm.c:231
long * header
Definition: afm2tfm.c:1033
struct adobeinfo * uppercase[256]
#define vout(s)
Definition: afm2tfm.c:1277
static float paramfloat(void)
Definition: afm2tfm.c:394
static void conspsfonts(void)
Definition: afm2tfm.c:2100
static void makebcpl(register long *p, register const char *s, register int n)
Definition: afm2tfm.c:906
struct adobeinfo * adobeptrs[256]
long nextd
Definition: afm2tfm.c:942
static void assignchars(void)
Definition: afm2tfm.c:739
static void remap(long *what, int oldn, int newn)
Definition: afm2tfm.c:964
static struct adobeinfo * revlist(struct adobeinfo *p)
Definition: afm2tfm.c:725
FILE * tfmout
Definition: afm2tfm.c:216
#define INBUFSIZE
Definition: afm2tfm.c:220
#define CHECKARG3
Definition: afm2tfm.c:1621
int boundarychar
Definition: afm2tfm.c:169
static int texlive_getline(void)
Definition: afm2tfm.c:270
int lh
Definition: afm2tfm.c:885
#define voutln3(f, a, b)
Definition: afm2tfm.c:1293
int noaccentheightadjust
Definition: afm2tfm.c:234
int unsort[257]
Definition: afm2tfm.c:929
char tmpstr[256]
Definition: afm2tfm.c:219
struct adobeinfo * texptrs[256]
static void writevpl(void)
Definition: afm2tfm.c:1340
int nd
Definition: afm2tfm.c:885
#define C
Definition: afm2tfm.c:307
float capheight
Definition: afm2tfm.c:240
static void vlevnlout(void)
Definition: afm2tfm.c:1286
#define MAXNAME
Definition: afm2tfm.c:217
int fontspace
Definition: afm2tfm.c:236
static void vright(void)
Definition: afm2tfm.c:1303
int forceoctal
Definition: afm2tfm.c:1309
char * efactorparam
Definition: afm2tfm.c:241
int level
Definition: afm2tfm.c:1278
static void upmap(void)
Definition: afm2tfm.c:822
int ni
Definition: afm2tfm.c:885
char smbuffer[100]
Definition: afm2tfm.c:1976
#define voutln4(f, a, b, c)
Definition: afm2tfm.c:1294
static void vlevout(void)
Definition: afm2tfm.c:1280
static struct encoding * readencoding(char *)
Definition: afm2tfm.c:2036
static char * mymalloc(unsigned long len)
Definition: afm2tfm.c:325
static void buildtfm(void)
Definition: afm2tfm.c:1038
static int paramnum(void)
Definition: afm2tfm.c:383
const char * fontname
Definition: afm2tfm.c:224
const char * codingscheme
Definition: afm2tfm.c:225
struct adobeinfo * lowercase[256]
long * charinfo
Definition: afm2tfm.c:1033
const char * staticligkern[]
Definition: afm2tfm.c:110
static char * paramnewstring(void)
Definition: afm2tfm.c:351
static void vleft(void)
Definition: afm2tfm.c:1296
struct encoding staticencoding
Definition: afm2tfm.c:82
static int interest(const char *s)
Definition: afm2tfm.c:313
static void addkern(char *s1, char *s2)
Definition: afm2tfm.c:1862
long * ligkern
Definition: afm2tfm.c:1033
static void handlereencoding(void)
Definition: afm2tfm.c:688
char inname[256]
Definition: afm2tfm.c:218
const char * accents[]
Definition: afm2tfm.c:1237
int nh
Definition: afm2tfm.c:885
int ignoreligkern
Definition: afm2tfm.c:170
struct adobeinfo * adobechars
int nexttex[256]
Definition: afm2tfm.c:186
#define sc
Definition: aptex-macros.h:57
__declspec(dllimport)
Definition: calldll.c:7
#define n
Definition: t4ht.c:1290
#define ap
#define TOLOWER
Definition: dospecial.c:240
#define SET_BINARY(fd)
Definition: dvips.h:109
#define WRITEBIN
Definition: dvips.h:95
int strcmp()
Definition: coll.cpp:143
int sscanf()
int printf()
char * strcpy()
mpz_t * f
Definition: gen-fib.c:34
#define s
Definition: afcover.h:80
#define t
Definition: afcover.h:96
__gmp_expr< mpf_t, __gmp_unary_expr< __gmp_expr< mpf_t, U >, __gmp_ceil_function > > ceil(const __gmp_expr< mpf_t, U > &expr)
Definition: gmpxx.h:3340
#define c(n)
Definition: gpos-common.c:150
#define d(n)
Definition: gpos-common.c:151
#define putc
Definition: jbib.h:20
#define NULL
Definition: ftobjs.h:61
small capitals from c petite p
Definition: afcover.h:72
small capitals from c petite p scientific i
Definition: afcover.h:80
for(n=0;n< outline->n_points;n++)
Definition: ftbbox.c:494
void exit()
#define EOF
Definition: afmparse.c:59
kerning y
Definition: ttdriver.c:212
#define fclose
Definition: debug.h:100
#define FATAL1(str, e1)
Definition: lib.h:63
#define getc
Definition: line.c:39
#define kpse_bug_address
Definition: types.h:316
const char * kpathsea_version_string
Definition: version.c:23
#define fileno
Definition: win32lib.h:72
int acc
Definition: exvar.h:3
#define fputs
Definition: mendex.h:67
#define fprintf
Definition: mendex.h:64
#define floor(x)
Definition: cpascal.h:52
#define malloc
Definition: alloca.c:91
int strncmp()
#define sprintf
Definition: snprintf.c:44
#define snprintf
Definition: snprintf.c:41
float x
Definition: cordic.py:15
#define version
Definition: nup.c:10
int k
Definition: otp-parser.c:70
static void finishup(SplineFont *sf, struct alltabs *at)
Definition: tottf.c:2249
#define isupper(ch)
Definition: utype.h:80
ShellFileEnvironment e
Definition: sh6.c:388
int ury
Definition: afm2pl.c:155
int width
Definition: afm2pl.c:153
struct adobeptr * kern_equivs
Definition: afm2tfm.c:181
int texnum
Definition: afm2tfm.c:176
int urx
Definition: afm2pl.c:155
const char * adobename
Definition: afm2pl.c:154
int hptr
Definition: afm2tfm.c:183
struct pcc * pccs
Definition: afm2tfm.c:182
struct adobeinfo * next
Definition: afm2tfm.c:175
int iptr
Definition: afm2tfm.c:183
int adobenum
Definition: afm2pl.c:153
int lly
Definition: afm2pl.c:155
struct lig * ligs
Definition: afm2pl.c:157
int dptr
Definition: afm2tfm.c:183
int llx
Definition: afm2pl.c:155
int wptr
Definition: afm2tfm.c:183
struct kern * kerns
Definition: afm2pl.c:158
struct adobeinfo * ch
Definition: afm2tfm.c:208
struct adobeptr * next
Definition: afm2tfm.c:207
Definition: utils.c:300
const char * name
Definition: afm2pl.c:168
const char * vec[256]
Definition: afm2pl.c:169
Definition: afm2pl.c:145
const char * succ
Definition: afm2pl.c:147
int delta
Definition: afm2pl.c:148
struct kern * next
Definition: afm2pl.c:146
Definition: afm2pl.c:139
const char * sub
Definition: afm2pl.c:141
short boundleft
Definition: afm2tfm.c:199
const char * succ
Definition: afm2pl.c:141
struct lig * next
Definition: afm2pl.c:140
short op
Definition: afm2pl.c:142
Definition: sh.h:1226
Definition: afm2tfm.c:210
int xoffset
Definition: afm2tfm.c:213
const char * partname
Definition: afm2tfm.c:212
struct pcc * next
Definition: afm2tfm.c:211
int yoffset
Definition: afm2tfm.c:213
Definition: sh.h:1345
Definition: dvips.h:235
#define FILE
Definition: t1stdio.h:34
#define ungetc(c, f)
Definition: t1stdio.h:106
int j
Definition: t4ht.c:1589
s1
Definition: t4ht.c:1059
char * s2
Definition: t4ht.c:1062
*job_name strlen((char *) job_name) - 4)
m
Definition: tex4ht.c:3990
op
Definition: tex4ht.c:3129
struct _lig lig
Definition: ttf2tfm.h:48
@ L
Definition: ubidiimp.h:45
#define argv
Definition: xmain.c:270
#define argc
Definition: xmain.c:269