/[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.5, Sat Feb 24 00:35:13 2001 UTC revision 1.6, Mon Feb 26 00:09:20 2001 UTC
# Line 266  Line 266 
266          }          }
267          umask(um);          umask(um);
268    
269          cmd = xmalloc(strlen(cvsroot) + + strlen(module) + strlen(file) + 2 + 1);          cmd = xmalloc(strlen(cvsroot) + strlen(module) + strlen(file) + 2 + 1);
270          sprintf(cmd, "%s/%s/%s", cvsroot, module, file);          sprintf(cmd, "%s/%s/%s", cvsroot, module, file);
271    
272          switch(pid = fork())          switch(pid = fork())
# Line 949  Line 949 
949          }          }
950  }  }
951    
952    void reposition_branch(revision_t *r, int *x, int *w)
953    {
954            int i, j;
955            for(j = 0; j < r->nbranches; j++)
956            {
957                    branch_t *b = r->branches[j];
958                    *x += *w + conf.rev_minline + b->tw/2 - b->x;
959                    *w = b->tw/2;
960                    move_branch(b, *x, r->y + r->h);
961                    *x = b->x;
962                    /* Recurse to move branches of branched revisions */
963                    for(i = b->nrevs-1; i >= 0; i--)
964                    {
965                            reposition_branch(b->revs[i], x, w);
966                    }
967            }
968    }
969    
970  void rect_union(int *x, int *y, int *w, int *h, branch_t *b)  void rect_union(int *x, int *y, int *w, int *h, branch_t *b)
971  {  {
972          int x1 = *x;          int x1 = *x;
# Line 1040  Line 1058 
1058                  }                  }
1059          }          }
1060    
1061          /* Reposition the branches FIXME: Should be recursive on branchpoint revisions within branches... */          /* Reposition the branches */
1062          x = rcs->branches[0]->x;          x = rcs->branches[0]->x;
1063          w2 = rcs->branches[0]->tw / 2;          w2 = rcs->branches[0]->tw / 2;
1064          for(i = rcs->branches[0]->nrevs-1; i >= 0; i--)          for(i = rcs->branches[0]->nrevs-1; i >= 0; i--)
1065          {          {
1066                  revision_t *r = rcs->branches[0]->revs[i];                  reposition_branch(rcs->branches[0]->revs[i], &x, &w2);
                 for(j = 0; j < r->nbranches; j++)  
                 {  
                         branch_t *b = r->branches[j];  
                         x += w2 + conf.rev_minline + b->tw/2 - b->x;  
                         w2 = b->tw/2;  
                         move_branch(b, x, r->y + r->h);  
                         x = b->x;  
                 }  
1067          }          }
1068    
1069          for(i = 0; i < rcs->nbranches; i++)          for(i = 0; i < rcs->nbranches; i++)
# Line 1072  Line 1082 
1082    
1083  /*  /*
1084   **************************************************************************   **************************************************************************
1085     * Imagemap functions
1086     **************************************************************************
1087     */
1088    void make_imagemap(rcsfilelog_t *rcs, FILE *fp)
1089    {
1090            int i, j;
1091            fprintf(fp, "<map name=\"%s\">\n", conf.map_name);
1092            for(i = 0; i < rcs->nbranches; i++)
1093            {
1094                    branch_t *b = rcs->branches[i];
1095                    fprintf(fp, "<area shape=\"rect\" href=\"branch_%s\" coords=\"%d,%d,%d,%d\" alt=\"Branch %s\">\n",
1096                                    b->branch,
1097                                    b->x - b->w/2, b->y, b->x + b->w/2, b->y + b->h,
1098                                    b->branch);
1099                    for(j = 0; j < b->nrevs; j++)
1100                    {
1101                            revision_t *r = b->revs[j];
1102                            fprintf(fp, "<area shape=\"rect\" href=\"rev_%s\" coords=\"%d,%d,%d,%d\" alt=\"Revision %s\">\n",
1103                                    r->rev->rev,
1104                                    r->x - r->w/2, r->y, r->x + r->w/2, r->y + r->h,
1105                                    r->rev->rev);
1106                    }
1107            }
1108            fprintf(fp, "</map>\n");
1109    }
1110    
1111    /*
1112     **************************************************************************
1113   * Configuration   * Configuration
1114   **************************************************************************   **************************************************************************
1115   */   */
# Line 1112  Line 1150 
1150          "Usage: cvsgraph [options] <file>\n"          "Usage: cvsgraph [options] <file>\n"
1151          "  -c <file>  Read alternative config from <file>\n"          "  -c <file>  Read alternative config from <file>\n"
1152          "  -h         This message\n"          "  -h         This message\n"
1153            "  -i <file>  Write an imagamap to <file>\n"
1154          "  -m <mod>   Use <mod> as cvs module\n"          "  -m <mod>   Use <mod> as cvs module\n"
1155          "  -o <file>  Output to <file>\n"          "  -o <file>  Output to <file>\n"
1156          "  -r <path>  Use <path> as cvsroot path\n"          "  -r <path>  Use <path> as cvsroot path\n"
1157          "  -V         Print version and exit\n"          "  -V         Print version and exit\n"
1158          ;          ;
1159    
1160  #define VERSION_STR     "1.0.0"  #define VERSION_STR     "1.0.1"
1161  #define NOTICE_STR      "Copyright (c) 2001 B.Stultiens"  #define NOTICE_STR      "Copyright (c) 2001 B.Stultiens"
1162    
1163  void add_tag(rcsfilelog_t *rcs, const char *tag, const char *rev)  void add_tag(rcsfilelog_t *rcs, const char *tag, const char *rev)
# Line 1137  Line 1176 
1176          char *outfile = NULL;          char *outfile = NULL;
1177          char *cvsroot = NULL;          char *cvsroot = NULL;
1178          char *cvsmodule = NULL;          char *cvsmodule = NULL;
1179            char *imagemap = NULL;
1180          int lose = 0;          int lose = 0;
1181          FILE *fp;          FILE *fp;
1182          int n;          int n;
# Line 1148  Line 1188 
1188          setvbuf(stderr, NULL, 0, _IONBF);          setvbuf(stderr, NULL, 0, _IONBF);
1189  #endif  #endif
1190    
1191          while((optc = getopt(argc, argv, "c:hm:o:r:V")) != EOF)          while((optc = getopt(argc, argv, "c:hi:m:o:r:V")) != EOF)
1192          {          {
1193                  switch(optc)                  switch(optc)
1194                  {                  {
1195                  case 'c':                  case 'c':
1196                          confpath = xstrdup(optarg);                          confpath = xstrdup(optarg);
1197                          break;                          break;
1198                    case 'i':
1199                            imagemap = xstrdup(optarg);
1200                            break;
1201                  case 'm':                  case 'm':
1202                          cvsmodule = xstrdup(optarg);                          cvsmodule = xstrdup(optarg);
1203                          break;                          break;
# Line 1327  Line 1370 
1370          if(outfile)          if(outfile)
1371                  fclose(fp);                  fclose(fp);
1372          gdImageDestroy(im);          gdImageDestroy(im);
1373    
1374            if(imagemap)
1375            {
1376                    if((fp = fopen(imagemap, "w")) == NULL)
1377                    {
1378                            perror(imagemap);
1379                            return 1;
1380                    }
1381                    make_imagemap(rcs, fp);
1382                    fclose(fp);
1383            }
1384    
1385          return 0;          return 0;
1386  }  }
1387    

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.6

  ViewVC Help
Powered by ViewVC 1.1.0 with CvsGraph 1.7.0