Changeset 63


Ignore:
Timestamp:
Jan 20, 2006, 12:07:36 AM (16 years ago)
Author:
Peter Johansson
Message:

Fixed problem with mapping revison to date. Removed mkstemps. name of
png files are now in line with their html file name. Binary works on
svnstat, but is asserted on c++_tools.

Location:
trunk
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/bin/svnstat.cc

    r60 r63  
    3939  CommitStat cs;
    4040  cs.parse(option.root());
     41  assert(cs.date()[0].size());
    4142  Stats::gnuplot_pipe_.set_dates(cs.date());
    4243 
  • trunk/lib/CommitStat.cc

    r61 r63  
    3333    typedef std::vector<std::string>::iterator DateIter;
    3434    size_t rev_last_iteration=0;
     35    std::string date;
    3536    while (getline(is,line, '\n')){
    3637      if (!line.size()) // skip empty line
     
    4243        ss >> revision;
    4344        assert(revision);
    44          
    4545        std::string tmp;
    4646        ss >> tmp;
     
    4848        ss >> user;
    4949        ss >> tmp;
    50         std::string date;
    5150        ss >> date;
    5251        std::string time;
     
    5554        if (revision+1 > date_.size()){
    5655          date_.resize(revision+1);
    57           rev_last_iteration=revision;
     56          rev_last_iteration=revision+1;
    5857        }
    5958        assert(revision<=rev_last_iteration);
    60         std::copy(date_.begin()+revision,
     59        std::fill(date_.begin()+revision,
    6160                  date_.begin()+rev_last_iteration,
    62                   date_.begin()+revision);
     61                  date);
    6362        rev_last_iteration=revision;
    6463      }
    65       std::copy(date_.begin(),
     64      std::fill(date_.begin(),
    6665                date_.begin()+rev_last_iteration,
    67                 date_.begin());
     66                date);
    6867    }
    6968    is.close();
    70    
     69
    7170    return system_return;
    7271  }
    7372
    7473
     74  void CommitStat::reset(void)
     75  {
     76    date_.clear();
     77  }
     78
    7579}} // end of namespace svnstat and namespace theplu
  • trunk/lib/CommitStat.h

    r61 r63  
    2121    inline CommitStat(void) {}
    2222
     23    inline const std::vector<std::string>& dates(void) { return date_; }
     24
    2325    ///
    2426    /// Function parsing output from log() \a path'.
     
    3638    int log(const std::string& path) const;
    3739
    38     inline void reset(void) {};
     40    void reset(void);
    3941
    4042    std::vector<std::string> date_;
     43
    4144  };
    4245}}
  • trunk/lib/Directory.cc

    r60 r63  
    8383    print_header(os);
    8484    os << std::endl;
    85     stats_.print(os);
     85    stats_.print(os,output_name()+".png");
    8686    os << std::endl;
    8787
  • trunk/lib/File.cc

    r60 r63  
    3838    print_header(os);
    3939    os << std::endl;
    40     stats_.print(os);
     40    stats_.print(os,output_name()+".png");
    4141    os << std::endl;
    4242    print_footer(os);
  • trunk/lib/Gnuplot.cc

    r60 r63  
    6464    command("set timefmt '" + date_input_format_ + "'");
    6565    command("set format x '" + format + "'");
     66    assert(date_[0].size());
     67    assert(y.back());
    6668    plot(y,date_,"plot");
    6769  }
  • trunk/lib/Gnuplot.h

    r60 r63  
    1010#include <string>
    1111#include <vector>
     12
    1213
    1314namespace theplu {
     
    6566    ///
    6667    void date_plot(const std::vector<double>& y,
    67                    const std::string& format="%y-%b");
     68                   const std::string& format="%y-%b-%d");
    6869    ///
    6970    ///
    7071    ///
    7172    void date_replot(const std::vector<double>& y,
    72                      const std::string& format="%y-%b");
     73                     const std::string& format="%y-%b-%d");
    7374
    7475    ///
     
    157158      tmp.close();
    158159      std::string cmdstring(plotcmd + " '" + name + "' u 1:2 title '" +
    159                             linetitle_ + "' with " + linestyle_ + "\n");
     160                              linetitle_ + "' with " + linestyle_ + "\n");
     161      if (x.empty())
     162        cmdstring = plotcmd + " '" + name + "' u 1 title '" +
     163          linetitle_ + "' with " + linestyle_ + "\n";
     164       
    160165      command(cmdstring);
    161      
    162166      // need to keep track of created files since the gnuplot command
    163167      // is not executed until pclose on MacOSX, shouldn't the fflush
  • trunk/lib/Stats.cc

    r60 r63  
    66
    77#include <algorithm>
     8#include <cstdlib>
    89#include <iostream>
    910#include <map>
     
    1415#include <utility>
    1516#include <vector>
     17
    1618
    1719namespace theplu{
     
    3133    std::vector<double> accum(sum.size());
    3234    std::partial_sum(sum.begin(),sum.end(),accum.begin());
     35    assert(sum.size()==accum.size());
    3336    return accum;
    3437  }
     
    106109
    107110
    108   std::string Stats::plot(void) const
     111  std::string Stats::plot(const std::string& name) const
    109112  {
    110     char name[]="svnstat_XXXXXX.png";
    111     if (mkstemps(name,4)==-1){
    112       throw std::runtime_error(std::string("Failed to get unique filename: ") +
    113                              name);
    114     }
    115113    std::string cmd=std::string("set term png; set output '")+name+"'";
    116114    gnuplot_pipe_.command(cmd);
  • trunk/lib/Stats.h

    r60 r63  
    3434    /// @brief Print statistics
    3535    ///
    36     void inline print(std::ostream& s) const
    37     { s << "<p><img src='" << plot() << "' alt='[plot]' border=0></p>\n"; }
     36    void inline print(std::ostream& s, const std::string& name) const
     37    { s << "<p><img src='" << plot(name) << "' alt='[plot]' border=0></p>\n"; }
    3838
    3939    ///
     
    7878    void add(const std::string& user, const u_int& revision);
    7979
    80     std::string plot(void) const;
     80    std::string plot(const std::string&) const;
    8181
    8282    static u_int latest_revision_; // latest rev. for whole project
Note: See TracChangeset for help on using the changeset viewer.