Index: src/attach.c ================================================================== --- src/attach.c +++ src/attach.c @@ -71,10 +71,11 @@ const char *zFilename = db_column_text(&q, 3); const char *zComment = db_column_text(&q, 4); const char *zUser = db_column_text(&q, 5); const char *zUuid = db_column_text(&q, 6); int attachid = db_column_int(&q, 7); + const char *zDispUser = zUser && zUser[0] ? zUser : "anonymous"; int i; char *zUrlTail; for(i=0; zFilename[i]; i++){ if( zFilename[i]=='/' && zFilename[i+1]!=0 ){ zFilename = &zFilename[i+1]; @@ -115,11 +116,11 @@ @ Deleted }else { @ Added } } - @ by %h(zUser) on + @ by %h(zDispUser) on hyperlink_to_date(zDate, "."); free(zUrlTail); } db_finalize(&q); @ </ol> @@ -557,17 +558,18 @@ const char *zDate = db_column_text(&q, 0); const char *zFile = db_column_text(&q, 1); const char *zUser = db_column_text(&q, 2); const char *zUuid = db_column_text(&q, 3); const char *zSrc = db_column_text(&q, 4); + const char *zDispUser = zUser && zUser[0] ? zUser : "anonymous"; if( cnt==0 ){ @ %s(zHeader) } cnt++; @ <li> @ %z(href("%R/artifact/%s",zSrc))%h(zFile)</a> - @ added by %h(zUser) on + @ added by %h(zDispUser) on hyperlink_to_date(zDate, "."); @ [%z(href("%R/ainfo/%s",zUuid))details</a>] @ </li> } if( cnt ){ Index: src/timeline.c ================================================================== --- src/timeline.c +++ src/timeline.c @@ -85,10 +85,11 @@ ** Generate a hyperlink to a user. This will link to a timeline showing ** events by that user. If the date+time is specified, then the timeline ** is centered on that date+time. */ void hyperlink_to_user(const char *zU, const char *zD, const char *zSuf){ + if( zU==0 || zU[0]==0 ) zU = "anonymous"; if( zSuf==0 ) zSuf = ""; if( g.perm.Hyperlink ){ if( zD && zD[0] ){ @ %z(href("%R/timeline?c=%T&u=%T",zD,zU))%h(zU)</a>%s(zSuf) }else{ @@ -237,10 +238,11 @@ const char *zDate = db_column_text(pQuery, 2); const char *zType = db_column_text(pQuery, 7); const char *zUser = db_column_text(pQuery, 4); const char *zTagList = db_column_text(pQuery, 8); int tagid = db_column_int(pQuery, 9); + const char *zDispUser = zUser && zUser[0] ? zUser : "anonymous"; const char *zBr = 0; /* Branch */ int commentColumn = 3; /* Column containing comment text */ int modPending; /* Pending moderation */ char zTime[8]; @@ -372,15 +374,15 @@ /* Generate the "user: USERNAME" at the end of the comment, together ** with a hyperlink to another timeline for that user. */ if( zTagList && zTagList[0]==0 ) zTagList = 0; - if( g.perm.Hyperlink && fossil_strcmp(zUser, zThisUser)!=0 ){ - char *zLink = mprintf("%R/timeline?u=%h&c=%t&nd", zUser, zDate); - @ (user: %z(href("%z",zLink))%h(zUser)</a>%s(zTagList?",":"\051") + if( g.perm.Hyperlink && fossil_strcmp(zDispUser, zThisUser)!=0 ){ + char *zLink = mprintf("%R/timeline?u=%h&c=%t&nd", zDispUser, zDate); + @ (user: %z(href("%z",zLink))%h(zDispUser)</a>%s(zTagList?",":"\051") }else{ - @ (user: %h(zUser)%s(zTagList?",":"\051") + @ (user: %h(zDispUser)%s(zTagList?",":"\051") } /* Generate a "detail" link for tags. */ if( (zType[0]=='g' || zType[0]=='w' || zType[0]=='t') && g.perm.Hyperlink ){ @ [%z(href("%R/info/%S",zUuid))details</a>]