Fossil SCM
Match committer / tag name <email> with a user's contact info record. If not found, then use the email address as the user name.
Commit
8f901ff570953cc68b22273c0743e3632a1f547d
Parent
9501d941d5c1646…
1 file changed
+16
-9
+16
-9
| --- src/import.c | ||
| +++ src/import.c | ||
| @@ -623,21 +623,28 @@ | ||
| 623 | 623 | fossil_free(gg.zMark); |
| 624 | 624 | gg.zMark = fossil_strdup(&zLine[5]); |
| 625 | 625 | }else |
| 626 | 626 | if( strncmp(zLine, "tagger ", 7)==0 || strncmp(zLine, "committer ",10)==0 ){ |
| 627 | 627 | sqlite3_int64 secSince1970; |
| 628 | - for(i=0; zLine[i] && zLine[i]!='<'; i++){} | |
| 629 | - if( zLine[i]==0 ) goto malformed_line; | |
| 630 | - z = &zLine[i+1]; | |
| 631 | - for(i=i+1; zLine[i] && zLine[i]!='>'; i++){} | |
| 632 | - if( zLine[i]==0 ) goto malformed_line; | |
| 633 | - zLine[i] = 0; | |
| 628 | + z = strchr(zLine, ' '); | |
| 629 | + while( fossil_isspace(*z) ) z++; | |
| 630 | + if( (zTo=strchr(z, '>'))==NULL ) goto malformed_line; | |
| 631 | + *(++zTo) = '\0'; | |
| 632 | + /* Lookup user by contact info. */ | |
| 634 | 633 | fossil_free(gg.zUser); |
| 635 | - gg.zUser = fossil_strdup(z); | |
| 634 | + gg.zUser = db_text(0, "SELECT login FROM user WHERE info=%Q", z); | |
| 635 | + if( gg.zUser==NULL ){ | |
| 636 | + /* If there is no user with this contact info, | |
| 637 | + * then use the email address as the username. */ | |
| 638 | + if ( (z=strchr(z, '<'))==NULL ) goto malformed_line; | |
| 639 | + z++; | |
| 640 | + *(zTo-1) = '\0'; | |
| 641 | + gg.zUser = fossil_strdup(z); | |
| 642 | + } | |
| 636 | 643 | secSince1970 = 0; |
| 637 | - for(i=i+2; fossil_isdigit(zLine[i]); i++){ | |
| 638 | - secSince1970 = secSince1970*10 + zLine[i] - '0'; | |
| 644 | + for(zTo++; fossil_isdigit(*zTo); zTo++){ | |
| 645 | + secSince1970 = secSince1970*10 + *zTo - '0'; | |
| 639 | 646 | } |
| 640 | 647 | fossil_free(gg.zDate); |
| 641 | 648 | gg.zDate = db_text(0, "SELECT datetime(%lld, 'unixepoch')", secSince1970); |
| 642 | 649 | gg.zDate[10] = 'T'; |
| 643 | 650 | }else |
| 644 | 651 |
| --- src/import.c | |
| +++ src/import.c | |
| @@ -623,21 +623,28 @@ | |
| 623 | fossil_free(gg.zMark); |
| 624 | gg.zMark = fossil_strdup(&zLine[5]); |
| 625 | }else |
| 626 | if( strncmp(zLine, "tagger ", 7)==0 || strncmp(zLine, "committer ",10)==0 ){ |
| 627 | sqlite3_int64 secSince1970; |
| 628 | for(i=0; zLine[i] && zLine[i]!='<'; i++){} |
| 629 | if( zLine[i]==0 ) goto malformed_line; |
| 630 | z = &zLine[i+1]; |
| 631 | for(i=i+1; zLine[i] && zLine[i]!='>'; i++){} |
| 632 | if( zLine[i]==0 ) goto malformed_line; |
| 633 | zLine[i] = 0; |
| 634 | fossil_free(gg.zUser); |
| 635 | gg.zUser = fossil_strdup(z); |
| 636 | secSince1970 = 0; |
| 637 | for(i=i+2; fossil_isdigit(zLine[i]); i++){ |
| 638 | secSince1970 = secSince1970*10 + zLine[i] - '0'; |
| 639 | } |
| 640 | fossil_free(gg.zDate); |
| 641 | gg.zDate = db_text(0, "SELECT datetime(%lld, 'unixepoch')", secSince1970); |
| 642 | gg.zDate[10] = 'T'; |
| 643 | }else |
| 644 |
| --- src/import.c | |
| +++ src/import.c | |
| @@ -623,21 +623,28 @@ | |
| 623 | fossil_free(gg.zMark); |
| 624 | gg.zMark = fossil_strdup(&zLine[5]); |
| 625 | }else |
| 626 | if( strncmp(zLine, "tagger ", 7)==0 || strncmp(zLine, "committer ",10)==0 ){ |
| 627 | sqlite3_int64 secSince1970; |
| 628 | z = strchr(zLine, ' '); |
| 629 | while( fossil_isspace(*z) ) z++; |
| 630 | if( (zTo=strchr(z, '>'))==NULL ) goto malformed_line; |
| 631 | *(++zTo) = '\0'; |
| 632 | /* Lookup user by contact info. */ |
| 633 | fossil_free(gg.zUser); |
| 634 | gg.zUser = db_text(0, "SELECT login FROM user WHERE info=%Q", z); |
| 635 | if( gg.zUser==NULL ){ |
| 636 | /* If there is no user with this contact info, |
| 637 | * then use the email address as the username. */ |
| 638 | if ( (z=strchr(z, '<'))==NULL ) goto malformed_line; |
| 639 | z++; |
| 640 | *(zTo-1) = '\0'; |
| 641 | gg.zUser = fossil_strdup(z); |
| 642 | } |
| 643 | secSince1970 = 0; |
| 644 | for(zTo++; fossil_isdigit(*zTo); zTo++){ |
| 645 | secSince1970 = secSince1970*10 + *zTo - '0'; |
| 646 | } |
| 647 | fossil_free(gg.zDate); |
| 648 | gg.zDate = db_text(0, "SELECT datetime(%lld, 'unixepoch')", secSince1970); |
| 649 | gg.zDate[10] = 'T'; |
| 650 | }else |
| 651 |