Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(659)

Side by Side Diff: third_party/yasm/patched-yasm/libyasm/file.c

Issue 6170009: Update our yasm copy to yasm 1.1.0 (Part 1: yasm side)... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/
Patch Set: Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * File helper functions. 2 * File helper functions.
3 * 3 *
4 * Copyright (C) 2001-2007 Peter Johnson 4 * Copyright (C) 2001-2007 Peter Johnson
5 * 5 *
6 * Redistribution and use in source and binary forms, with or without 6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions 7 * modification, are permitted provided that the following conditions
8 * are met: 8 * are met:
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright 11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the 12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution. 13 * documentation and/or other materials provided with the distribution.
14 * 14 *
15 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS'' 15 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE 18 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25 * POSSIBILITY OF SUCH DAMAGE. 25 * POSSIBILITY OF SUCH DAMAGE.
26 */ 26 */
27 #include <util.h> 27 #include <util.h>
28 /*@unused@*/ RCSID("$Id: file.c 2116 2008-07-15 05:49:29Z peter $"); 28 /*@unused@*/ RCSID("$Id: file.c 2287 2010-02-13 08:42:27Z peter $");
29 29
30 /* Need either unistd.h or direct.h (on Windows) to prototype getcwd() */ 30 /* Need either unistd.h or direct.h (on Windows) to prototype getcwd() */
31 #if defined(HAVE_UNISTD_H) 31 #if defined(HAVE_UNISTD_H)
32 #include <unistd.h> 32 #include <unistd.h>
33 #elif defined(HAVE_DIRECT_H) 33 #elif defined(HAVE_DIRECT_H)
34 #include <direct.h> 34 #include <direct.h>
35 #endif 35 #endif
36 36
37 #ifdef _WIN32
38 #include <io.h>
39 #endif
40
41 #ifdef HAVE_SYS_STAT_H
42 #include <sys/stat.h>
43 #endif
44
37 #include <ctype.h> 45 #include <ctype.h>
38 #include <errno.h> 46 #include <errno.h>
39 47
40 #include "errwarn.h" 48 #include "errwarn.h"
41 #include "file.h" 49 #include "file.h"
42 50
43 #define BSIZE 8192 /* Fill block size */ 51 #define BSIZE 8192 /* Fill block size */
44 52
45 53
46 void 54 void
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
228 } 236 }
229 237
230 char * 238 char *
231 yasm__getcwd(void) 239 yasm__getcwd(void)
232 { 240 {
233 char *buf; 241 char *buf;
234 size_t size; 242 size_t size;
235 243
236 size = 1024; 244 size = 1024;
237 buf = yasm_xmalloc(size); 245 buf = yasm_xmalloc(size);
238 while (getcwd(buf, size) == NULL) { 246 while (getcwd(buf, size-1) == NULL) {
239 if (errno != ERANGE) { 247 if (errno != ERANGE) {
240 yasm__fatal(N_("could not determine current working directory")); 248 yasm__fatal(N_("could not determine current working directory"));
241 yasm_xfree(buf); 249 yasm_xfree(buf);
242 return NULL; 250 return NULL;
243 } 251 }
244 size *= 2; 252 size *= 2;
245 buf = yasm_xrealloc(buf, size); 253 buf = yasm_xrealloc(buf, size);
246 } 254 }
255
256 /* append a '/' if not already present */
257 size = strlen(buf);
258 if (buf[size-1] != '\\' && buf[size-1] != '/') {
259 buf[size] = '/';
260 buf[size+1] = '\0';
261 }
247 return buf; 262 return buf;
248 } 263 }
249 264
250 char * 265 char *
251 yasm__abspath(const char *path) 266 yasm__abspath(const char *path)
252 { 267 {
253 char *curdir, *abspath; 268 char *curdir, *abspath;
254 269
255 curdir = yasm__getcwd(); 270 curdir = yasm__getcwd();
256 abspath = yasm__combpath(curdir, path); 271 abspath = yasm__combpath(curdir, path);
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
436 if (*to == '/') 451 if (*to == '/')
437 out[j++] = '\\'; 452 out[j++] = '\\';
438 else 453 else
439 out[j++] = *to; 454 out[j++] = *to;
440 } 455 }
441 out[j++] = '\0'; 456 out[j++] = '\0';
442 457
443 return out; 458 return out;
444 } 459 }
445 460
461 size_t
462 yasm__createpath_common(const char *path, int win)
463 {
464 const char *pp = path, *pe;
465 char *ts, *tp;
466 size_t len, lth;
467
468 lth = len = strlen(path);
469 ts = tp = (char *) malloc(len + 1);
470 pe = pp + len;
471 while (pe > pp) {
472 if ((win && *pe == '\\') || *pe == '/')
473 break;
474 --pe;
475 --lth;
476 }
477
478 while (pp <= pe) {
479 if (pp == pe || (win && *pp == '\\') || *pp == '/') {
480 #ifdef _WIN32
481 struct _finddata_t fi;
482 intptr_t h;
483 #elif defined(HAVE_SYS_STAT_H)
484 struct stat fi;
485 #endif
486 *tp = '\0';
487
488 #ifdef _WIN32
489 h = _findfirst(ts, &fi);
490 if (h != -1) {
491 if (fi.attrib != _A_SUBDIR) {
492 _findclose(h);
493 break;
494 }
495 } else if (errno == ENOENT) {
496 if (_mkdir(ts) == -1) {
497 _findclose(h);
498 lth = -1;
499 break;
500 }
501 }
502 _findclose(h);
503 #elif defined(HAVE_SYS_STAT_H)
504 if (stat(ts, &fi) != -1) {
505 if (!S_ISDIR(fi.st_mode))
506 break;
507 } else if (errno == ENOENT) {
508 if (mkdir(ts, 0755) == -1) {
509 lth = 0;
510 break;
511 }
512 }
513 #else
514 break;
515 #endif
516 }
517 *tp++ = *pp++;
518 }
519 free(ts);
520 return lth;
521 }
522
446 typedef struct incpath { 523 typedef struct incpath {
447 STAILQ_ENTRY(incpath) link; 524 STAILQ_ENTRY(incpath) link;
448 /*@owned@*/ char *path; 525 /*@owned@*/ char *path;
449 } incpath; 526 } incpath;
450 527
451 STAILQ_HEAD(, incpath) incpaths = STAILQ_HEAD_INITIALIZER(incpaths); 528 STAILQ_HEAD(incpath_head, incpath) incpaths = STAILQ_HEAD_INITIALIZER(incpaths);
452 529
453 FILE * 530 FILE *
454 yasm_fopen_include(const char *iname, const char *from, const char *mode, 531 yasm_fopen_include(const char *iname, const char *from, const char *mode,
455 char **oname) 532 char **oname)
456 { 533 {
457 FILE *f; 534 FILE *f;
458 char *combine; 535 char *combine;
459 incpath *np; 536 incpath *np;
460 537
461 /* Try directly relative to from first, then each of the include paths */ 538 /* Try directly relative to from first, then each of the include paths */
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
579 if (fputc((int)((val >> 24) & 0xFF), f) == EOF) 656 if (fputc((int)((val >> 24) & 0xFF), f) == EOF)
580 return 0; 657 return 0;
581 if (fputc((int)((val >> 16) & 0xFF), f) == EOF) 658 if (fputc((int)((val >> 16) & 0xFF), f) == EOF)
582 return 0; 659 return 0;
583 if (fputc((int)((val >> 8) & 0xFF), f) == EOF) 660 if (fputc((int)((val >> 8) & 0xFF), f) == EOF)
584 return 0; 661 return 0;
585 if (fputc((int)(val & 0xFF), f) == EOF) 662 if (fputc((int)(val & 0xFF), f) == EOF)
586 return 0; 663 return 0;
587 return 1; 664 return 1;
588 } 665 }
OLDNEW
« no previous file with comments | « third_party/yasm/patched-yasm/libyasm/file.h ('k') | third_party/yasm/patched-yasm/libyasm/intnum.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698