/[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.9, Sat Mar 10 02:54:39 2001 UTC revision 1.15, Wed Nov 28 16:19:49 2001 UTC
# Line 19  Line 19 
19   * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA   * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
20   */   */
21    
22    #include "config.h"
23    
24  #include <stdio.h>  #include <stdio.h>
25  #include <stdlib.h>  #include <stdlib.h>
26  #include <unistd.h>  #include <unistd.h>
# Line 30  Line 32 
32  #include <fcntl.h>  #include <fcntl.h>
33  #include <regex.h>  #include <regex.h>
34  #include <errno.h>  #include <errno.h>
 #include <getopt.h>  
35  #include <ctype.h>  #include <ctype.h>
36  #include <time.h>  #include <time.h>
37    
38    #ifdef HAVE_GETOPT_H
39    # include <getopt.h>
40    #endif
41    
42  #include <gd.h>  #include <gd.h>
43  #include <gdfontt.h>  #include <gdfontt.h>
44    
 #include "config.h"  
45  #include "cvsgraph.h"  #include "cvsgraph.h"
46  #include "utils.h"  #include "utils.h"
47  #include "readconf.h"  #include "readconf.h"
# Line 201  Line 205 
205    
206          cmd = xmalloc(strlen(cvsroot) + strlen(module) + strlen(file) + 1);          cmd = xmalloc(strlen(cvsroot) + strlen(module) + strlen(file) + 1);
207          sprintf(cmd, "%s%s%s", cvsroot, module, file);          sprintf(cmd, "%s%s%s", cvsroot, module, file);
208          if(!(rcsin = fopen(cmd, "r")))          if(!(rcsin = fopen(cmd, "rb")))
209          {          {
210                  perror(cmd);                  perror(cmd);
211                  return NULL;                  return NULL;
# Line 642  Line 646 
646                                  rev_t rev;                                  rev_t rev;
647                                  revision_t **r;                                  revision_t **r;
648                                  /* This happens for the magic branch numbers if there are                                  /* This happens for the magic branch numbers if there are
649                                   * no commits withing the new branch yet. So, we add the                                   * no commits within the new branch yet. So, we add the
650                                   * branch and try continue.                                   * branch and try to continue.
651                                   */                                   */
652                                  rev.rev = previous_rev(t->rev->branch);                                  rev.rev = previous_rev(t->rev->branch);
653                                  rev.branch = NULL;                                  rev.branch = NULL;
# Line 652  Line 656 
656                                  xfree(rev.rev);                                  xfree(rev.rev);
657                                  if(!r)                                  if(!r)
658                                  {                                  {
659                                          fprintf(stderr, "No branch found for tag '%s:%s'\n", t->tag, t->rev->branch);                                          if(!quiet)
660                                                    fprintf(stderr, "No branch found for tag '%s:%s'\n", t->tag, t->rev->branch);
661                                  }                                  }
662                                  else                                  else
663                                  {                                  {
# Line 681  Line 686 
686                  {                  {
687                          revision_t **r = bsearch(t->rev, rcs->srev, rcs->nsrev, sizeof(rcs->srev[0]), search_revision);                          revision_t **r = bsearch(t->rev, rcs->srev, rcs->nsrev, sizeof(rcs->srev[0]), search_revision);
688                          if(!r)                          if(!r)
689                                  fprintf(stderr, "No revision found for tag '%s:%s'\n", t->tag, t->rev->rev);                          {
690                                    if(!quiet)
691                                            fprintf(stderr, "No revision found for tag '%s:%s'\n", t->tag, t->rev->rev);
692                            }
693                          else                          else
694                          {                          {
695                                  revision_t *rr = *r;                                  revision_t *rr = *r;
# Line 787  Line 795 
795                  {                  {
796                          switch(*++s)                          switch(*++s)
797                          {                          {
798                          case 'c': add_string_str(conf.cvsroot); break;                          case 'c':
799                            case 'C':
800                                    add_string_str(conf.cvsroot);
801                                    if(*s == 'C' && conf.cvsroot[0] && conf.cvsroot[strlen(conf.cvsroot)-1] == '/')
802                                    {
803                                            /* Strip the trailing '/' */
804                                            _nstring--;
805                                            _string[_nstring] = '\0';
806                                    }
807                                    break;
808                          case 'f':                          case 'f':
809                          case 'F':                          case 'F':
810                                  base = strrchr(rcs->file, '/');                                  base = strrchr(rcs->file, '/');
# Line 821  Line 838 
838                                   *      add_string_str("/");                                   *      add_string_str("/");
839                                   */                                   */
840                                  break;                                  break;
841                          case 'm': add_string_str(conf.cvsmodule); break;                          case 'm':
842                            case 'M':
843                                    add_string_str(conf.cvsmodule);
844                                    if(*s == 'M' && conf.cvsmodule[0] && conf.cvsmodule[strlen(conf.cvsmodule)-1] == '/')
845                                    {
846                                            /* Strip the trailing '/' */
847                                            _nstring--;
848                                            _string[_nstring] = '\0';
849                                    }
850                                    break;
851                          case 'r': add_string_str(nr); break;                          case 'r': add_string_str(nr); break;
852                          case 'b': add_string_str(nb); break;                          case 'b': add_string_str(nb); break;
853                          case '%': add_string_ch('%'); break;                          case '%': add_string_ch('%'); break;
# Line 1023  Line 1049 
1049          int i;          int i;
1050          char *cptr;          char *cptr;
1051    
1052          im = gdImageCreate(rcs->tw+conf.margin_left+conf.margin_right, rcs->th+conf.margin_top+conf.margin_bottom);          cptr = expand_string(conf.title, rcs, NULL, NULL, NULL, NULL);
1053            i = get_swidth(cptr, &conf.title_font);
1054            if(rcs->tw+conf.margin_left+conf.margin_right > i)
1055                    i = rcs->tw+conf.margin_left+conf.margin_right;
1056            im = gdImageCreate(i, rcs->th+conf.margin_top+conf.margin_bottom);
1057          alloc_color(im, &conf.color_bg);          alloc_color(im, &conf.color_bg);
1058          alloc_color(im, &conf.tag_color);          alloc_color(im, &conf.tag_color);
1059          alloc_color(im, &conf.rev_color);          alloc_color(im, &conf.rev_color);
# Line 1042  Line 1072 
1072                  if(rcs->branches[i]->branchpoint)                  if(rcs->branches[i]->branchpoint)
1073                          draw_connector(im, rcs->branches[i]);                          draw_connector(im, rcs->branches[i]);
1074          }          }
         cptr = expand_string(conf.title, rcs, NULL, NULL, NULL, NULL);  
1075          draw_stringnl(im, cptr, &conf.title_font, conf.title_x, conf.title_y, conf.title_align, &conf.title_color);          draw_stringnl(im, cptr, &conf.title_font, conf.title_x, conf.title_y, conf.title_align, &conf.title_color);
1076          xfree(cptr);          xfree(cptr);
1077    
# Line 1275  Line 1304 
1304                  for(j = 0; j < b->nrevs; j++)                  for(j = 0; j < b->nrevs; j++)
1305                  {                  {
1306                          revision_t *r = b->revs[j];                          revision_t *r = b->revs[j];
1307                            revision_t* r1;
1308                            int xoff;
1309                            int x1;
1310                            int x2;
1311                            int y1;
1312    
1313                          tag = r->ntags ? r->tags[0] : NULL;                          tag = r->ntags ? r->tags[0] : NULL;
1314                          href = expand_string(conf.map_rev_href, rcs, r, r->rev, NULL, tag);                          href = expand_string(conf.map_rev_href, rcs, r, r->rev, NULL, tag);
1315                          alt = expand_string(conf.map_rev_alt, rcs, r, r->rev, NULL, tag);                          alt = expand_string(conf.map_rev_alt, rcs, r, r->rev, NULL, tag);
# Line 1284  Line 1319 
1319                                  alt);                                  alt);
1320                          xfree(href);                          xfree(href);
1321                          xfree(alt);                          xfree(alt);
1322                          if(j > 0)                          if ( j > 0 || b->branchpoint )
1323                          {                          {
1324                                  revision_t *r1 = b->revs[j-1];                              if ( j > 0 )
1325                                  int x1 = r->cx - MIN(r->w, r1->w)/4;                              {
1326                                  int x2 = r->cx + MIN(r->w, r1->w)/4;                                  r1 = b->revs[j-1];
1327                                  href = expand_string(conf.map_diff_href, rcs, r, r->rev, r1->rev, tag);                                  xoff = MIN(r->w, r1->w)/4;
1328                                  alt = expand_string(conf.map_diff_alt, rcs, r, r->rev, r1->rev, tag);                                  y1 = r1->y + r1->h;
1329                                  fprintf(fp, "\t<area shape=\"rect\" %s coords=\"%d,%d,%d,%d\" %s>\n",                              }
1330                                          href,                              else
1331                                          x1, r->y + r->h + 1, x2, r1->y - 1,                              {
1332                                          alt);                                  r1 = b->branchpoint;
1333                                  xfree(href);                                  xoff = MIN(r->w, b->w)/4;
1334                                  xfree(alt);                                  y1 = b->y + b->h;
1335                                }
1336                                x1 = r->cx - xoff;
1337                                x2 = r->cx + xoff;
1338    
1339                                href = expand_string(conf.map_diff_href, rcs, r, r->rev, r1->rev, tag);
1340                                alt = expand_string(conf.map_diff_alt, rcs, r, r->rev, r1->rev, tag);
1341                                fprintf(fp, "\t<area shape=\"rect\" %s coords=\"%d,%d,%d,%d\" %s>\n",
1342                                        href,
1343                                        x1, y1 + 1, x2, r->y - 1,
1344                                        alt);
1345                                xfree(href);
1346                                xfree(alt);
1347                          }                          }
1348                  }                  }
1349          }          }
# Line 1364  Line 1411 
1411          "  -[0-9] <txt> Use <txt> for expansion\n"          "  -[0-9] <txt> Use <txt> for expansion\n"
1412          ;          ;
1413    
1414  #define VERSION_STR     "1.1.1"  #define VERSION_STR     "1.1.4"
1415  #define NOTICE_STR      "Copyright (c) 2001 B.Stultiens"  #define NOTICE_STR      "Copyright (c) 2001 B.Stultiens"
1416    
1417  void append_slash(char **path)  void append_slash(char **path)
# Line 1480  Line 1527 
1527          conf.map_rev_href       = xstrdup("href=\"unset: conf.map_rev_href\"");          conf.map_rev_href       = xstrdup("href=\"unset: conf.map_rev_href\"");
1528          conf.map_rev_alt        = xstrdup("alt=\"%R\"");          conf.map_rev_alt        = xstrdup("alt=\"%R\"");
1529          conf.map_diff_href      = xstrdup("href=\"unset: conf.map_diff_href\"");          conf.map_diff_href      = xstrdup("href=\"unset: conf.map_diff_href\"");
1530          conf.map_diff_alt       = xstrdup("alt=\"%P <-> %R\"");          conf.map_diff_alt       = xstrdup("alt=\"%P &lt;-&gt; %R\"");
1531          conf.rev_text           = xstrdup("%R");          conf.rev_text           = xstrdup("%d");
1532    
1533          conf.color_bg           = white_color;          conf.color_bg           = white_color;
1534          conf.branch_bgcolor     = white_color;          conf.branch_bgcolor     = white_color;
# Line 1492  Line 1539 
1539          conf.title_color        = black_color;          conf.title_color        = black_color;
1540          conf.rev_text_color     = black_color;          conf.rev_text_color     = black_color;
1541    
1542            conf.image_quality      = 100;
1543    
1544          if(!read_config(confpath))          if(!read_config(confpath))
1545          {          {
1546                  fprintf(stderr, "Error reading config file\n");                  fprintf(stderr, "Error reading config file\n");
# Line 1521  Line 1570 
1570    
1571          if(outfile)          if(outfile)
1572          {          {
1573                  if((fp = fopen(outfile, "w")) == NULL)                  if((fp = fopen(outfile, "wb")) == NULL)
1574                  {                  {
1575                          perror(outfile);                          perror(outfile);
1576                          return 1;                          return 1;
1577                  }                  }
1578          }          }
1579          else          else
1580            {
1581                  fp = stdout;                  fp = stdout;
1582    #ifdef __WIN32__
1583                    /* Bad hack for DOS/Windows */
1584                    if(setmode(fileno(fp), O_BINARY) == -1)
1585                    {
1586                            perror("Set binary mode for stdout");
1587                            return 1;
1588                    }
1589    #endif
1590            }
1591    
1592          make_layout(rcs);          make_layout(rcs);
1593    

Legend:
Removed from v.1.9  
changed lines
  Added in v.1.15

  ViewVC Help
Powered by ViewVC 1.1.0 with CvsGraph 1.7.0