/[CvsGraph]/cvsgraph/cvsgraph.c
ViewVC logotype

Diff of /cvsgraph/cvsgraph.c

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.21, Mon Feb 18 01:31:34 2002 UTC revision 1.22, Tue Apr 23 23:02:54 2002 UTC
# Line 508  Line 508 
508          qsort(sdelta, nsdelta, sizeof(sdelta[0]), sort_delta);          qsort(sdelta, nsdelta, sizeof(sdelta[0]), sort_delta);
509    
510          /* Do the same for the delta text */          /* Do the same for the delta text */
511          nsdtext = rcs->dtexts->ndtexts;          if(rcs->dtexts)
512          sdtext = xmalloc(nsdtext * sizeof(sdtext[0]));          {
513          memcpy(sdtext, rcs->dtexts->dtexts, nsdtext * sizeof(sdtext[0]));                  nsdtext = rcs->dtexts->ndtexts;
514          qsort(sdtext, nsdtext, sizeof(sdtext[0]), sort_dtext);                  sdtext = xmalloc(nsdtext * sizeof(sdtext[0]));
515                    memcpy(sdtext, rcs->dtexts->dtexts, nsdtext * sizeof(sdtext[0]));
516                    qsort(sdtext, nsdtext, sizeof(sdtext[0]), sort_dtext);
517            }
518            else
519            {
520                    nsdtext = 0;
521                    sdtext = NULL;
522            }
523    
524          /* Start from the head of the trunk */          /* Start from the head of the trunk */
525          head = find_delta(sdelta, nsdelta, rcs->head);          head = find_delta(sdelta, nsdelta, rcs->head);
# Line 792  Line 800 
800          xfree(buf);          xfree(buf);
801  }  }
802    
803    static void add_string_str_html(const char *s, int maxlen)
804    {
805            int l = 0;
806            char *str = xmalloc(6 * strlen(s) + 1); /* Should hold all char entity-expand */
807            char *cptr = str;
808            for(; *s; s++)
809            {
810                    if(maxlen && l > abs(maxlen))
811                    {
812                            cptr += sprintf(cptr, "...");
813                            break;
814                    }
815                    if(*s < 0x20)
816                    {
817                            if(*s == '\n')
818                            {
819                                    if(maxlen < 0)
820                                            *cptr++ = ' ';
821                                    else
822                                            cptr += sprintf(cptr, "<br>");
823                            }
824                    }
825                    else if(*s >= 0x7f)
826                            cptr += sprintf(cptr, "&#%d;", (int)(unsigned char)*s);
827                    else if(*s == '<')
828                            cptr += sprintf(cptr, "&lt;");
829                    else if(*s == '>')
830                            cptr += sprintf(cptr, "&gt;");
831                    else
832                            *cptr++ = *s;
833                    l++;
834            }
835            *cptr = '\0';
836            add_string_str(str);
837            xfree(str);
838    }
839    
840    static void add_string_str_len(const char *s, int maxlen)
841    {
842            int l = strlen(s);
843            char *str = xmalloc(l + 1 + 3);
844            strcpy(str, s);
845            if(maxlen < l)
846                    sprintf(&str[maxlen], "...");
847            add_string_str(str);
848            xfree(str);
849    }
850    
851  char *expand_string(const char *s, rcsfile_t *rcs, revision_t *r, rev_t *rev, rev_t *prev, tag_t *tag)  char *expand_string(const char *s, rcsfile_t *rcs, revision_t *r, rev_t *rev, rev_t *prev, tag_t *tag)
852  {  {
853          char nb[32];          char nb[32];
854          char nr[32];          char nr[32];
855          char *base;          char *base;
856            int l;
857            char ch;
858    
859          if(!s)          if(!s)
860                  return xstrdup("");                  return xstrdup("");
# Line 886  Line 944 
944                          case 'd': if(r && r->delta && r->delta->date) add_string_date(r->delta->date); break;                          case 'd': if(r && r->delta && r->delta->date) add_string_date(r->delta->date); break;
945                          case 's': if(r && r->delta && r->delta->state) add_string_str(r->delta->state); break;                          case 's': if(r && r->delta && r->delta->state) add_string_str(r->delta->state); break;
946                          case 'a': if(r && r->delta && r->delta->author) add_string_str(r->delta->author); break;                          case 'a': if(r && r->delta && r->delta->author) add_string_str(r->delta->author); break;
947                            case 'L':
948                            case 'l':
949                                    ch = *s;
950                                    l = 0;
951                                    if(s[1] == '[')
952                                    {
953                                            char *cptr = strchr(s, ']');
954                                            char *eptr;
955                                            if(cptr)
956                                            {
957                                                    l = strtol(&s[2], &eptr, 10);
958                                                    if(eptr != cptr)
959                                                            l = 0;
960                                                    else
961                                                            s = cptr;
962                                            }
963                                    }
964                                    if(!conf.parse_logs)
965                                            add_string_str("N/A");
966                                    else if(r && r->dtext && r->dtext->log)
967                                    {
968                                            if(ch == 'l')
969                                                    add_string_str_html(r->dtext->log, l);
970                                            else
971                                                    add_string_str_len(r->dtext->log, abs(l));
972                                    }
973                                    break;
974                          default:                          default:
975                                  add_string_ch('%');                                  add_string_ch('%');
976                                  add_string_ch(*s);                                  add_string_ch(*s);
# Line 935  Line 1020 
1020          }          }
1021          if(n > m)          if(n > m)
1022                  m = n;                  m = n;
1023          return m * f->gdfont->w;          return f->gdfont ? m * f->gdfont->w : m;
1024  }  }
1025    
1026  static int get_sheight(const char *s, font_t *f)  static int get_sheight(const char *s, font_t *f)
# Line 1959  Line 2044 
2044                                  alt = expand_string(conf.map_diff_alt, rcs, r, r->rev, r1->rev, tag);                                  alt = expand_string(conf.map_diff_alt, rcs, r, r->rev, r1->rev, tag);
2045                                  fprintf(fp, "\t<area shape=\"rect\" %s coords=\"%d,%d,%d,%d\" %s>\n",                                  fprintf(fp, "\t<area shape=\"rect\" %s coords=\"%d,%d,%d,%d\" %s>\n",
2046                                          href,                                          href,
2047                                          x1, y1 + 1, x2, y2 - 1,                                          x1, (conf.upside_down ? y2 : y1) + 1, x2, (conf.upside_down ? y1 : y2) - 1,
2048                                          alt);                                          alt);
2049                                  xfree(href);                                  xfree(href);
2050                                  xfree(alt);                                  xfree(alt);
# Line 2010  Line 2095 
2095          "  -[0-9] <txt> Use <txt> for expansion\n"          "  -[0-9] <txt> Use <txt> for expansion\n"
2096          ;          ;
2097    
2098  #define VERSION_STR     "1.2.0"  #define VERSION_STR     "1.2.1"
2099  #define NOTICE_STR      "Copyright (c) 2001,2002 B.Stultiens"  #define NOTICE_STR      "Copyright (c) 2001,2002 B.Stultiens"
2100    
2101  static void append_slash(char **path)  static void append_slash(char **path)

Legend:
Removed from v.1.21  
changed lines
  Added in v.1.22

  ViewVC Help
Powered by ViewVC 1.1.0 with CvsGraph 1.7.0