comparison dmd/root.c @ 336:aaade6ded589 trunk

[svn r357] Merged DMD 1.033
author lindquist
date Sat, 12 Jul 2008 19:38:31 +0200
parents 2b72433d5c8c
children 6bd99cc5eb08
comparison
equal deleted inserted replaced
335:17b844102023 336:aaade6ded589
496 #endif 496 #endif
497 } 497 }
498 498
499 /******************************** 499 /********************************
500 * Return filename extension (read-only). 500 * Return filename extension (read-only).
501 * Points past '.' of extension.
501 * If there isn't one, return NULL. 502 * If there isn't one, return NULL.
502 */ 503 */
503 504
504 char *FileName::ext(const char *str) 505 char *FileName::ext(const char *str)
505 { 506 {
517 break; 518 break;
518 #endif 519 #endif
519 #if _WIN32 520 #if _WIN32
520 case '\\': 521 case '\\':
521 case ':': 522 case ':':
523 case '/':
522 break; 524 break;
523 #endif 525 #endif
524 default: 526 default:
525 if (e == str) 527 if (e == str)
526 break; 528 break;
532 } 534 }
533 535
534 char *FileName::ext() 536 char *FileName::ext()
535 { 537 {
536 return ext(str); 538 return ext(str);
539 }
540
541 /********************************
542 * Return mem.malloc'd filename with extension removed.
543 */
544
545 char *FileName::removeExt(const char *str)
546 {
547 const char *e = ext(str);
548 if (e)
549 { size_t len = (e - str) - 1;
550 char *n = (char *)mem.malloc(len + 1);
551 memcpy(n, str, len);
552 n[len] = 0;
553 return n;
554 }
555 return mem.strdup(str);
537 } 556 }
538 557
539 /******************************** 558 /********************************
540 * Return filename name excluding path (read-only). 559 * Return filename name excluding path (read-only).
541 */ 560 */
1061 int fd; 1080 int fd;
1062 ssize_t numwritten; 1081 ssize_t numwritten;
1063 char *name; 1082 char *name;
1064 1083
1065 name = this->name->toChars(); 1084 name = this->name->toChars();
1066 fd = open(name, O_CREAT | O_WRONLY | O_TRUNC, 0660); 1085 fd = open(name, O_CREAT | O_WRONLY | O_TRUNC, 0644);
1067 if (fd == -1) 1086 if (fd == -1)
1068 goto err; 1087 goto err;
1069 1088
1070 numwritten = ::write(fd, buffer, len); 1089 numwritten = ::write(fd, buffer, len);
1071 if (len != numwritten) 1090 if (len != numwritten)
1395 void OutBuffer::writebstring(unsigned char *string) 1414 void OutBuffer::writebstring(unsigned char *string)
1396 { 1415 {
1397 write(string,*string + 1); 1416 write(string,*string + 1);
1398 } 1417 }
1399 1418
1400 void OutBuffer::writestring(char *string) 1419 void OutBuffer::writestring(const char *string)
1401 { 1420 {
1402 write(string,strlen(string)); 1421 write(string,strlen(string));
1403 } 1422 }
1404 1423
1405 void OutBuffer::writedstring(const char *string) 1424 void OutBuffer::writedstring(const char *string)