]>
cygwin.com Git - cygwin-apps/setup.git/blob - ini.cc
2 * Copyright (c) 2000, Red Hat, Inc.
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
9 * A copy of the GNU General Public License can be found at
12 * Written by DJ Delorie <dj@cygnus.com>
16 /* The purpose of this file is to get and parse the setup.ini file
17 from the mirror site. A few support routines for the bison and
18 flex parsers are provided also. We check to see if this setup.ini
19 is older than the one we used last time, and if so, warn the user. */
21 static char *cvsid
= "\n%%% $Id$\n";
40 unsigned int setup_timestamp
= 0;
41 char *setup_version
= 0;
43 extern "C" int yyparse ();
44 /*extern int yydebug;*/
46 static char *error_buf
= 0;
47 static int error_count
= 0;
52 char *ini_file
= get_url_to_string (concat (MIRROR_SITE
, "/setup.ini", 0));
53 dismiss_url_status_dialog ();
57 note (IDS_SETUPINI_MISSING
, MIRROR_SITE
);
58 next_dialog
= IDD_SITE
;
72 if (yyparse () || error_count
> 0)
75 MessageBox (0, error_buf
, "Parse Error", 0);
77 MessageBox (0, error_buf
, "Parse Errors", 0);
81 /* save known-good setup.ini locally */
82 FILE *inif
= fopen ("setup.ini", "wb");
85 fwrite (ini_file
, 1, strlen (ini_file
), inif
);
92 mkdir_p (1, concat (root_dir
, "/etc/setup", 0));
94 unsigned int old_timestamp
= 0;
95 FILE *ots
= fopen (concat (root_dir
, "/etc/setup/timestamp", 0), "rt");
98 fscanf (ots
, "%u", &old_timestamp
);
100 if (old_timestamp
&& setup_timestamp
101 && (old_timestamp
> setup_timestamp
))
103 int yn
= yesno (IDS_OLD_SETUPINI
);
110 FILE *nts
= fopen (concat (root_dir
, "/etc/setup/timestamp", 0), "wt");
113 fprintf (nts
, "%u", setup_timestamp
);
119 msg ("setup_version is %s, our_version is %s", setup_version
?:"(null)", version
);
122 char *ini_version
= canonicalize_version (setup_version
);
123 char *our_version
= canonicalize_version (version
);
124 if (strcmp (our_version
, ini_version
) < 0)
125 note (IDS_OLD_SETUP_VERSION
, version
, setup_version
);
128 next_dialog
= IDD_CHOOSE
;
133 extern "C" int yyerror (char *s
, ...)
137 sprintf (buf
, "setup.ini line %d: ", yylineno
);
140 vsprintf (buf
+ strlen (buf
), s
, args
);
141 OutputDebugString (buf
);
144 strcat (error_buf
, "\n");
145 len
= strlen (error_buf
) + strlen (buf
) + 5;
146 error_buf
= (char *) realloc (error_buf
, len
);
147 strcat (error_buf
, buf
);
151 len
= strlen (buf
) + 5;
152 error_buf
= (char *) malloc (len
);
153 strcpy (error_buf
, buf
);
158 extern "C" int fprintf (FILE *f
, const char *s
, ...);
160 static char stderrbuf
[1000];
163 fprintf (FILE *f
, const char *fmt
, ...)
168 va_start (args
, fmt
);
171 rv
= vsprintf (buf
, fmt
, args
);
172 strcat (stderrbuf
, buf
);
173 if (char *nl
= strchr (stderrbuf
, '\n'))
176 /*OutputDebugString (stderrbuf);*/
177 MessageBox (0, buf
, "Cygwin Setup", 0);
184 rv
= vfprintf (f
, fmt
, args
);
This page took 0.043926 seconds and 5 git commands to generate.