/[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.8, Sun Mar 4 03:19:18 2001 UTC revision 1.11, Sat Mar 10 22:11:27 2001 UTC
# Line 32  Line 32 
32  #include <errno.h>  #include <errno.h>
33  #include <getopt.h>  #include <getopt.h>
34  #include <ctype.h>  #include <ctype.h>
35    #include <time.h>
36    
37  #include <gd.h>  #include <gd.h>
38  #include <gdfontt.h>  #include <gdfontt.h>
39    
# Line 66  Line 67 
67  #define ALIGN_HL        0x00  #define ALIGN_HL        0x00
68  #define ALIGN_HC        0x01  #define ALIGN_HC        0x01
69  #define ALIGN_HR        0x02  #define ALIGN_HR        0x02
70  #define ALIGN_HX        0x0f  #define ALIGN_HX        0x0f
71  #define ALIGN_VT        0x00  #define ALIGN_VT        0x00
72  #define ALIGN_VC        0x10  #define ALIGN_VC        0x10
73  #define ALIGN_VB        0x20  #define ALIGN_VB        0x20
74  #define ALIGN_VX        0xf0  #define ALIGN_VX        0xf0
75    
76  /*  /*
77   **************************************************************************   **************************************************************************
78   * Globals   * Globals
# Line 80  Line 81 
81    
82  config_t conf;  config_t conf;
83  int debuglevel;  int debuglevel;
84    color_t white_color = {255, 255, 255, 0};
85    color_t black_color = {0, 0, 0, 0};
86    
87    
88  /*  /*
89   **************************************************************************   **************************************************************************
# Line 195  Line 199 
199          char *cmd = NULL;          char *cmd = NULL;
200          int rv;          int rv;
201    
202          cmd = xmalloc(strlen(cvsroot) + strlen(module) + strlen(file) + 2 + 1);          cmd = xmalloc(strlen(cvsroot) + strlen(module) + strlen(file) + 1);
203          sprintf(cmd, "%s/%s/%s", cvsroot, module, file);          sprintf(cmd, "%s%s%s", cvsroot, module, file);
204          if(!(rcsin = fopen(cmd, "r")))          if(!(rcsin = fopen(cmd, "r")))
205            {
206                    perror(cmd);
207                  return NULL;                  return NULL;
208            }
209          input_file = cmd;          input_file = cmd;
210          line_number = 1;          line_number = 1;
211          rv = rcsparse();          rv = rcsparse();
# Line 440  Line 447 
447                  /* Walk through the next list */                  /* Walk through the next list */
448                  if(!head->next)                  if(!head->next)
449                          return;                          return;
450    
451                  head = find_delta(sdl, nsdl, head->next);                  head = find_delta(sdl, nsdl, head->next);
452                  if(!head)                  if(!head)
453                  {                  {
# Line 554  Line 561 
561          char *cptr;          char *cptr;
562          char *r;          char *r;
563          if(!dots)          if(!dots)
564            {
565                    fprintf(stderr, "FIXME: previous_rev(\"%s\"): Cannot determine parent branch revision\n", c);
566                  return xstrdup("1.0");  /* FIXME: don't know what the parent is */                  return xstrdup("1.0");  /* FIXME: don't know what the parent is */
567            }
568          if(dots & 1)          if(dots & 1)
569          {          {
570                  /* Is is a revision we want the parent of */                  /* Is is a revision we want the parent of */
# Line 563  Line 573 
573                  assert(cptr != NULL);                  assert(cptr != NULL);
574                  if(dots == 1)                  if(dots == 1)
575                  {                  {
576                            fprintf(stderr, "FIXME: previous_rev(\"%s\"): Going beyond top-level?\n", c);
577                          /* FIXME: What is the parent of 1.1? */                          /* FIXME: What is the parent of 1.1? */
578                          cptr[1] = '\0';                          cptr[1] = '\0';
579                          strcat(r, "0");                          strcat(r, "0");
# Line 725  Line 736 
736          add_string_str(buf);          add_string_str(buf);
737  }  }
738    
739  char *expand_string(const char *s, rcsfile_t *rcs, rev_t *rev, tag_t *tag)  void add_string_date(const char *d)
740    {
741            struct tm tm, *tmp;
742            int n;
743            time_t t;
744            char *buf;
745            int nbuf;
746    
747            memset(&tm, 0, sizeof(tm));
748            n = sscanf(d, "%d.%d.%d.%d.%d.%d",
749                            &tm.tm_year, &tm.tm_mon, &tm.tm_mday,
750                            &tm.tm_hour, &tm.tm_min, &tm.tm_sec);
751            tm.tm_mon--;
752            if(tm.tm_year > 1900)
753                    tm.tm_year -= 1900;
754            t = mktime(&tm);
755            if(n != 6 || t == (time_t)(-1))
756            {
757                    add_string_str("<invalid date>");
758                    return;
759            }
760    
761            tmp = localtime(&t);
762            nbuf = strlen(conf.date_format) * 16;   /* Should be enough to hold all types of expansions */
763            buf = xmalloc(nbuf);
764            strftime(buf, nbuf, conf.date_format, tmp);
765            add_string_str(buf);
766            xfree(buf);
767    }
768    
769    char *expand_string(const char *s, rcsfile_t *rcs, revision_t *r, rev_t *rev, rev_t *prev, tag_t *tag)
770  {  {
771          char nb[32];          char nb[32];
772          char nr[32];          char nr[32];
# Line 771  Line 812 
812                                          add_string_str(c);                                          add_string_str(c);
813                                          xfree(c);                                          xfree(c);
814                                  }                                  }
815                                  else                                  /*
816                                          add_string_str("/");                                   * We should not add anything here because we can encounter
817                                     * a completely empty path, in which case we do not want
818                                     * to add any slash. This prevents a inadvertent root redirect.
819                                     *
820                                     * else
821                                     *      add_string_str("/");
822                                     */
823                                  break;                                  break;
824                          case 'm': add_string_str(conf.cvsmodule); break;                          case 'm': add_string_str(conf.cvsmodule); break;
825                          case 'r': add_string_str(nr); break;                          case 'r': add_string_str(nr); break;
# Line 789  Line 836 
836                          case '8': if(conf.expand[8]) add_string_str(conf.expand[8]); break;                          case '8': if(conf.expand[8]) add_string_str(conf.expand[8]); break;
837                          case '9': if(conf.expand[9]) add_string_str(conf.expand[9]); break;                          case '9': if(conf.expand[9]) add_string_str(conf.expand[9]); break;
838                          case 'R': if(rev && rev->rev) add_string_str(rev->rev); break;                          case 'R': if(rev && rev->rev) add_string_str(rev->rev); break;
839                            case 'P': if(prev && prev->rev) add_string_str(prev->rev); break;
840                          case 'B': if(rev && rev->branch) add_string_str(rev->branch); break;                          case 'B': if(rev && rev->branch) add_string_str(rev->branch); break;
841                          case 't': if(tag && tag->tag) add_string_str(tag->tag); break;                          case 't': if(tag && tag->tag) add_string_str(tag->tag); break;
842                            case 'd': if(r && r->delta && r->delta->date) add_string_date(r->delta->date); break;
843                            case 's': if(r && r->delta && r->delta->state) add_string_str(r->delta->state); break;
844                            case 'a': if(r && r->delta && r->delta->author) add_string_str(r->delta->author); break;
845                          default:                          default:
846                                  add_string_ch('%');                                  add_string_ch('%');
847                                  add_string_ch(*s);                                  add_string_ch(*s);
# Line 810  Line 861 
861   */   */
862  int get_swidth(const char *s, font_t *f)  int get_swidth(const char *s, font_t *f)
863  {  {
864          if(!s)          int n;
865            int m;
866            if(!s || !*s)
867                  return 0;                  return 0;
868          return strlen(s) * (*f)->w;          for(n = m = 0; *s; n++, s++)
869            {
870                    if(*s == '\n')
871                    {
872                            if(n > m)
873                                    m = n;
874                            n = 0;
875                    }
876            }
877            if(n > m)
878                    m = n;
879            return m * (*f)->w;
880  }  }
881    
882  int get_sheight(const char *s, font_t *f)  int get_sheight(const char *s, font_t *f)
883  {  {
884          int nl;          int nl;
885          if(!s)          if(!s || !*s)
886                  return 0;                  return 0;
887          for(nl = 1; *s; s++)          for(nl = 1; *s; s++)
888          {          {
# Line 828  Line 892 
892          return nl * (*f)->h;          return nl * (*f)->h;
893  }  }
894    
895  void draw_rbox(gdImagePtr im, int x1, int y1, int x2, int y2, int r, color_t *color)  void draw_rbox(gdImagePtr im, int x1, int y1, int x2, int y2, int r, color_t *color, color_t *bgcolor)
896  {  {
897          int r2 = 2*r;          int r2 = 2*r;
898          gdImageLine(im, x1+r, y1, x2-r, y1, color->id);          gdImageLine(im, x1+r, y1, x2-r, y1, color->id);
899          gdImageLine(im, x1+r, y2, x2-r, y2, color->id);          gdImageLine(im, x1+r, y2, x2-r, y2, color->id);
900          gdImageLine(im, x1, y1+r, x1, y2-r, color->id);          gdImageLine(im, x1, y1+r, x1, y2-r, color->id);
901          gdImageLine(im, x2, y1+r, x2, y2-r, color->id);          gdImageLine(im, x2, y1+r, x2, y2-r, color->id);
902            if(conf.box_shadow)
903            {
904                    gdImageLine(im, x1+r+1, y2+1, x2-r, y2+1, black_color.id);
905                    gdImageLine(im, x2+1, y1+r+1, x2+1, y2-r, black_color.id);
906            }
907          if(r)          if(r)
908          {          {
909                  gdImageArc(im, x1+r, y1+r, r2, r2, 180, 270, color->id);                  gdImageArc(im, x1+r, y1+r, r2, r2, 180, 270, color->id);
910                  gdImageArc(im, x2-r, y1+r, r2, r2, 270, 360, color->id);                  gdImageArc(im, x2-r, y1+r, r2, r2, 270, 360, color->id);
911                  gdImageArc(im, x1+r, y2-r, r2, r2,  90, 180, color->id);                  gdImageArc(im, x1+r, y2-r, r2, r2,  90, 180, color->id);
912                  gdImageArc(im, x2-r, y2-r, r2, r2,   0,  90, color->id);                  gdImageArc(im, x2-r, y2-r, r2, r2,   0,  90, color->id);
913                    if(conf.box_shadow)
914                    {
915                            /* FIXME: Pixelization is not correct here */
916                            gdImageArc(im, x2-r+1, y2-r+1, r2, r2,   0,  90, black_color.id);
917                    }
918          }          }
919            gdImageFillToBorder(im, (x1+x2)/2, (y1+y2)/2, color->id, bgcolor->id);
920  }  }
921    
922  void draw_string(gdImagePtr im, char *s, font_t *f, int x, int y, int align, color_t *c)  void draw_string(gdImagePtr im, char *s, font_t *f, int x, int y, int align, color_t *c)
# Line 864  Line 939 
939          gdImageString(im, *f, x+xx+1, y+yy, s, c->id);          gdImageString(im, *f, x+xx+1, y+yy, s, c->id);
940  }  }
941    
942    void draw_stringnl(gdImagePtr im, char *s, font_t *f, int x, int y, int align, color_t *c)
943    {
944            char *t;
945            char *d;
946            d = s = xstrdup(s);
947            do
948            {
949                    t = strchr(s, '\n');
950                    if(t)
951                            *t = '\0';
952                    draw_string(im, s, f, x, y, align, c);
953                    y += get_sheight(s, f);
954                    s = t+1;
955            } while(t);
956            xfree(d);
957    }
958    
959  void draw_rev(gdImagePtr im, int cx, int ty, revision_t *r)  void draw_rev(gdImagePtr im, int cx, int ty, revision_t *r)
960  {  {
961          int lx = cx - r->w/2;          int lx = cx - r->w/2;
962          int rx = lx + r->w;          int rx = lx + r->w;
963          int i;          int i;
964          draw_rbox(im, lx, ty, rx, ty+r->h, 0, &conf.rev_color);          draw_rbox(im, lx, ty, rx, ty+r->h, 0, &conf.rev_color, &conf.rev_bgcolor);
965          ty += conf.rev_tspace;          ty += conf.rev_tspace;
966          draw_string(im, r->rev->rev, &conf.rev_font, cx, ty, ALIGN_HC, &conf.rev_color);          draw_string(im, r->rev->rev, &conf.rev_font, cx, ty, ALIGN_HC, &conf.rev_color);
967          ty += get_sheight(r->rev->rev, &conf.rev_font);          ty += get_sheight(r->rev->rev, &conf.rev_font);
968            draw_stringnl(im, r->revtext, &conf.rev_text_font, cx, ty, ALIGN_HC, &conf.rev_text_color);
969            ty += get_sheight(r->revtext, &conf.rev_text_font);
970          for(i = 0; i < r->ntags; i++)          for(i = 0; i < r->ntags; i++)
971          {          {
972                  draw_string(im, r->tags[i]->tag, &conf.tag_font, cx, ty, ALIGN_HC, &conf.tag_color);                  draw_string(im, r->tags[i]->tag, &conf.tag_font, cx, ty, ALIGN_HC, &conf.tag_color);
# Line 887  Line 981 
981          int yy;          int yy;
982          int i;          int i;
983          /*draw_rbox(im, cx-b->tw/2-1, ty-1, cx+b->tw/2+1, ty+b->th+1, 0, &conf.title_color);*/          /*draw_rbox(im, cx-b->tw/2-1, ty-1, cx+b->tw/2+1, ty+b->th+1, 0, &conf.title_color);*/
984          draw_rbox(im, lx, ty, rx, ty+b->h, 5, &conf.branch_color);          draw_rbox(im, lx, ty, rx, ty+b->h, 5, &conf.branch_color, &conf.branch_bgcolor);
985          yy = conf.branch_tspace;          yy = conf.branch_tspace;
986          draw_string(im, b->branch->branch, &conf.branch_font, cx, ty+yy, ALIGN_HC, &conf.branch_color);          draw_string(im, b->branch->branch, &conf.branch_font, cx, ty+yy, ALIGN_HC, &conf.branch_color);
987          yy += get_sheight(b->branch->branch, &conf.branch_font);          yy += get_sheight(b->branch->branch, &conf.branch_font);
# Line 907  Line 1001 
1001          }          }
1002  }  }
1003    
 void draw_title(gdImagePtr im, char *title)  
 {  
         char *t;  
         char *s = title;  
         int x = conf.title_x;  
         int y = conf.title_y;  
         do  
         {  
                 t = strchr(s, '\n');  
                 if(t)  
                         *t = '\0';  
                 draw_string(im, s, &conf.title_font, x, y, conf.title_align, &conf.title_color);  
                 y += get_sheight(s, &conf.title_font);  
                 s = t+1;  
         } while(t);  
 }  
   
1004  void draw_connector(gdImagePtr im, branch_t *b)  void draw_connector(gdImagePtr im, branch_t *b)
1005  {  {
1006          revision_t *r = b->branchpoint;          revision_t *r = b->branchpoint;
# Line 935  Line 1012 
1012          gdImageLine(im, x2, y1, x2, y2, conf.branch_color.id);          gdImageLine(im, x2, y1, x2, y2, conf.branch_color.id);
1013  }  }
1014    
1015    void alloc_color(gdImagePtr im, color_t *c)
1016    {
1017            c->id = gdImageColorAllocate(im, c->r, c->g, c->b);
1018    }
1019    
1020  gdImagePtr make_image(rcsfile_t *rcs)  gdImagePtr make_image(rcsfile_t *rcs)
1021  {  {
1022          gdImagePtr im;          gdImagePtr im;
# Line 942  Line 1024 
1024          char *cptr;          char *cptr;
1025    
1026          im = gdImageCreate(rcs->tw+conf.margin_left+conf.margin_right, rcs->th+conf.margin_top+conf.margin_bottom);          im = gdImageCreate(rcs->tw+conf.margin_left+conf.margin_right, rcs->th+conf.margin_top+conf.margin_bottom);
1027          conf.color_bg.id = gdImageColorAllocate(im, conf.color_bg.r, conf.color_bg.g, conf.color_bg.b);          alloc_color(im, &conf.color_bg);
1028          conf.tag_color.id = gdImageColorAllocate(im, conf.tag_color.r, conf.tag_color.g, conf.tag_color.b);          alloc_color(im, &conf.tag_color);
1029          conf.rev_color.id = gdImageColorAllocate(im, conf.rev_color.r, conf.rev_color.g, conf.rev_color.b);          alloc_color(im, &conf.rev_color);
1030          conf.branch_color.id = gdImageColorAllocate(im, conf.branch_color.r, conf.branch_color.g, conf.branch_color.b);          alloc_color(im, &conf.rev_bgcolor);
1031          conf.branch_bgcolor.id = gdImageColorAllocate(im, conf.branch_bgcolor.r, conf.branch_bgcolor.g, conf.branch_bgcolor.b);          alloc_color(im, &conf.rev_text_color);
1032          conf.title_color.id = gdImageColorAllocate(im, conf.title_color.r, conf.title_color.g, conf.title_color.b);          alloc_color(im, &conf.branch_color);
1033            alloc_color(im, &conf.branch_bgcolor);
1034            alloc_color(im, &conf.title_color);
1035            alloc_color(im, &black_color);
1036            alloc_color(im, &white_color);
1037    
1038          for(i = 0; i < rcs->nbranches; i++)          for(i = 0; i < rcs->nbranches; i++)
1039                  draw_branch(im, rcs->branches[i]->cx, rcs->branches[i]->y, rcs->branches[i]);                  draw_branch(im, rcs->branches[i]->cx, rcs->branches[i]->y, rcs->branches[i]);
# Line 956  Line 1042 
1042                  if(rcs->branches[i]->branchpoint)                  if(rcs->branches[i]->branchpoint)
1043                          draw_connector(im, rcs->branches[i]);                          draw_connector(im, rcs->branches[i]);
1044          }          }
1045          cptr = expand_string(conf.title, rcs, NULL, NULL);          cptr = expand_string(conf.title, rcs, NULL, NULL, NULL, NULL);
1046          draw_title(im, cptr);          draw_stringnl(im, cptr, &conf.title_font, conf.title_x, conf.title_y, conf.title_align, &conf.title_color);
1047          xfree(cptr);          xfree(cptr);
1048    
1049          return im;          return im;
# Line 1069  Line 1155 
1155                  int w;                  int w;
1156                  int h;                  int h;
1157                  rp = rcs->srev[i];                  rp = rcs->srev[i];
1158                  w = get_swidth(rp->rev->rev, &conf.rev_font);                  rp->revtext = expand_string(conf.rev_text, rcs, rp, rp->rev, NULL, rp->ntags ? rp->tags[0] : NULL);
1159                  h = get_sheight(rp->rev->rev, &conf.rev_font);                  w = get_swidth(rp->revtext, &conf.rev_text_font);
1160                    j = get_swidth(rp->rev->rev, &conf.rev_font);
1161                    if(j > w)
1162                            w = j;
1163                    h = get_sheight(rp->revtext, &conf.rev_text_font) + get_sheight(rp->rev->rev, &conf.rev_font);
1164                  for(j = 0; j < rp->ntags; j++)                  for(j = 0; j < rp->ntags; j++)
1165                  {                  {
1166                          int ww = get_swidth(rp->tags[j]->tag, &conf.tag_font);                          int ww = get_swidth(rp->tags[j]->tag, &conf.tag_font);
# Line 1174  Line 1264 
1264          {          {
1265                  branch_t *b = rcs->branches[i];                  branch_t *b = rcs->branches[i];
1266                  tag_t *tag = b->ntags ? b->tags[0] : NULL;                  tag_t *tag = b->ntags ? b->tags[0] : NULL;
1267                  href = expand_string(conf.map_branch_href, rcs, b->branch, tag);                  href = expand_string(conf.map_branch_href, rcs, NULL, b->branch, NULL, tag);
1268                  alt = expand_string(conf.map_branch_alt, rcs, b->branch, tag);                  alt = expand_string(conf.map_branch_alt, rcs, NULL, b->branch, NULL, tag);
1269                  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",
1270                                  href,                                  href,
1271                                  b->cx - b->w/2, b->y, b->cx + b->w/2, b->y + b->h,                                  b->cx - b->w/2, b->y, b->cx + b->w/2, b->y + b->h,
# Line 1186  Line 1276 
1276                  {                  {
1277                          revision_t *r = b->revs[j];                          revision_t *r = b->revs[j];
1278                          tag = r->ntags ? r->tags[0] : NULL;                          tag = r->ntags ? r->tags[0] : NULL;
1279                          href = expand_string(conf.map_rev_href, rcs, r->rev, tag);                          href = expand_string(conf.map_rev_href, rcs, r, r->rev, NULL, tag);
1280                          alt = expand_string(conf.map_rev_alt, rcs, r->rev, tag);                          alt = expand_string(conf.map_rev_alt, rcs, r, r->rev, NULL, tag);
1281                          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",
1282                                  href,                                  href,
1283                                  r->cx - r->w/2, r->y, r->cx + r->w/2, r->y + r->h,                                  r->cx - r->w/2, r->y, r->cx + r->w/2, r->y + r->h,
1284                                  alt);                                  alt);
1285                          xfree(href);                          xfree(href);
1286                          xfree(alt);                          xfree(alt);
1287                            if(j > 0)
1288                            {
1289                                    revision_t *r1 = b->revs[j-1];
1290                                    int x1 = r->cx - MIN(r->w, r1->w)/4;
1291                                    int x2 = r->cx + MIN(r->w, r1->w)/4;
1292                                    href = expand_string(conf.map_diff_href, rcs, r, r->rev, r1->rev, tag);
1293                                    alt = expand_string(conf.map_diff_alt, rcs, r, r->rev, r1->rev, tag);
1294                                    fprintf(fp, "\t<area shape=\"rect\" %s coords=\"%d,%d,%d,%d\" %s>\n",
1295                                            href,
1296                                            x1, r1->y + r1->h + 1, x2, r->y - 1,
1297                                            alt);
1298                                    xfree(href);
1299                                    xfree(alt);
1300                            }
1301                  }                  }
1302          }          }
1303          fprintf(fp, "</map>\n");          fprintf(fp, "</map>\n");
# Line 1260  Line 1364 
1364          "  -[0-9] <txt> Use <txt> for expansion\n"          "  -[0-9] <txt> Use <txt> for expansion\n"
1365          ;          ;
1366    
1367  #define VERSION_STR     "1.1.0"  #define VERSION_STR     "1.1.1"
1368  #define NOTICE_STR      "Copyright (c) 2001 B.Stultiens"  #define NOTICE_STR      "Copyright (c) 2001 B.Stultiens"
1369    
1370    void append_slash(char **path)
1371    {
1372            int l;
1373            assert(path != NULL);
1374            assert(*path != NULL);
1375            l = strlen(*path);
1376            if(!l || (*path)[l-1] == '/')
1377                    return;
1378            *path = xrealloc(*path, l+2);
1379            strcat(*path, "/");
1380    }
1381    
1382  int main(int argc, char *argv[])  int main(int argc, char *argv[])
1383  {  {
1384          extern int yy_flex_debug;          extern int yy_flex_debug;
# Line 1348  Line 1464 
1464          rcsdebug = (debuglevel & DEBUG_RCS_YACC) != 0;          rcsdebug = (debuglevel & DEBUG_RCS_YACC) != 0;
1465    
1466          /* Set defaults */          /* Set defaults */
1467          if(!conf.tag_font)      conf.tag_font = gdFontTiny;          conf.tag_font           = gdFontTiny;
1468          if(!conf.rev_font)      conf.rev_font = gdFontTiny;          conf.rev_font           = gdFontTiny;
1469          if(!conf.branch_font)   conf.branch_font = gdFontTiny;          conf.branch_font        = gdFontTiny;
1470          if(!conf.title_font)    conf.title_font = gdFontTiny;          conf.title_font         = gdFontTiny;
1471            conf.rev_text_font      = gdFontTiny;
1472    
1473            conf.cvsroot            = xstrdup("");
1474            conf.cvsmodule          = xstrdup("");
1475            conf.date_format        = xstrdup("%d-%b-%Y %H:%M:%S");
1476            conf.title              = xstrdup("");
1477            conf.map_name           = xstrdup("CvsGraphImageMap");
1478            conf.map_branch_href    = xstrdup("href=\"unset: conf.map_branch_href\"");
1479            conf.map_branch_alt     = xstrdup("alt=\"%B\"");
1480            conf.map_rev_href       = xstrdup("href=\"unset: conf.map_rev_href\"");
1481            conf.map_rev_alt        = xstrdup("alt=\"%R\"");
1482            conf.map_diff_href      = xstrdup("href=\"unset: conf.map_diff_href\"");
1483            conf.map_diff_alt       = xstrdup("alt=\"%P <-> %R\"");
1484            conf.rev_text           = xstrdup("%d");
1485    
1486            conf.color_bg           = white_color;
1487            conf.branch_bgcolor     = white_color;
1488            conf.branch_color       = black_color;
1489            conf.rev_color          = black_color;
1490            conf.rev_bgcolor        = white_color;
1491            conf.tag_color          = black_color;
1492            conf.title_color        = black_color;
1493            conf.rev_text_color     = black_color;
1494    
1495            conf.image_quality      = 100;
1496    
1497          if(!read_config(confpath))          if(!read_config(confpath))
1498          {          {
# Line 1364  Line 1505 
1505          if(cvsmodule)   conf.cvsmodule = cvsmodule;          if(cvsmodule)   conf.cvsmodule = cvsmodule;
1506          if(imgmapname)  conf.map_name = imgmapname;          if(imgmapname)  conf.map_name = imgmapname;
1507    
1508            append_slash(&conf.cvsroot);
1509            append_slash(&conf.cvsmodule);
1510    
1511          rcs = get_rcsfile(conf.cvsroot, conf.cvsmodule, argv[optind]);          rcs = get_rcsfile(conf.cvsroot, conf.cvsmodule, argv[optind]);
1512          if(!rcs)          if(!rcs)
         {  
                 fprintf(stderr, "Error reading rcs-file\n");  
1513                  return 1;                  return 1;
         }  
1514    
1515          if(debuglevel & DEBUG_RCS_FILE)          if(debuglevel & DEBUG_RCS_FILE)
1516                  dump_rcsfile(rcs);                  dump_rcsfile(rcs);

Legend:
Removed from v.1.8  
changed lines
  Added in v.1.11

  ViewVC Help
Powered by ViewVC 1.1.0 with CvsGraph 1.7.0