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)  

variable.c
Go to the documentation of this file.
1 /* Internals of variables for GNU Make.
2 Copyright (C) 1988-2020 Free Software Foundation, Inc.
3 This file is part of GNU Make.
4 
5 GNU Make is free software; you can redistribute it and/or modify it under the
6 terms of the GNU General Public License as published by the Free Software
7 Foundation; either version 3 of the License, or (at your option) any later
8 version.
9 
10 GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
11 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
12 A PARTICULAR PURPOSE. See the GNU General Public License for more details.
13 
14 You should have received a copy of the GNU General Public License along with
15 this program. If not, see <http://www.gnu.org/licenses/>. */
16 
17 #include "makeint.h"
18 
19 #include <assert.h>
20 
21 #include "filedef.h"
22 #include "dep.h"
23 #include "job.h"
24 #include "commands.h"
25 #include "variable.h"
26 #include "rule.h"
27 #ifdef WINDOWS32
28 #include "pathstuff.h"
29 #endif
30 #include "hash.h"
31 
32 /* Incremented every time we add or remove a global variable. */
33 static unsigned long variable_changenum;
34 
35 /* Chain of all pattern-specific variables. */
36 
37 static struct pattern_var *pattern_vars;
38 
39 /* Pointer to the last struct in the pack of a specific size, from 1 to 255.*/
40 
41 static struct pattern_var *last_pattern_vars[256];
42 
43 /* Create a new pattern-specific variable struct. The new variable is
44  inserted into the PATTERN_VARS list in the shortest patterns first
45  order to support the shortest stem matching (the variables are
46  matched in the reverse order so the ones with the longest pattern
47  will be considered first). Variables with the same pattern length
48  are inserted in the definition order. */
49 
50 struct pattern_var *
51 create_pattern_var (const char *target, const char *suffix)
52 {
53  size_t len = strlen (target);
54  struct pattern_var *p = xcalloc (sizeof (struct pattern_var));
55 
56  if (pattern_vars != 0)
57  {
58  if (len < 256 && last_pattern_vars[len] != 0)
59  {
60  p->next = last_pattern_vars[len]->next;
62  }
63  else
64  {
65  /* Find the position where we can insert this variable. */
66  struct pattern_var **v;
67 
68  for (v = &pattern_vars; ; v = &(*v)->next)
69  {
70  /* Insert at the end of the pack so that patterns with the
71  same length appear in the order they were defined .*/
72 
73  if (*v == 0 || (*v)->len > len)
74  {
75  p->next = *v;
76  *v = p;
77  break;
78  }
79  }
80  }
81  }
82  else
83  {
84  pattern_vars = p;
85  p->next = 0;
86  }
87 
88  p->target = target;
89  p->len = len;
90  p->suffix = suffix + 1;
91 
92  if (len < 256)
94 
95  return p;
96 }
97 
98 /* Look up a target in the pattern-specific variable list. */
99 
100 static struct pattern_var *
102 {
103  struct pattern_var *p;
104  size_t targlen = strlen (target);
105 
106  for (p = start ? start->next : pattern_vars; p != 0; p = p->next)
107  {
108  const char *stem;
109  size_t stemlen;
110 
111  if (p->len > targlen)
112  /* It can't possibly match. */
113  continue;
114 
115  /* From the lengths of the filename and the pattern parts,
116  find the stem: the part of the filename that matches the %. */
117  stem = target + (p->suffix - p->target - 1);
118  stemlen = targlen - p->len + 1;
119 
120  /* Compare the text in the pattern before the stem, if any. */
121  if (stem > target && !strneq (p->target, target, stem - target))
122  continue;
123 
124  /* Compare the text in the pattern after the stem, if any.
125  We could test simply using streq, but this way we compare the
126  first two characters immediately. This saves time in the very
127  common case where the first character matches because it is a
128  period. */
129  if (*p->suffix == stem[stemlen]
130  && (*p->suffix == '\0' || streq (&p->suffix[1], &stem[stemlen+1])))
131  break;
132  }
133 
134  return p;
135 }
136 ␌
137 /* Hash table of all global variable definitions. */
138 
139 static unsigned long
140 variable_hash_1 (const void *keyv)
141 {
142  struct variable const *key = (struct variable const *) keyv;
143  return_STRING_N_HASH_1 (key->name, key->length);
144 }
145 
146 static unsigned long
147 variable_hash_2 (const void *keyv)
148 {
149  struct variable const *key = (struct variable const *) keyv;
150  return_STRING_N_HASH_2 (key->name, key->length);
151 }
152 
153 static int
154 variable_hash_cmp (const void *xv, const void *yv)
155 {
156  struct variable const *x = (struct variable const *) xv;
157  struct variable const *y = (struct variable const *) yv;
158  int result = x->length - y->length;
159  if (result)
160  return result;
161  return_STRING_N_COMPARE (x->name, y->name, x->length);
162 }
163 
164 #ifndef VARIABLE_BUCKETS
165 #define VARIABLE_BUCKETS 523
166 #endif
167 #ifndef PERFILE_VARIABLE_BUCKETS
168 #define PERFILE_VARIABLE_BUCKETS 23
169 #endif
170 #ifndef SMALL_SCOPE_VARIABLE_BUCKETS
171 #define SMALL_SCOPE_VARIABLE_BUCKETS 13
172 #endif
173 
174 static struct variable_set global_variable_set;
175 static struct variable_set_list global_setlist
176  = { 0, &global_variable_set, 0 };
178 ␌
179 /* Implement variables. */
180 
181 void
183 {
186 }
187 
188 /* Define variable named NAME with value VALUE in SET. VALUE is copied.
189  LENGTH is the length of NAME, which does not need to be null-terminated.
190  ORIGIN specifies the origin of the variable (makefile, command line
191  or environment).
192  If RECURSIVE is nonzero a flag is set in the variable saying
193  that it should be recursively re-expanded. */
194 
195 struct variable *
196 define_variable_in_set (const char *name, size_t length,
197  const char *value, enum variable_origin origin,
198  int recursive, struct variable_set *set,
199  const floc *flocp)
200 {
201  struct variable *v;
202  struct variable **var_slot;
203  struct variable var_key;
204 
205  if (set == NULL)
206  set = &global_variable_set;
207 
208  var_key.name = (char *) name;
209  var_key.length = (unsigned int) length;
210  var_slot = (struct variable **) hash_find_slot (&set->table, &var_key);
211  v = *var_slot;
212 
213 #ifdef VMS
214  /* VMS does not populate envp[] with DCL symbols and logical names which
215  historically are mapped to environent variables.
216  If the variable is not yet defined, then we need to check if getenv()
217  can find it. Do not do this for origin == o_env to avoid infinte
218  recursion */
219  if (HASH_VACANT (v) && (origin != o_env))
220  {
221  struct variable * vms_variable;
222  char * vname = alloca (length + 1);
223  char * vvalue;
224 
225  strncpy (vname, name, length);
226  vvalue = getenv(vname);
227 
228  /* Values starting with '$' are probably foreign commands.
229  We want to treat them as Shell aliases and not look them up here */
230  if ((vvalue != NULL) && (vvalue[0] != '$'))
231  {
232  vms_variable = lookup_variable(name, length);
233  /* Refresh the slot */
234  var_slot = (struct variable **) hash_find_slot (&set->table,
235  &var_key);
236  v = *var_slot;
237  }
238  }
239 #endif
240 
241  if (env_overrides && origin == o_env)
242  origin = o_env_override;
243 
244  if (! HASH_VACANT (v))
245  {
246  if (env_overrides && v->origin == o_env)
247  /* V came from in the environment. Since it was defined
248  before the switches were parsed, it wasn't affected by -e. */
249  v->origin = o_env_override;
250 
251  /* A variable of this name is already defined.
252  If the old definition is from a stronger source
253  than this one, don't redefine it. */
254  if ((int) origin >= (int) v->origin)
255  {
256  free (v->value);
257  v->value = xstrdup (value);
258  if (flocp != 0)
259  v->fileinfo = *flocp;
260  else
261  v->fileinfo.filenm = 0;
262  v->origin = origin;
263  v->recursive = recursive;
264  }
265  return v;
266  }
267 
268  /* Create a new variable definition and add it to the hash table. */
269 
270  v = xcalloc (sizeof (struct variable));
271  v->name = xstrndup (name, length);
272  v->length = (unsigned int) length;
273  hash_insert_at (&set->table, v, var_slot);
274  if (set == &global_variable_set)
276 
277  v->value = xstrdup (value);
278  if (flocp != 0)
279  v->fileinfo = *flocp;
280  v->origin = origin;
281  v->recursive = recursive;
282 
283  v->export = v_default;
284  v->exportable = 1;
285  if (*name != '_' && (*name < 'A' || *name > 'Z')
286  && (*name < 'a' || *name > 'z'))
287  v->exportable = 0;
288  else
289  {
290  for (++name; *name != '\0'; ++name)
291  if (*name != '_' && (*name < 'a' || *name > 'z')
292  && (*name < 'A' || *name > 'Z') && !ISDIGIT(*name))
293  break;
294 
295  if (*name != '\0')
296  v->exportable = 0;
297  }
298 
299  return v;
300 }
301 ␌
302 
303 /* Undefine variable named NAME in SET. LENGTH is the length of NAME, which
304  does not need to be null-terminated. ORIGIN specifies the origin of the
305  variable (makefile, command line or environment). */
306 
307 static void
309 {
310  struct variable *v = (struct variable *) item;
311  free (v->name);
312  free (v->value);
313 }
314 
315 void
317 {
319  hash_free (&list->set->table, 1);
320  free (list->set);
321  free (list);
322 }
323 
324 void
325 undefine_variable_in_set (const char *name, size_t length,
326  enum variable_origin origin,
327  struct variable_set *set)
328 {
329  struct variable *v;
330  struct variable **var_slot;
331  struct variable var_key;
332 
333  if (set == NULL)
334  set = &global_variable_set;
335 
336  var_key.name = (char *) name;
337  var_key.length = (unsigned int) length;
338  var_slot = (struct variable **) hash_find_slot (&set->table, &var_key);
339 
340  if (env_overrides && origin == o_env)
341  origin = o_env_override;
342 
343  v = *var_slot;
344  if (! HASH_VACANT (v))
345  {
346  if (env_overrides && v->origin == o_env)
347  /* V came from in the environment. Since it was defined
348  before the switches were parsed, it wasn't affected by -e. */
349  v->origin = o_env_override;
350 
351  /* Undefine only if this undefinition is from an equal or stronger
352  source than the variable definition. */
353  if ((int) origin >= (int) v->origin)
354  {
355  hash_delete_at (&set->table, var_slot);
357  free (v);
358  if (set == &global_variable_set)
360  }
361  }
362 }
363 
364 /* If the variable passed in is "special", handle its special nature.
365  Currently there are two such variables, both used for introspection:
366  .VARIABLES expands to a list of all the variables defined in this instance
367  of make.
368  .TARGETS expands to a list of all the targets defined in this
369  instance of make.
370  Returns the variable reference passed in. */
371 
372 #define EXPANSION_INCREMENT(_l) ((((_l) / 500) + 1) * 500)
373 
374 static struct variable *
376 {
377  static unsigned long last_changenum = 0;
378 
379 
380  /* This one actually turns out to be very hard, due to the way the parser
381  records targets. The way it works is that target information is collected
382  internally until make knows the target is completely specified. It unitl
383  it sees that some new construct (a new target or variable) is defined that
384  it knows the previous one is done. In short, this means that if you do
385  this:
386 
387  all:
388 
389  TARGS := $(.TARGETS)
390 
391  then $(TARGS) won't contain "all", because it's not until after the
392  variable is created that the previous target is completed.
393 
394  Changing this would be a major pain. I think a less complex way to do it
395  would be to pre-define the target files as soon as the first line is
396  parsed, then come back and do the rest of the definition as now. That
397  would allow $(.TARGETS) to be correct without a major change to the way
398  the parser works.
399 
400  if (streq (var->name, ".TARGETS"))
401  var->value = build_target_list (var->value);
402  else
403  */
404 
405  if (variable_changenum != last_changenum && streq (var->name, ".VARIABLES"))
406  {
407  size_t max = EXPANSION_INCREMENT (strlen (var->value));
408  size_t len;
409  char *p;
410  struct variable **vp = (struct variable **) global_variable_set.table.ht_vec;
411  struct variable **end = &vp[global_variable_set.table.ht_size];
412 
413  /* Make sure we have at least MAX bytes in the allocated buffer. */
414  var->value = xrealloc (var->value, max);
415 
416  /* Walk through the hash of variables, constructing a list of names. */
417  p = var->value;
418  len = 0;
419  for (; vp < end; ++vp)
420  if (!HASH_VACANT (*vp))
421  {
422  struct variable *v = *vp;
423  int l = v->length;
424 
425  len += l + 1;
426  if (len > max)
427  {
428  size_t off = p - var->value;
429 
430  max += EXPANSION_INCREMENT (l + 1);
431  var->value = xrealloc (var->value, max);
432  p = &var->value[off];
433  }
434 
435  memcpy (p, v->name, l);
436  p += l;
437  *(p++) = ' ';
438  }
439  *(p-1) = '\0';
440 
441  /* Remember the current variable change number. */
442  last_changenum = variable_changenum;
443  }
444 
445  return var;
446 }
447 
448 ␌
449 /* Lookup a variable whose name is a string starting at NAME
450  and with LENGTH chars. NAME need not be null-terminated.
451  Returns address of the 'struct variable' containing all info
452  on the variable, or nil if no such variable is defined. */
453 
454 struct variable *
455 lookup_variable (const char *name, size_t length)
456 {
457  const struct variable_set_list *setlist;
458  struct variable var_key;
459  int is_parent = 0;
460 
461  var_key.name = (char *) name;
462  var_key.length = (unsigned int) length;
463 
465  setlist != 0; setlist = setlist->next)
466  {
467  const struct variable_set *set = setlist->set;
468  struct variable *v;
469 
470  v = (struct variable *) hash_find_item ((struct hash_table *) &set->table, &var_key);
471  if (v && (!is_parent || !v->private_var))
472  return v->special ? lookup_special_var (v) : v;
473 
474  is_parent |= setlist->next_is_parent;
475  }
476 
477 #ifdef VMS
478  /* VMS does not populate envp[] with DCL symbols and logical names which
479  historically are mapped to enviroment varables and returned by getenv() */
480  {
481  char *vname = alloca (length + 1);
482  char *value;
483  strncpy (vname, name, length);
484  vname[length] = 0;
485  value = getenv (vname);
486  if (value != 0)
487  {
488  char *sptr;
489  int scnt;
490 
491  sptr = value;
492  scnt = 0;
493 
494  while ((sptr = strchr (sptr, '$')))
495  {
496  scnt++;
497  sptr++;
498  }
499 
500  if (scnt > 0)
501  {
502  char *nvalue;
503  char *nptr;
504 
505  nvalue = alloca (strlen (value) + scnt + 1);
506  sptr = value;
507  nptr = nvalue;
508 
509  while (*sptr)
510  {
511  if (*sptr == '$')
512  {
513  *nptr++ = '$';
514  *nptr++ = '$';
515  }
516  else
517  {
518  *nptr++ = *sptr;
519  }
520  sptr++;
521  }
522 
523  *nptr = '\0';
524  return define_variable (vname, length, nvalue, o_env, 1);
525 
526  }
527 
528  return define_variable (vname, length, value, o_env, 1);
529  }
530  }
531 #endif /* VMS */
532 
533  return 0;
534 }
535 ␌
536 /* Lookup a variable whose name is a string starting at NAME
537  and with LENGTH chars in set SET. NAME need not be null-terminated.
538  Returns address of the 'struct variable' containing all info
539  on the variable, or nil if no such variable is defined. */
540 
541 struct variable *
542 lookup_variable_in_set (const char *name, size_t length,
543  const struct variable_set *set)
544 {
545  struct variable var_key;
546 
547  var_key.name = (char *) name;
548  var_key.length = (unsigned int) length;
549 
550  return (struct variable *) hash_find_item ((struct hash_table *) &set->table, &var_key);
551 }
552 ␌
553 /* Initialize FILE's variable set list. If FILE already has a variable set
554  list, the topmost variable set is left intact, but the the rest of the
555  chain is replaced with FILE->parent's setlist. If FILE is a double-colon
556  rule, then we will use the "root" double-colon target's variable set as the
557  parent of FILE's variable set.
558 
559  If we're READING a makefile, don't do the pattern variable search now,
560  since the pattern variable might not have been defined yet. */
561 
562 void
564 {
565  struct variable_set_list *l = file->variables;
566 
567  if (l == 0)
568  {
569  l = (struct variable_set_list *)
570  xmalloc (sizeof (struct variable_set_list));
571  l->set = xmalloc (sizeof (struct variable_set));
572  hash_init (&l->set->table, PERFILE_VARIABLE_BUCKETS,
574  file->variables = l;
575  }
576 
577  /* If this is a double-colon, then our "parent" is the "root" target for
578  this double-colon rule. Since that rule has the same name, parent,
579  etc. we can just use its variables as the "next" for ours. */
580 
581  if (file->double_colon && file->double_colon != file)
582  {
584  l->next = file->double_colon->variables;
585  l->next_is_parent = 0;
586  return;
587  }
588 
589  if (file->parent == 0)
590  l->next = &global_setlist;
591  else
592  {
594  l->next = file->parent->variables;
595  }
596  l->next_is_parent = 1;
597 
598  /* If we're not reading makefiles and we haven't looked yet, see if
599  we can find pattern variables for this target. */
600 
601  if (!reading && !file->pat_searched)
602  {
603  struct pattern_var *p;
604 
605  p = lookup_pattern_var (0, file->name);
606  if (p != 0)
607  {
609 
610  /* We found at least one. Set up a new variable set to accumulate
611  all the pattern variables that match this target. */
612 
615 
616  do
617  {
618  /* We found one, so insert it into the set. */
619 
620  struct variable *v;
621 
622  if (p->variable.flavor == f_simple)
623  {
625  p->variable.name, strlen (p->variable.name),
626  p->variable.value, p->variable.origin,
627  0, &p->variable.fileinfo);
628 
629  v->flavor = f_simple;
630  }
631  else
632  {
634  &p->variable.fileinfo, p->variable.name,
635  p->variable.value, p->variable.origin,
636  p->variable.flavor, 1);
637  }
638 
639  /* Also mark it as a per-target and copy export status. */
640  v->per_target = p->variable.per_target;
641  v->export = p->variable.export;
642  v->private_var = p->variable.private_var;
643  }
644  while ((p = lookup_pattern_var (p, file->name)) != 0);
645 
647  }
648  file->pat_searched = 1;
649  }
650 
651  /* If we have a pattern variable match, set it up. */
652 
653  if (file->pat_variables != 0)
654  {
655  file->pat_variables->next = l->next;
656  file->pat_variables->next_is_parent = l->next_is_parent;
657  l->next = file->pat_variables;
658  l->next_is_parent = 0;
659  }
660 }
661 ␌
662 /* Pop the top set off the current variable set list,
663  and free all its storage. */
664 
665 struct variable_set_list *
667 {
668  struct variable_set_list *setlist;
669  struct variable_set *set;
670 
671  set = xmalloc (sizeof (struct variable_set));
674 
675  setlist = (struct variable_set_list *)
676  xmalloc (sizeof (struct variable_set_list));
677  setlist->set = set;
679  setlist->next_is_parent = 0;
680 
681  return setlist;
682 }
683 
684 /* Create a new variable set and push it on the current setlist.
685  If we're pushing a global scope (that is, the current scope is the global
686  scope) then we need to "push" it the other way: file variable sets point
687  directly to the global_setlist so we need to replace that with the new one.
688  */
689 
690 struct variable_set_list *
692 {
695  {
696  /* It was the global, so instead of new -> &global we want to replace
697  &global with the new one and have &global -> new, with current still
698  pointing to &global */
701  global_setlist.set = set;
705  }
706  return (current_variable_set_list);
707 }
708 
709 void
711 {
712  struct variable_set_list *setlist;
713  struct variable_set *set;
714 
715  /* Can't call this if there's no scope to pop! */
717 
719  {
720  /* We're not pointing to the global setlist, so pop this one. */
722  set = setlist->set;
724  }
725  else
726  {
727  /* This set is the one in the global_setlist, but there is another global
728  set beyond that. We want to copy that set to global_setlist, then
729  delete what used to be in global_setlist. */
731  set = global_setlist.set;
732  global_setlist.set = setlist->set;
733  global_setlist.next = setlist->next;
734  global_setlist.next_is_parent = setlist->next_is_parent;
735  }
736 
737  /* Free the one we no longer need. */
738  free (setlist);
740  hash_free (&set->table, 1);
741  free (set);
742 }
743 ␌
744 /* Merge FROM_SET into TO_SET, freeing unused storage in FROM_SET. */
745 
746 static void
748  struct variable_set *from_set)
749 {
750  struct variable **from_var_slot = (struct variable **) from_set->table.ht_vec;
751  struct variable **from_var_end = from_var_slot + from_set->table.ht_size;
752 
753  int inc = to_set == &global_variable_set ? 1 : 0;
754 
755  for ( ; from_var_slot < from_var_end; from_var_slot++)
756  if (! HASH_VACANT (*from_var_slot))
757  {
758  struct variable *from_var = *from_var_slot;
759  struct variable **to_var_slot
760  = (struct variable **) hash_find_slot (&to_set->table, *from_var_slot);
761  if (HASH_VACANT (*to_var_slot))
762  {
763  hash_insert_at (&to_set->table, from_var, to_var_slot);
764  variable_changenum += inc;
765  }
766  else
767  {
768  /* GKM FIXME: delete in from_set->table */
769  free (from_var->value);
770  free (from_var);
771  }
772  }
773 }
774 
775 /* Merge SETLIST1 into SETLIST0, freeing unused storage in SETLIST1. */
776 
777 void
779  struct variable_set_list *setlist1)
780 {
781  struct variable_set_list *to = *setlist0;
782  struct variable_set_list *last0 = 0;
783 
784  /* If there's nothing to merge, stop now. */
785  if (!setlist1 || setlist1 == &global_setlist)
786  return;
787 
788  if (to)
789  {
790  /* These loops rely on the fact that all setlists terminate with the
791  global setlist (before NULL). If not, arguably we SHOULD die. */
792 
793  /* Make sure that setlist1 is not already a subset of setlist0. */
794  while (to != &global_setlist)
795  {
796  if (to == setlist1)
797  return;
798  to = to->next;
799  }
800 
801  to = *setlist0;
802  while (setlist1 != &global_setlist && to != &global_setlist)
803  {
804  struct variable_set_list *from = setlist1;
805  setlist1 = setlist1->next;
806 
807  merge_variable_sets (to->set, from->set);
808 
809  last0 = to;
810  to = to->next;
811  }
812  }
813 
814  if (setlist1 != &global_setlist)
815  {
816  if (last0 == 0)
817  *setlist0 = setlist1;
818  else
819  last0->next = setlist1;
820  }
821 }
822 ␌
823 /* Define the automatic variables, and record the addresses
824  of their structures so we can change their values quickly. */
825 
826 void
828 {
829  struct variable *v;
830  char buf[200];
831 
832  sprintf (buf, "%u", makelevel);
834 
835  sprintf (buf, "%s%s%s",
837  (remote_description == 0 || remote_description[0] == '\0')
838  ? "" : "-",
839  (remote_description == 0 || remote_description[0] == '\0')
840  ? "" : remote_description);
841  define_variable_cname ("MAKE_VERSION", buf, o_default, 0);
842  define_variable_cname ("MAKE_HOST", make_host, o_default, 0);
843 
844 #ifdef __MSDOS__
845  /* Allow to specify a special shell just for Make,
846  and use $COMSPEC as the default $SHELL when appropriate. */
847  {
848  static char shell_str[] = "SHELL";
849  const int shlen = sizeof (shell_str) - 1;
850  struct variable *mshp = lookup_variable ("MAKESHELL", 9);
851  struct variable *comp = lookup_variable ("COMSPEC", 7);
852 
853  /* $(MAKESHELL) overrides $(SHELL) even if -e is in effect. */
854  if (mshp)
855  (void) define_variable (shell_str, shlen,
856  mshp->value, o_env_override, 0);
857  else if (comp)
858  {
859  /* $(COMSPEC) shouldn't override $(SHELL). */
860  struct variable *shp = lookup_variable (shell_str, shlen);
861 
862  if (!shp)
863  (void) define_variable (shell_str, shlen, comp->value, o_env, 0);
864  }
865  }
866 #elif defined(__EMX__)
867  {
868  static char shell_str[] = "SHELL";
869  const int shlen = sizeof (shell_str) - 1;
870  struct variable *shell = lookup_variable (shell_str, shlen);
871  struct variable *replace = lookup_variable ("MAKESHELL", 9);
872 
873  /* if $MAKESHELL is defined in the environment assume o_env_override */
874  if (replace && *replace->value && replace->origin == o_env)
875  replace->origin = o_env_override;
876 
877  /* if $MAKESHELL is not defined use $SHELL but only if the variable
878  did not come from the environment */
879  if (!replace || !*replace->value)
880  if (shell && *shell->value && (shell->origin == o_env
881  || shell->origin == o_env_override))
882  {
883  /* overwrite whatever we got from the environment */
884  free (shell->value);
885  shell->value = xstrdup (default_shell);
886  shell->origin = o_default;
887  }
888 
889  /* Some people do not like cmd to be used as the default
890  if $SHELL is not defined in the Makefile.
891  With -DNO_CMD_DEFAULT you can turn off this behaviour */
892 # ifndef NO_CMD_DEFAULT
893  /* otherwise use $COMSPEC */
894  if (!replace || !*replace->value)
895  replace = lookup_variable ("COMSPEC", 7);
896 
897  /* otherwise use $OS2_SHELL */
898  if (!replace || !*replace->value)
899  replace = lookup_variable ("OS2_SHELL", 9);
900 # else
901 # warning NO_CMD_DEFAULT: GNU make will not use CMD.EXE as default shell
902 # endif
903 
904  if (replace && *replace->value)
905  /* overwrite $SHELL */
906  (void) define_variable (shell_str, shlen, replace->value,
907  replace->origin, 0);
908  else
909  /* provide a definition if there is none */
910  (void) define_variable (shell_str, shlen, default_shell,
911  o_default, 0);
912  }
913 
914 #endif
915 
916  /* This won't override any definition, but it will provide one if there
917  isn't one there. */
919 #ifdef __MSDOS__
920  v->export = v_export; /* Export always SHELL. */
921 #endif
922 
923  /* On MSDOS we do use SHELL from environment, since it isn't a standard
924  environment variable on MSDOS, so whoever sets it, does that on purpose.
925  On OS/2 we do not use SHELL from environment but we have already handled
926  that problem above. */
927 #if !defined(__MSDOS__) && !defined(__EMX__)
928  /* Don't let SHELL come from the environment. */
929  if (*v->value == '\0' || v->origin == o_env || v->origin == o_env_override)
930  {
931  free (v->value);
932  v->origin = o_file;
933  v->value = xstrdup (default_shell);
934  }
935 #endif
936 
937  /* Make sure MAKEFILES gets exported if it is set. */
938  v = define_variable_cname ("MAKEFILES", "", o_default, 0);
939  v->export = v_ifset;
940 
941  /* Define the magic D and F variables in terms of
942  the automatic variables they are variations of. */
943 
944 #if defined(__MSDOS__) || defined(WINDOWS32)
945  /* For consistency, remove the trailing backslash as well as slash. */
946  define_variable_cname ("@D", "$(patsubst %/,%,$(patsubst %\\,%,$(dir $@)))",
947  o_automatic, 1);
948  define_variable_cname ("%D", "$(patsubst %/,%,$(patsubst %\\,%,$(dir $%)))",
949  o_automatic, 1);
950  define_variable_cname ("*D", "$(patsubst %/,%,$(patsubst %\\,%,$(dir $*)))",
951  o_automatic, 1);
952  define_variable_cname ("<D", "$(patsubst %/,%,$(patsubst %\\,%,$(dir $<)))",
953  o_automatic, 1);
954  define_variable_cname ("?D", "$(patsubst %/,%,$(patsubst %\\,%,$(dir $?)))",
955  o_automatic, 1);
956  define_variable_cname ("^D", "$(patsubst %/,%,$(patsubst %\\,%,$(dir $^)))",
957  o_automatic, 1);
958  define_variable_cname ("+D", "$(patsubst %/,%,$(patsubst %\\,%,$(dir $+)))",
959  o_automatic, 1);
960 #else /* not __MSDOS__, not WINDOWS32 */
961  define_variable_cname ("@D", "$(patsubst %/,%,$(dir $@))", o_automatic, 1);
962  define_variable_cname ("%D", "$(patsubst %/,%,$(dir $%))", o_automatic, 1);
963  define_variable_cname ("*D", "$(patsubst %/,%,$(dir $*))", o_automatic, 1);
964  define_variable_cname ("<D", "$(patsubst %/,%,$(dir $<))", o_automatic, 1);
965  define_variable_cname ("?D", "$(patsubst %/,%,$(dir $?))", o_automatic, 1);
966  define_variable_cname ("^D", "$(patsubst %/,%,$(dir $^))", o_automatic, 1);
967  define_variable_cname ("+D", "$(patsubst %/,%,$(dir $+))", o_automatic, 1);
968 #endif
969  define_variable_cname ("@F", "$(notdir $@)", o_automatic, 1);
970  define_variable_cname ("%F", "$(notdir $%)", o_automatic, 1);
971  define_variable_cname ("*F", "$(notdir $*)", o_automatic, 1);
972  define_variable_cname ("<F", "$(notdir $<)", o_automatic, 1);
973  define_variable_cname ("?F", "$(notdir $?)", o_automatic, 1);
974  define_variable_cname ("^F", "$(notdir $^)", o_automatic, 1);
975  define_variable_cname ("+F", "$(notdir $+)", o_automatic, 1);
976 }
977 ␌
979 
980 /* Create a new environment for FILE's commands.
981  If FILE is nil, this is for the 'shell' function.
982  The child's MAKELEVEL variable is incremented. */
983 
984 char **
986 {
987  struct variable_set_list *set_list;
988  struct variable_set_list *s;
989  struct hash_table table;
990  struct variable **v_slot;
991  struct variable **v_end;
992  struct variable makelevel_key;
993  char **result_0;
994  char **result;
995 
996  if (file == 0)
997  set_list = current_variable_set_list;
998  else
999  set_list = file->variables;
1000 
1003 
1004  /* Run through all the variable sets in the list,
1005  accumulating variables in TABLE. */
1006  for (s = set_list; s != 0; s = s->next)
1007  {
1008  struct variable_set *set = s->set;
1009  v_slot = (struct variable **) set->table.ht_vec;
1010  v_end = v_slot + set->table.ht_size;
1011  for ( ; v_slot < v_end; v_slot++)
1012  if (! HASH_VACANT (*v_slot))
1013  {
1014  struct variable **new_slot;
1015  struct variable *v = *v_slot;
1016 
1017  /* If this is a per-target variable and it hasn't been touched
1018  already then look up the global version and take its export
1019  value. */
1020  if (v->per_target && v->export == v_default)
1021  {
1022  struct variable *gv;
1023 
1024  gv = lookup_variable_in_set (v->name, strlen (v->name),
1026  if (gv)
1027  v->export = gv->export;
1028  }
1029 
1030  switch (v->export)
1031  {
1032  case v_default:
1033  if (v->origin == o_default || v->origin == o_automatic)
1034  /* Only export default variables by explicit request. */
1035  continue;
1036 
1037  /* The variable doesn't have a name that can be exported. */
1038  if (! v->exportable)
1039  continue;
1040 
1041  if (! export_all_variables
1042  && v->origin != o_command
1043  && v->origin != o_env && v->origin != o_env_override)
1044  continue;
1045  break;
1046 
1047  case v_export:
1048  break;
1049 
1050  case v_noexport:
1051  {
1052  /* If this is the SHELL variable and it's not exported,
1053  then add the value from our original environment, if
1054  the original environment defined a value for SHELL. */
1055  if (streq (v->name, "SHELL") && shell_var.value)
1056  {
1057  v = &shell_var;
1058  break;
1059  }
1060  continue;
1061  }
1062 
1063  case v_ifset:
1064  if (v->origin == o_default)
1065  continue;
1066  break;
1067  }
1068 
1069  new_slot = (struct variable **) hash_find_slot (&table, v);
1070  if (HASH_VACANT (*new_slot))
1071  hash_insert_at (&table, v, new_slot);
1072  }
1073  }
1074 
1075  makelevel_key.name = (char *)MAKELEVEL_NAME;
1076  makelevel_key.length = MAKELEVEL_LENGTH;
1077  hash_delete (&table, &makelevel_key);
1078 
1079  result = result_0 = xmalloc ((table.ht_fill + 2) * sizeof (char *));
1080 
1081  v_slot = (struct variable **) table.ht_vec;
1082  v_end = v_slot + table.ht_size;
1083  for ( ; v_slot < v_end; v_slot++)
1084  if (! HASH_VACANT (*v_slot))
1085  {
1086  struct variable *v = *v_slot;
1087 
1088  /* If V is recursively expanded and didn't come from the environment,
1089  expand its value. If it came from the environment, it should
1090  go back into the environment unchanged. */
1091  if (v->recursive
1092  && v->origin != o_env && v->origin != o_env_override)
1093  {
1095 #ifdef WINDOWS32
1096  if (strcmp (v->name, "Path") == 0 ||
1097  strcmp (v->name, "PATH") == 0)
1099 #endif
1100  *result++ = xstrdup (concat (3, v->name, "=", value));
1101  free (value);
1102  }
1103  else
1104  {
1105 #ifdef WINDOWS32
1106  if (strcmp (v->name, "Path") == 0 ||
1107  strcmp (v->name, "PATH") == 0)
1108  convert_Path_to_windows32 (v->value, ';');
1109 #endif
1110  *result++ = xstrdup (concat (3, v->name, "=", v->value));
1111  }
1112  }
1113 
1114  *result = xmalloc (100);
1115  sprintf (*result, "%s=%u", MAKELEVEL_NAME, makelevel + 1);
1116  *++result = 0;
1117 
1118  hash_free (&table, 0);
1119 
1120  return result_0;
1121 }
1122 ␌
1123 static struct variable *
1125 {
1126  if (streq (var->name, RECIPEPREFIX_NAME))
1127  {
1128  /* The user is resetting the command introduction prefix. This has to
1129  happen immediately, so that subsequent rules are interpreted
1130  properly. */
1131  cmd_prefix = var->value[0]=='\0' ? RECIPEPREFIX_DEFAULT : var->value[0];
1132  }
1133 
1134  return var;
1135 }
1136 ␌
1137 /* Given a string, shell-execute it and return a malloc'ed string of the
1138  * result. This removes only ONE newline (if any) at the end, for maximum
1139  * compatibility with the *BSD makes. If it fails, returns NULL. */
1140 
1141 static char *
1142 shell_result (const char *p)
1143 {
1144  char *buf;
1145  size_t len;
1146  char *args[2];
1147  char *result;
1148 
1150 
1151  args[0] = (char *) p;
1152  args[1] = NULL;
1155 
1157  return result;
1158 }
1159 ␌
1160 /* Given a variable, a value, and a flavor, define the variable.
1161  See the try_variable_definition() function for details on the parameters. */
1162 
1163 struct variable *
1164 do_variable_definition (const floc *flocp, const char *varname,
1165  const char *value, enum variable_origin origin,
1166  enum variable_flavor flavor, int target_var)
1167 {
1168  const char *p;
1169  char *alloc_value = NULL;
1170  struct variable *v;
1171  int append = 0;
1172  int conditional = 0;
1173 
1174  /* Calculate the variable's new value in VALUE. */
1175 
1176  switch (flavor)
1177  {
1178  default:
1179  case f_bogus:
1180  /* Should not be possible. */
1181  abort ();
1182  case f_simple:
1183  /* A simple variable definition "var := value". Expand the value.
1184  We have to allocate memory since otherwise it'll clobber the
1185  variable buffer, and we may still need that if we're looking at a
1186  target-specific variable. */
1187  p = alloc_value = allocated_variable_expand (value);
1188  break;
1189  case f_shell:
1190  {
1191  /* A shell definition "var != value". Expand value, pass it to
1192  the shell, and store the result in recursively-expanded var. */
1193  char *q = allocated_variable_expand (value);
1194  p = alloc_value = shell_result (q);
1195  free (q);
1196  flavor = f_recursive;
1197  break;
1198  }
1199  case f_conditional:
1200  /* A conditional variable definition "var ?= value".
1201  The value is set IFF the variable is not defined yet. */
1202  v = lookup_variable (varname, strlen (varname));
1203  if (v)
1204  goto done;
1205 
1206  conditional = 1;
1207  flavor = f_recursive;
1208  /* FALLTHROUGH */
1209  case f_recursive:
1210  /* A recursive variable definition "var = value".
1211  The value is used verbatim. */
1212  p = value;
1213  break;
1214  case f_append:
1215  case f_append_value:
1216  {
1217  /* If we have += but we're in a target variable context, we want to
1218  append only with other variables in the context of this target. */
1219  if (target_var)
1220  {
1221  append = 1;
1222  v = lookup_variable_in_set (varname, strlen (varname),
1224 
1225  /* Don't append from the global set if a previous non-appending
1226  target-specific variable definition exists. */
1227  if (v && !v->append)
1228  append = 0;
1229  }
1230  else
1231  v = lookup_variable (varname, strlen (varname));
1232 
1233  if (v == 0)
1234  {
1235  /* There was no old value.
1236  This becomes a normal recursive definition. */
1237  p = value;
1238  flavor = f_recursive;
1239  }
1240  else
1241  {
1242  /* Paste the old and new values together in VALUE. */
1243 
1244  size_t oldlen, vallen;
1245  const char *val;
1246  char *tp = NULL;
1247 
1248  val = value;
1249  if (v->recursive)
1250  /* The previous definition of the variable was recursive.
1251  The new value is the unexpanded old and new values. */
1252  flavor = f_recursive;
1253  else if (flavor != f_append_value)
1254  /* The previous definition of the variable was simple.
1255  The new value comes from the old value, which was expanded
1256  when it was set; and from the expanded new value. Allocate
1257  memory for the expansion as we may still need the rest of the
1258  buffer if we're looking at a target-specific variable. */
1260 
1261  /* If the new value is empty, nothing to do. */
1262  vallen = strlen (val);
1263  if (!vallen)
1264  {
1265  alloc_value = tp;
1266  goto done;
1267  }
1268 
1269  oldlen = strlen (v->value);
1270  p = alloc_value = xmalloc (oldlen + 1 + vallen + 1);
1271 
1272  if (oldlen)
1273  {
1274  memcpy (alloc_value, v->value, oldlen);
1275  alloc_value[oldlen] = ' ';
1276  ++oldlen;
1277  }
1278 
1279  memcpy (&alloc_value[oldlen], val, vallen + 1);
1280 
1281  free (tp);
1282  }
1283  break;
1284  }
1285  }
1286 
1287 #ifdef __MSDOS__
1288  /* Many Unix Makefiles include a line saying "SHELL=/bin/sh", but
1289  non-Unix systems don't conform to this default configuration (in
1290  fact, most of them don't even have '/bin'). On the other hand,
1291  $SHELL in the environment, if set, points to the real pathname of
1292  the shell.
1293  Therefore, we generally won't let lines like "SHELL=/bin/sh" from
1294  the Makefile override $SHELL from the environment. But first, we
1295  look for the basename of the shell in the directory where SHELL=
1296  points, and along the $PATH; if it is found in any of these places,
1297  we define $SHELL to be the actual pathname of the shell. Thus, if
1298  you have bash.exe installed as d:/unix/bash.exe, and d:/unix is on
1299  your $PATH, then SHELL=/usr/local/bin/bash will have the effect of
1300  defining SHELL to be "d:/unix/bash.exe". */
1301  if ((origin == o_file || origin == o_override)
1302  && strcmp (varname, "SHELL") == 0)
1303  {
1304  PATH_VAR (shellpath);
1305  extern char * __dosexec_find_on_path (const char *, char *[], char *);
1306 
1307  /* See if we can find "/bin/sh.exe", "/bin/sh.com", etc. */
1308  if (__dosexec_find_on_path (p, NULL, shellpath))
1309  {
1310  char *tp;
1311 
1312  for (tp = shellpath; *tp; tp++)
1313  if (*tp == '\\')
1314  *tp = '/';
1315 
1316  v = define_variable_loc (varname, strlen (varname),
1317  shellpath, origin, flavor == f_recursive,
1318  flocp);
1319  }
1320  else
1321  {
1322  const char *shellbase, *bslash;
1323  struct variable *pathv = lookup_variable ("PATH", 4);
1324  char *path_string;
1325  char *fake_env[2];
1326  size_t pathlen = 0;
1327 
1328  shellbase = strrchr (p, '/');
1329  bslash = strrchr (p, '\\');
1330  if (!shellbase || bslash > shellbase)
1331  shellbase = bslash;
1332  if (!shellbase && p[1] == ':')
1333  shellbase = p + 1;
1334  if (shellbase)
1335  shellbase++;
1336  else
1337  shellbase = p;
1338 
1339  /* Search for the basename of the shell (with standard
1340  executable extensions) along the $PATH. */
1341  if (pathv)
1342  pathlen = strlen (pathv->value);
1343  path_string = xmalloc (5 + pathlen + 2 + 1);
1344  /* On MSDOS, current directory is considered as part of $PATH. */
1345  sprintf (path_string, "PATH=.;%s", pathv ? pathv->value : "");
1346  fake_env[0] = path_string;
1347  fake_env[1] = 0;
1348  if (__dosexec_find_on_path (shellbase, fake_env, shellpath))
1349  {
1350  char *tp;
1351 
1352  for (tp = shellpath; *tp; tp++)
1353  if (*tp == '\\')
1354  *tp = '/';
1355 
1356  v = define_variable_loc (varname, strlen (varname),
1357  shellpath, origin,
1358  flavor == f_recursive, flocp);
1359  }
1360  else
1361  v = lookup_variable (varname, strlen (varname));
1362 
1363  free (path_string);
1364  }
1365  }
1366  else
1367 #endif /* __MSDOS__ */
1368 #ifdef WINDOWS32
1369  if ((origin == o_file || origin == o_override || origin == o_command)
1370  && streq (varname, "SHELL"))
1371  {
1372  extern const char *default_shell;
1373 
1374  /* Call shell locator function. If it returns TRUE, then
1375  set no_default_sh_exe to indicate sh was found and
1376  set new value for SHELL variable. */
1377 
1378  if (find_and_set_default_shell (p))
1379  {
1380  v = define_variable_in_set (varname, strlen (varname), default_shell,
1381  origin, flavor == f_recursive,
1382  (target_var
1384  : NULL),
1385  flocp);
1386  no_default_sh_exe = 0;
1387  }
1388  else
1389  {
1390  char *tp = alloc_value;
1391 
1392  alloc_value = allocated_variable_expand (p);
1393 
1394  if (find_and_set_default_shell (alloc_value))
1395  {
1396  v = define_variable_in_set (varname, strlen (varname), p,
1397  origin, flavor == f_recursive,
1398  (target_var
1400  : NULL),
1401  flocp);
1402  no_default_sh_exe = 0;
1403  }
1404  else
1405  v = lookup_variable (varname, strlen (varname));
1406 
1407  free (tp);
1408  }
1409  }
1410  else
1411  v = NULL;
1412 
1413  /* If not $SHELL, or if $SHELL points to a program we didn't find,
1414  just process this variable "as usual". */
1415  if (!v)
1416 #endif
1417 
1418  /* If we are defining variables inside an $(eval ...), we might have a
1419  different variable context pushed, not the global context (maybe we're
1420  inside a $(call ...) or something. Since this function is only ever
1421  invoked in places where we want to define globally visible variables,
1422  make sure we define this variable in the global set. */
1423 
1424  v = define_variable_in_set (varname, strlen (varname), p,
1425  origin, flavor == f_recursive,
1426  (target_var
1428  flocp);
1429  v->append = append;
1430  v->conditional = conditional;
1431 
1432  done:
1433  free (alloc_value);
1434  return v->special ? set_special_var (v) : v;
1435 }
1436 ␌
1437 /* Parse P (a null-terminated string) as a variable definition.
1438 
1439  If it is not a variable definition, return NULL and the contents of *VAR
1440  are undefined, except NAME is set to the first non-space character or NIL.
1441 
1442  If it is a variable definition, return a pointer to the char after the
1443  assignment token and set the following fields (only) of *VAR:
1444  name : name of the variable (ALWAYS SET) (NOT NUL-TERMINATED!)
1445  length : length of the variable name
1446  value : value of the variable (nul-terminated)
1447  flavor : flavor of the variable
1448  Other values in *VAR are unchanged.
1449  */
1450 
1451 char *
1452 parse_variable_definition (const char *p, struct variable *var)
1453 {
1454  int wspace = 0;
1455  const char *e = NULL;
1456 
1457  NEXT_TOKEN (p);
1458  var->name = (char *)p;
1459  var->length = 0;
1460 
1461  while (1)
1462  {
1463  int c = *p++;
1464 
1465  /* If we find a comment or EOS, it's not a variable definition. */
1466  if (STOP_SET (c, MAP_COMMENT|MAP_NUL))
1467  return NULL;
1468 
1469  if (c == '$')
1470  {
1471  /* This begins a variable expansion reference. Make sure we don't
1472  treat chars inside the reference as assignment tokens. */
1473  char closeparen;
1474  unsigned int count;
1475 
1476  c = *p++;
1477  if (c == '(')
1478  closeparen = ')';
1479  else if (c == '{')
1480  closeparen = '}';
1481  else if (c == '\0')
1482  return NULL;
1483  else
1484  /* '$$' or '$X'. Either way, nothing special to do here. */
1485  continue;
1486 
1487  /* P now points past the opening paren or brace.
1488  Count parens or braces until it is matched. */
1489  for (count = 1; *p != '\0'; ++p)
1490  {
1491  if (*p == closeparen && --count == 0)
1492  {
1493  ++p;
1494  break;
1495  }
1496  if (*p == c)
1497  ++count;
1498  }
1499  continue;
1500  }
1501 
1502  /* If we find whitespace skip it, and remember we found it. */
1503  if (ISBLANK (c))
1504  {
1505  wspace = 1;
1506  e = p - 1;
1507  NEXT_TOKEN (p);
1508  c = *p;
1509  if (c == '\0')
1510  return NULL;
1511  ++p;
1512  }
1513 
1514 
1515  if (c == '=')
1516  {
1517  var->flavor = f_recursive;
1518  if (! e)
1519  e = p - 1;
1520  break;
1521  }
1522 
1523  /* Match assignment variants (:=, +=, ?=, !=) */
1524  if (*p == '=')
1525  {
1526  switch (c)
1527  {
1528  case ':':
1529  var->flavor = f_simple;
1530  break;
1531  case '+':
1532  var->flavor = f_append;
1533  break;
1534  case '?':
1535  var->flavor = f_conditional;
1536  break;
1537  case '!':
1538  var->flavor = f_shell;
1539  break;
1540  default:
1541  /* If we skipped whitespace, non-assignments means no var. */
1542  if (wspace)
1543  return NULL;
1544 
1545  /* Might be assignment, or might be $= or #=. Check. */
1546  continue;
1547  }
1548  if (! e)
1549  e = p - 1;
1550  ++p;
1551  break;
1552  }
1553 
1554  /* Check for POSIX ::= syntax */
1555  if (c == ':')
1556  {
1557  /* A colon other than :=/::= is not a variable defn. */
1558  if (*p != ':' || p[1] != '=')
1559  return NULL;
1560 
1561  /* POSIX allows ::= to be the same as GNU make's := */
1562  var->flavor = f_simple;
1563  if (! e)
1564  e = p - 1;
1565  p += 2;
1566  break;
1567  }
1568 
1569  /* If we skipped whitespace, non-assignments means no var. */
1570  if (wspace)
1571  return NULL;
1572  }
1573 
1574  var->length = (unsigned int) (e - var->name);
1575  var->value = next_token (p);
1576  return (char *)p;
1577 }
1578 ␌
1579 /* Try to interpret LINE (a null-terminated string) as a variable definition.
1580 
1581  If LINE was recognized as a variable definition, a pointer to its 'struct
1582  variable' is returned. If LINE is not a variable definition, NULL is
1583  returned. */
1584 
1585 struct variable *
1587 {
1588  char *name;
1589 
1591  return NULL;
1592 
1593  /* Expand the name, so "$(foo)bar = baz" works. */
1594  name = alloca (v->length + 1);
1595  memcpy (name, v->name, v->length);
1596  name[v->length] = '\0';
1597  v->name = allocated_variable_expand (name);
1598 
1599  if (v->name[0] == '\0')
1600  O (fatal, &v->fileinfo, _("empty variable name"));
1601 
1602  return v;
1603 }
1604 ␌
1605 /* Try to interpret LINE (a null-terminated string) as a variable definition.
1606 
1607  ORIGIN may be o_file, o_override, o_env, o_env_override,
1608  or o_command specifying that the variable definition comes
1609  from a makefile, an override directive, the environment with
1610  or without the -e switch, or the command line.
1611 
1612  See the comments for assign_variable_definition().
1613 
1614  If LINE was recognized as a variable definition, a pointer to its 'struct
1615  variable' is returned. If LINE is not a variable definition, NULL is
1616  returned. */
1617 
1618 struct variable *
1619 try_variable_definition (const floc *flocp, const char *line,
1620  enum variable_origin origin, int target_var)
1621 {
1622  struct variable v;
1623  struct variable *vp;
1624 
1625  if (flocp != 0)
1626  v.fileinfo = *flocp;
1627  else
1628  v.fileinfo.filenm = 0;
1629 
1631  return 0;
1632 
1633  vp = do_variable_definition (flocp, v.name, v.value,
1634  origin, v.flavor, target_var);
1635 
1636  free (v.name);
1637 
1638  return vp;
1639 }
1640 ␌
1641 /* Print information for variable V, prefixing it with PREFIX. */
1642 
1643 static void
1644 print_variable (const void *item, void *arg)
1645 {
1646  const struct variable *v = item;
1647  const char *prefix = arg;
1648  const char *origin;
1649 
1650  switch (v->origin)
1651  {
1652  case o_automatic:
1653  origin = _("automatic");
1654  break;
1655  case o_default:
1656  origin = _("default");
1657  break;
1658  case o_env:
1659  origin = _("environment");
1660  break;
1661  case o_file:
1662  origin = _("makefile");
1663  break;
1664  case o_env_override:
1665  origin = _("environment under -e");
1666  break;
1667  case o_command:
1668  origin = _("command line");
1669  break;
1670  case o_override:
1671  origin = _("'override' directive");
1672  break;
1673  case o_invalid:
1674  default:
1675  abort ();
1676  }
1677  fputs ("# ", stdout);
1678  fputs (origin, stdout);
1679  if (v->private_var)
1680  fputs (" private", stdout);
1681  if (v->fileinfo.filenm)
1682  printf (_(" (from '%s', line %lu)"),
1683  v->fileinfo.filenm, v->fileinfo.lineno + v->fileinfo.offset);
1684  putchar ('\n');
1685  fputs (prefix, stdout);
1686 
1687  /* Is this a 'define'? */
1688  if (v->recursive && strchr (v->value, '\n') != 0)
1689  printf ("define %s\n%s\nendef\n", v->name, v->value);
1690  else
1691  {
1692  char *p;
1693 
1694  printf ("%s %s= ", v->name, v->recursive ? v->append ? "+" : "" : ":");
1695 
1696  /* Check if the value is just whitespace. */
1697  p = next_token (v->value);
1698  if (p != v->value && *p == '\0')
1699  /* All whitespace. */
1700  printf ("$(subst ,,%s)", v->value);
1701  else if (v->recursive)
1702  fputs (v->value, stdout);
1703  else
1704  /* Double up dollar signs. */
1705  for (p = v->value; *p != '\0'; ++p)
1706  {
1707  if (*p == '$')
1708  putchar ('$');
1709  putchar (*p);
1710  }
1711  putchar ('\n');
1712  }
1713 }
1714 
1715 
1716 static void
1717 print_auto_variable (const void *item, void *arg)
1718 {
1719  const struct variable *v = item;
1720 
1721  if (v->origin == o_automatic)
1722  print_variable (item, arg);
1723 }
1724 
1725 
1726 static void
1727 print_noauto_variable (const void *item, void *arg)
1728 {
1729  const struct variable *v = item;
1730 
1731  if (v->origin != o_automatic)
1732  print_variable (item, arg);
1733 }
1734 
1735 
1736 /* Print all the variables in SET. PREFIX is printed before
1737  the actual variable definitions (everything else is comments). */
1738 
1739 static void
1740 print_variable_set (struct variable_set *set, const char *prefix, int pauto)
1741 {
1743  (void *)prefix);
1744 
1745  fputs (_("# variable set hash-table stats:\n"), stdout);
1746  fputs ("# ", stdout);
1747  hash_print_stats (&set->table, stdout);
1748  putc ('\n', stdout);
1749 }
1750 
1751 /* Print the data base of variables. */
1752 
1753 void
1755 {
1756  puts (_("\n# Variables\n"));
1757 
1759 
1760  puts (_("\n# Pattern-specific Variable Values"));
1761 
1762  {
1763  struct pattern_var *p;
1764  unsigned int rules = 0;
1765 
1766  for (p = pattern_vars; p != 0; p = p->next)
1767  {
1768  ++rules;
1769  printf ("\n%s :\n", p->target);
1770  print_variable (&p->variable, (void *)"# ");
1771  }
1772 
1773  if (rules == 0)
1774  puts (_("\n# No pattern-specific variable values."));
1775  else
1776  printf (_("\n# %u pattern-specific variable values"), rules);
1777  }
1778 }
1779 
1780 
1781 /* Print all the local variables of FILE. */
1782 
1783 void
1785 {
1786  if (file->variables != 0)
1787  print_variable_set (file->variables->set, "# ", 1);
1788 }
1789 
1790 void
1792 {
1793  if (file->variables != 0)
1794  {
1795  size_t l = strlen (file->name);
1796  char *t = alloca (l + 3);
1797 
1798  strcpy (t, file->name);
1799  t[l] = ':';
1800  t[l+1] = ' ';
1801  t[l+2] = '\0';
1802 
1804  }
1805 }
1806 
1807 #ifdef WINDOWS32
1808 void
1809 sync_Path_environment (void)
1810 {
1811  char *path = allocated_variable_expand ("$(PATH)");
1812  static char *environ_path = NULL;
1813 
1814  if (!path)
1815  return;
1816 
1817  /* If done this before, free the previous entry before allocating new one. */
1818  free (environ_path);
1819 
1820  /* Create something WINDOWS32 world can grok. */
1822  environ_path = xstrdup (concat (3, "PATH", "=", path));
1823  putenv (environ_path);
1824  free (path);
1825 }
1826 #endif
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
#define strdup
Definition: Utility.h:167
q
Definition: afm2pl.c:2287
static char * concat(const char *s1, const char *s2)
Definition: afm2pl.c:377
static char * vname(int c)
Definition: afm2tfm.c:1328
#define count(a)
Definition: aptex-macros.h:781
#define name
#define global
static int item
Definition: brushtopbm.c:66
@ reading
Definition: ctie-k.c:55
#define free(a)
Definition: decNumber.cpp:310
#define strrchr
Definition: detex.c:67
int v
Definition: dviconv.c:10
static int pathlen
Definition: psspecial.c:35
char * strncpy()
int strcmp()
Definition: coll.cpp:143
int printf()
char * strcpy()
void replace(char *, char *)
Definition: dvispc.c:2100
int sptr
Definition: dvistuff.c:186
char version_string[]
Definition: filesrch.c:416
static void
Definition: fpif.c:118
#define _(String)
Definition: ftxerr18.c:64
char * func_shell_base(char *o, char **argv, int trim_newlines)
Definition: function.c:1694
#define tp
#define s
Definition: afcover.h:80
#define c(n)
Definition: gpos-common.c:150
static void * xrealloc(char *oldp, unsigned size)
Definition: gsftopk.c:643
#define strchr
Definition: gsftopk.c:59
#define memcpy(d, s, n)
Definition: gsftopk.c:64
assert(pcxLoadImage24((char *)((void *) 0), fp, pinfo, hdr))
#define putc
Definition: jbib.h:20
char * default_shell
Definition: job.c:80
#define NULL
Definition: ftobjs.h:61
small capitals from c petite p
Definition: afcover.h:72
sizeof(AF_ModuleRec)
for(n=0;n< outline->n_points;n++)
Definition: ftbbox.c:494
static FT_Error hash_init(FT_Hash hash, FT_Bool is_num, FT_Memory memory)
Definition: fthash.c:165
#define const
Definition: ftzconf.h:91
kerning y
Definition: ttdriver.c:212
char * getenv()
#define xstrdup(s)
Definition: writet1.c:34
#define xmalloc(size)
Definition: writet1.c:33
#define buf
#define ISBLANK(c)
Definition: fontmap.c:215
#define ISDIGIT(c)
Definition: c-ctype.h:35
KPSEDLL address xcalloc(size_t nelem, size_t elsize)
Definition: xcalloc.c:23
#define alloca
Definition: win32lib.h:60
#define putenv
Definition: win32lib.h:87
#define fputs
Definition: mendex.h:67
#define length(c)
Definition: ctangleboot.c:65
#define fatal
Definition: tie.c:14
char conditional[20]
Definition: web2c-lexer.c:709
void abort()
char * variable_buffer_output(char *ptr, const char *string, size_t length)
Definition: expand.c:56
char * recursively_expand_for_file(struct variable *v, struct file *file)
Definition: expand.c:96
void restore_variable_buffer(char *buf, size_t len)
Definition: expand.c:591
char * variable_buffer
Definition: expand.c:46
void install_variable_buffer(char **bufp, size_t *lenp)
Definition: expand.c:578
void hash_free(struct hash_table *ht, int free_items)
Definition: hash.c:208
void * hash_find_item(struct hash_table *ht, void *key)
Definition: hash.c:120
void hash_print_stats(struct hash_table *ht, FILE *out_FILE)
Definition: hash.c:278
void ** hash_find_slot(struct hash_table *ht, void *key)
Definition: hash.c:85
void hash_map_arg(struct hash_table *ht, hash_map_arg_func_t map, void *arg)
Definition: hash.c:236
void * hash_delete(struct hash_table *ht, void *item)
Definition: hash.c:157
void hash_map(struct hash_table *ht, hash_map_func_t map)
Definition: hash.c:223
void * hash_insert_at(struct hash_table *ht, void *item, void *slot)
Definition: hash.c:136
void * hash_delete_at(struct hash_table *ht, void *slot)
Definition: hash.c:164
#define return_STRING_N_HASH_2(KEY, N)
Definition: hash.h:137
#define return_STRING_N_COMPARE(X, Y, N)
Definition: hash.h:146
#define HASH_VACANT(item)
Definition: hash.h:80
#define return_STRING_N_HASH_1(KEY, N)
Definition: hash.h:123
struct variable shell_var
Definition: main.c:322
char cmd_prefix
Definition: main.c:326
unsigned int makelevel
Definition: main.c:513
int env_overrides
Definition: main.c:197
static struct pattern_var * last_pattern_vars[256]
Definition: variable.c:41
#define PERFILE_VARIABLE_BUCKETS
Definition: variable.c:168
void initialize_file_variables(struct file *file, int reading)
Definition: variable.c:563
void print_file_variables(struct file *file)
Definition: variable.c:1784
struct variable * define_variable_in_set(char *name, size_t length, char *value, enum variable_origin origin, int recursive, struct variable_set *set, floc *flocp)
Definition: variable.c:196
struct variable_set_list * current_variable_set_list
Definition: variable.c:177
void pop_variable_scope(void)
Definition: variable.c:710
static struct variable * lookup_special_var(struct variable *var)
Definition: variable.c:375
#define EXPANSION_INCREMENT(_l)
Definition: variable.c:372
struct variable * lookup_variable_in_set(char *name, size_t length, struct variable_set *set)
Definition: variable.c:542
struct variable * lookup_variable(char *name, size_t length)
Definition: variable.c:455
static struct variable_set_list global_setlist
Definition: variable.c:176
static struct variable_set global_variable_set
Definition: variable.c:174
struct pattern_var * create_pattern_var(char *target, char *suffix)
Definition: variable.c:51
static struct pattern_var * pattern_vars
Definition: variable.c:37
void print_variable_data_base(void)
Definition: variable.c:1754
void free_variable_set(struct variable_set_list *list)
Definition: variable.c:316
void init_hash_global_variable_set(void)
Definition: variable.c:182
#define SMALL_SCOPE_VARIABLE_BUCKETS
Definition: variable.c:171
static unsigned long variable_changenum
Definition: variable.c:33
void print_target_variables(struct file *file)
Definition: variable.c:1791
static void print_noauto_variable(void *item, void *arg)
Definition: variable.c:1727
void define_automatic_variables(void)
Definition: variable.c:827
struct variable * do_variable_definition(floc *flocp, char *varname, char *value, enum variable_origin origin, enum variable_flavor flavor, int target_var)
Definition: variable.c:1164
static char * shell_result(char *p)
Definition: variable.c:1142
static void merge_variable_sets(struct variable_set *to_set, struct variable_set *from_set)
Definition: variable.c:747
struct variable * assign_variable_definition(struct variable *v, char *line)
Definition: variable.c:1586
static void print_variable_set(struct variable_set *set, char *prefix, int pauto)
Definition: variable.c:1740
int export_all_variables
Definition: variable.c:978
static struct variable * set_special_var(struct variable *var)
Definition: variable.c:1124
static unsigned long variable_hash_2(void *keyv)
Definition: variable.c:147
void merge_variable_set_lists(struct variable_set_list **setlist0, struct variable_set_list *setlist1)
Definition: variable.c:778
struct variable_set_list * push_new_variable_scope(void)
Definition: variable.c:691
char * parse_variable_definition(char *p, struct variable *var)
Definition: variable.c:1452
static int variable_hash_cmp(void *xv, void *yv)
Definition: variable.c:154
char ** target_environment(struct file *file)
Definition: variable.c:985
#define VARIABLE_BUCKETS
Definition: variable.c:165
void undefine_variable_in_set(char *name, size_t length, enum variable_origin origin, struct variable_set *set)
Definition: variable.c:325
static unsigned long variable_hash_1(void *keyv)
Definition: variable.c:140
static void print_auto_variable(void *item, void *arg)
Definition: variable.c:1717
struct variable_set_list * create_new_variable_set(void)
Definition: variable.c:666
static struct pattern_var * lookup_pattern_var(struct pattern_var *start, char *target)
Definition: variable.c:101
static void free_variable_name_and_value(void *item)
Definition: variable.c:308
struct variable * try_variable_definition(floc *flocp, char *line, enum variable_origin origin, int target_var)
Definition: variable.c:1619
static void print_variable(void *item, void *arg)
Definition: variable.c:1644
variable_origin
Definition: variable.h:22
@ o_file
Definition: variable.h:25
@ o_automatic
Definition: variable.h:29
@ o_default
Definition: variable.h:23
@ o_invalid
Definition: variable.h:30
@ o_env
Definition: variable.h:24
@ o_command
Definition: variable.h:27
@ o_env_override
Definition: variable.h:26
@ o_override
Definition: variable.h:28
v_export
Definition: variable.h:0
#define define_variable(n, l, v, o, r)
Definition: variable.h:189
#define allocated_variable_expand(line)
Definition: variable.h:125
#define define_variable_cname(n, v, o, r)
Definition: variable.h:195
#define define_variable_loc(n, l, v, o, r, f)
Definition: variable.h:201
v_ifset
Definition: variable.h:2
variable_flavor
Definition: variable.h:34
@ f_conditional
Definition: variable.h:39
@ f_append_value
Definition: variable.h:41
@ f_append
Definition: variable.h:38
@ f_simple
Definition: variable.h:36
@ f_bogus
Definition: variable.h:35
@ f_recursive
Definition: variable.h:37
@ f_shell
Definition: variable.h:40
#define MAKELEVEL_NAME
Definition: variable.h:240
v_default
Definition: variable.h:4
#define MAKELEVEL_LENGTH
Definition: variable.h:241
v_noexport
Definition: variable.h:1
#define sprintf
Definition: snprintf.c:44
#define streq(a, b)
Definition: mkg3states.c:42
static int setlist(lua_State *L)
Definition: ltexlib.c:2267
#define target(code, i)
Definition: lpeg.c:1165
#define RECIPEPREFIX_DEFAULT
Definition: makeint.h:685
#define MAP_COMMENT
Definition: makeint.h:397
char * next_token(char *)
Definition: misc.c:318
char * remote_description
Definition: makeint.h:736
#define strneq(a, b, l)
Definition: makeint.h:331
char * make_host
Definition: makeint.h:736
char * xstrndup(char *, size_t)
Definition: misc.c:247
#define STOP_SET(_v, _m)
Definition: makeint.h:447
#define RECIPEPREFIX_NAME
Definition: makeint.h:684
#define MAP_NUL
Definition: makeint.h:394
#define O(_t, _a, _f)
Definition: makeint.h:501
#define NEXT_TOKEN(s)
Definition: makeint.h:451
#define PATH_VAR(var)
Definition: makeint.h:160
static boolean recursive(char *filename)
Definition: multfile.c:37
float x
Definition: cordic.py:15
dictionary off
Definition: fc-lang.py:226
union value value
Definition: obx.h:44
char * convert_Path_to_windows32(char *Path, char to_delim)
Definition: pathstuff.c:45
#define max(a, b)
Definition: pbmto4425.c:11
const char * suffix
Definition: pkg_icu.cpp:27
real stemlen
Definition: pmxab.c:210
real to[600]
Definition: pmxab.c:87
integer nptr[3999]
Definition: pmxab.c:511
#define nvalue(o)
Definition: lobject.h:165
ShellFileEnvironment e
Definition: sh6.c:388
UChar rules[100]
Definition: strsrch.cpp:66
Definition: usprintf.c:39
Definition: funcfont.h:31
Definition: filedef.h:30
struct variable_set_list * variables
Definition: filedef.h:49
struct file * double_colon
Definition: filedef.h:61
struct variable_set_list * pat_variables
Definition: filedef.h:53
unsigned int pat_searched
Definition: filedef.h:104
const char * name
Definition: filedef.h:31
struct file * parent
Definition: filedef.h:57
Definition: makeint.h:484
void ** ht_vec
Definition: hash.h:43
unsigned long ht_size
Definition: hash.h:47
Definition: bdf.c:133
Definition: tpic.c:45
struct pattern_var * next
Definition: variable.h:104
Definition: type1.c:137
Definition: dvips.h:235
Definition: table.h:30
Definition: strexpr.c:21
Definition: sh.h:1782
char * name
Definition: sh.h:1783
char * value
Definition: sh.h:1784
struct variable_set_list * next
Definition: variable.h:95
struct variable_set * set
Definition: variable.h:96
struct hash_table table
Definition: variable.h:88
char * name
Definition: variable.h:53
char * value
Definition: variable.h:54
unsigned int length
Definition: variable.h:56
*job_name strlen((char *) job_name) - 4)
#define key
Definition: tex2xindy.c:753
val
Definition: tex4ht.c:3227
return() int(((double) *(font_tbl[cur_fnt].wtbl+(int)(*(font_tbl[cur_fnt].char_wi+(int)(ch - font_tbl[cur_fnt].char_f)% 256)))/(double)(1L<< 20)) *(double) font_tbl[cur_fnt].scale)
Definition: obx.h:51
@ start
Definition: preamble.c:52
#define append(a, b)
Definition: y.tab.c:257
#define end(cp)
Definition: zic.c:71