suppressed a few wasteful string-cstr conversions

This commit is contained in:
dockes 2008-07-01 11:51:51 +00:00
parent 0460f1016c
commit 022e0e5f43
14 changed files with 78 additions and 71 deletions

View File

@ -62,7 +62,7 @@ Address::Address(const string &wholeaddress)
if (start != string::npos) if (start != string::npos)
name = wholeaddress.substr(0, start); name = wholeaddress.substr(0, start);
else else
name = ""; name = string();
trim(name); trim(name);
trim(name, "\""); trim(name, "\"");
@ -79,11 +79,11 @@ Address::Address(const string &wholeaddress)
string Address::toParenList(void) const string Address::toParenList(void) const
{ {
string tmp = "("; string tmp = "(";
tmp += name == "" ? "NIL" : toImapString(name); tmp += name.empty() ? "NIL" : toImapString(name);
tmp += " NIL "; tmp += " NIL ";
tmp += local == "" ? "\"\"" : toImapString(local); tmp += local.empty() ? "\"\"" : toImapString(local);
tmp += " "; tmp += " ";
tmp += host == "" ? "\"\"" : toImapString(host); tmp += host.empty() ? "\"\"" : toImapString(host);
tmp += ")"; tmp += ")";
return tmp; return tmp;

View File

@ -1,5 +1,5 @@
#ifndef lint #ifndef lint
static char rcsid[] = "@(#$Id: mh_mail.cpp,v 1.32 2008-07-01 10:29:45 dockes Exp $ (C) 2005 J.F.Dockes"; static char rcsid[] = "@(#$Id: mh_mail.cpp,v 1.33 2008-07-01 11:51:51 dockes Exp $ (C) 2005 J.F.Dockes";
#endif #endif
/* /*
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
@ -45,6 +45,11 @@ static char rcsid[] = "@(#$Id: mh_mail.cpp,v 1.32 2008-07-01 10:29:45 dockes Exp
using namespace std; using namespace std;
static const int maxdepth = 20; static const int maxdepth = 20;
static const string cstr_mimetype = "mimetype";
static const string cstr_content = "content";
static const string cstr_author = "author";
static const string cstr_modificationdate = "modificationdate";
static const string cstr_title = "title";
MimeHandlerMail::~MimeHandlerMail() MimeHandlerMail::~MimeHandlerMail()
{ {
@ -126,10 +131,10 @@ bool MimeHandlerMail::next_document()
bool res = false; bool res = false;
if (m_idx == -1) { if (m_idx == -1) {
m_metaData["mimetype"] = "text/plain"; m_metaData[cstr_mimetype] = "text/plain";
res = processMsg(m_bincdoc, 0); res = processMsg(m_bincdoc, 0);
LOGDEB1(("MimeHandlerMail::next_document: mimetype %s\n", LOGDEB1(("MimeHandlerMail::next_document: mimetype %s\n",
m_metaData["mimetype"].c_str())); m_metaData[cstr_mimetype].c_str()));
} else { } else {
res = processAttach(); res = processAttach();
} }
@ -181,18 +186,18 @@ bool MimeHandlerMail::processAttach()
} }
MHMailAttach *att = m_attachments[m_idx]; MHMailAttach *att = m_attachments[m_idx];
m_metaData["mimetype"] = att->m_contentType; m_metaData[cstr_mimetype] = att->m_contentType;
m_metaData["charset"] = att->m_charset; m_metaData["charset"] = att->m_charset;
m_metaData["filename"] = att->m_filename; m_metaData["filename"] = att->m_filename;
// Change the title to something helpul // Change the title to something helpul
m_metaData["title"] = att->m_filename + " (" + m_subject + ")"; m_metaData[cstr_title] = att->m_filename + " (" + m_subject + ")";
LOGDEB1((" processAttach:ct [%s] cs [%s] fn [%s]\n", LOGDEB1((" processAttach:ct [%s] cs [%s] fn [%s]\n",
att->m_contentType.c_str(), att->m_contentType.c_str(),
att->m_charset.c_str(), att->m_charset.c_str(),
att->m_filename.c_str())); att->m_filename.c_str()));
m_metaData["content"] = string(); m_metaData[cstr_content] = string();
string& body = m_metaData["content"]; string& body = m_metaData[cstr_content];
att->m_part->getBody(body, 0, att->m_part->bodylength); att->m_part->getBody(body, 0, att->m_part->bodylength);
string decoded; string decoded;
const string *bdp; const string *bdp;
@ -205,7 +210,7 @@ bool MimeHandlerMail::processAttach()
// Special case for text/plain content. Internfile should deal // Special case for text/plain content. Internfile should deal
// with this but it expects text/plain to be utf-8 already, so we // with this but it expects text/plain to be utf-8 already, so we
// handle the transcoding if needed // handle the transcoding if needed
if (m_metaData["mimetype"] == "text/plain" && if (m_metaData[cstr_mimetype] == "text/plain" &&
stringicmp(m_metaData["charset"], "UTF-8")) { stringicmp(m_metaData["charset"], "UTF-8")) {
string utf8; string utf8;
if (!transcode(body, utf8, m_metaData["charset"], "UTF-8")) { if (!transcode(body, utf8, m_metaData["charset"], "UTF-8")) {
@ -219,12 +224,12 @@ bool MimeHandlerMail::processAttach()
// Special case for application/octet-stream: try to better // Special case for application/octet-stream: try to better
// identify content, using file name if set // identify content, using file name if set
if (m_metaData["mimetype"] == "application/octet-stream" && if (m_metaData[cstr_mimetype] == "application/octet-stream" &&
!m_metaData["filename"].empty()) { !m_metaData["filename"].empty()) {
string mt = mimetype(m_metaData["filename"], 0, string mt = mimetype(m_metaData["filename"], 0,
RclConfig::getMainConfig(), false); RclConfig::getMainConfig(), false);
if (!mt.empty()) if (!mt.empty())
m_metaData["mimetype"] = mt; m_metaData[cstr_mimetype] = mt;
} }
// Ipath // Ipath
@ -254,14 +259,14 @@ bool MimeHandlerMail::processMsg(Binc::MimePart *doc, int depth)
} }
// Handle some headers. // Handle some headers.
string& text = m_metaData["content"]; string& text = m_metaData[cstr_content];
Binc::HeaderItem hi; Binc::HeaderItem hi;
string transcoded; string transcoded;
if (doc->h.getFirstHeader("From", hi)) { if (doc->h.getFirstHeader("From", hi)) {
rfc2047_decode(hi.getValue(), transcoded); rfc2047_decode(hi.getValue(), transcoded);
text += string("From: ") + transcoded + string("\n"); text += string("From: ") + transcoded + string("\n");
if (depth == 1) { if (depth == 1) {
m_metaData["author"] = transcoded; m_metaData[cstr_author] = transcoded;
} }
} }
if (doc->h.getFirstHeader("To", hi)) { if (doc->h.getFirstHeader("To", hi)) {
@ -275,7 +280,7 @@ bool MimeHandlerMail::processMsg(Binc::MimePart *doc, int depth)
if (t != (time_t)-1) { if (t != (time_t)-1) {
char ascuxtime[100]; char ascuxtime[100];
sprintf(ascuxtime, "%ld", (long)t); sprintf(ascuxtime, "%ld", (long)t);
m_metaData["modificationdate"] = ascuxtime; m_metaData[cstr_modificationdate] = ascuxtime;
} else { } else {
// Leave mtime field alone, ftime will be used instead. // Leave mtime field alone, ftime will be used instead.
LOGDEB(("rfc2822Date...: failed: [%s]\n", transcoded.c_str())); LOGDEB(("rfc2822Date...: failed: [%s]\n", transcoded.c_str()));
@ -286,7 +291,7 @@ bool MimeHandlerMail::processMsg(Binc::MimePart *doc, int depth)
if (doc->h.getFirstHeader("Subject", hi)) { if (doc->h.getFirstHeader("Subject", hi)) {
rfc2047_decode(hi.getValue(), transcoded); rfc2047_decode(hi.getValue(), transcoded);
if (depth == 1) { if (depth == 1) {
m_metaData["title"] = transcoded; m_metaData[cstr_title] = transcoded;
m_subject = transcoded; m_subject = transcoded;
} }
text += string("Subject: ") + transcoded + string("\n"); text += string("Subject: ") + transcoded + string("\n");
@ -298,7 +303,7 @@ bool MimeHandlerMail::processMsg(Binc::MimePart *doc, int depth)
walkmime(doc, depth); walkmime(doc, depth);
LOGDEB2(("MimeHandlerMail::processMsg:text:[%s]\n", LOGDEB2(("MimeHandlerMail::processMsg:text:[%s]\n",
m_metaData["content"].c_str())); m_metaData[cstr_content].c_str()));
return true; return true;
} }
@ -320,7 +325,7 @@ void MimeHandlerMail::walkmime(Binc::MimePart* doc, int depth)
return; return;
} }
string& out = m_metaData["content"]; string& out = m_metaData[cstr_content];
if (doc->isMultipart()) { if (doc->isMultipart()) {
LOGDEB2(("walkmime: ismultipart %d subtype '%s'\n", LOGDEB2(("walkmime: ismultipart %d subtype '%s'\n",
@ -512,7 +517,7 @@ void MimeHandlerMail::walkmime(Binc::MimePart* doc, int depth)
mh.set_document_string(body); mh.set_document_string(body);
mh.next_document(); mh.next_document();
map<string, string>::const_iterator it = map<string, string>::const_iterator it =
mh.get_meta_data().find("content"); mh.get_meta_data().find(cstr_content);
if (it != mh.get_meta_data().end()) if (it != mh.get_meta_data().end())
out += it->second; out += it->second;
} else { } else {

View File

@ -1,5 +1,5 @@
#ifndef lint #ifndef lint
static char rcsid[] = "@(#$Id: wasastringtoquery.cpp,v 1.6 2007-11-16 12:21:46 dockes Exp $ (C) 2006 J.F.Dockes"; static char rcsid[] = "@(#$Id: wasastringtoquery.cpp,v 1.7 2008-07-01 11:51:51 dockes Exp $ (C) 2006 J.F.Dockes";
#endif #endif
/* /*
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
@ -44,7 +44,7 @@ WasaQuery::~WasaQuery()
void WasaQuery::describe(string &desc) const void WasaQuery::describe(string &desc) const
{ {
desc += "("; desc += "(";
string fieldspec = m_fieldspec.empty() ? "" : m_fieldspec + ": "; string fieldspec = m_fieldspec.empty() ? string() : m_fieldspec + ": ";
switch (m_op) { switch (m_op) {
case OP_NULL: case OP_NULL:
desc += "NULL"; desc += "NULL";

View File

@ -1,5 +1,5 @@
#ifndef lint #ifndef lint
static char rcsid[] = "@(#$Id: xadump.cpp,v 1.17 2008-04-18 11:39:47 dockes Exp $ (C) 2004 J.F.Dockes"; static char rcsid[] = "@(#$Id: xadump.cpp,v 1.18 2008-07-01 11:51:51 dockes Exp $ (C) 2004 J.F.Dockes";
#endif #endif
/* /*
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
@ -168,8 +168,8 @@ int main(int argc, char **argv)
if (op_flags & OPT_T) { if (op_flags & OPT_T) {
Xapian::TermIterator term; Xapian::TermIterator term;
string printable; string printable;
string op = (op_flags & OPT_n) ? "": "["; string op = (op_flags & OPT_n) ? string(): "[";
string cl = (op_flags & OPT_n) ? "": "]"; string cl = (op_flags & OPT_n) ? string(): "]";
if (op_flags & OPT_i) { if (op_flags & OPT_i) {
for (term = db->termlist_begin(docid); for (term = db->termlist_begin(docid);
term != db->termlist_end(docid);term++) { term != db->termlist_end(docid);term++) {

View File

@ -1,5 +1,5 @@
#ifndef lint #ifndef lint
static char rcsid[] = "@(#$Id: rcldb.cpp,v 1.133 2008-06-13 18:22:46 dockes Exp $ (C) 2004 J.F.Dockes"; static char rcsid[] = "@(#$Id: rcldb.cpp,v 1.134 2008-07-01 11:51:51 dockes Exp $ (C) 2004 J.F.Dockes";
#endif #endif
/* /*
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
@ -122,7 +122,7 @@ bool Db::Native::subDocs(const string &hash, vector<Xapian::docid>& docids)
if (ermsg.empty()) if (ermsg.empty())
ermsg = "Empty error message"; ermsg = "Empty error message";
} catch (const char *s) { } catch (const char *s) {
ermsg = s ? s : ""; ermsg = s ? s : string();
if (ermsg.empty()) if (ermsg.empty())
ermsg = "Empty error message"; ermsg = "Empty error message";
} catch (...) { } catch (...) {
@ -202,7 +202,7 @@ string Db::Native::makeAbstract(Xapian::docid docid, Query *query)
list<string> terms = noPrefixList(iterms); list<string> terms = noPrefixList(iterms);
if (terms.empty()) { if (terms.empty()) {
return ""; return string();
} }
// Retrieve db-wide frequencies for the query terms // Retrieve db-wide frequencies for the query terms
@ -289,7 +289,7 @@ string Db::Native::makeAbstract(Xapian::docid docid, Query *query)
// This can't happen, but would crash us // This can't happen, but would crash us
if (totalweight == 0.0) { if (totalweight == 0.0) {
LOGERR(("makeAbstract: 0 totalweight!\n")); LOGERR(("makeAbstract: 0 totalweight!\n"));
return ""; return string();
} }
// Let's go populate // Let's go populate
@ -348,7 +348,7 @@ string Db::Native::makeAbstract(Xapian::docid docid, Query *query)
// This can happen if there are term occurences in the keywords // This can happen if there are term occurences in the keywords
// etc. but not elsewhere ? // etc. but not elsewhere ?
if (qtermposs.size() == 0) if (qtermposs.size() == 0)
return ""; return string();
// Walk all document's terms position lists and populate slots // Walk all document's terms position lists and populate slots
// around the query terms. We arbitrarily truncate the list to // around the query terms. We arbitrarily truncate the list to
@ -593,7 +593,7 @@ bool Db::reOpen()
if (m_ndb && m_ndb->m_isopen) { if (m_ndb && m_ndb->m_isopen) {
if (!close()) if (!close())
return false; return false;
if (!open(m_basedir, "", m_mode, true)) { if (!open(m_basedir, string(), m_mode, true)) {
return false; return false;
} }
} }
@ -684,7 +684,7 @@ bool Db::fieldToPrefix(const string& fldname, string &pfx)
// This is the default table // This is the default table
static map<string, string> fldToPrefs; static map<string, string> fldToPrefs;
if (fldToPrefs.empty()) { if (fldToPrefs.empty()) {
fldToPrefs["abstract"] = ""; fldToPrefs["abstract"] = string();
fldToPrefs["ext"] = "XE"; fldToPrefs["ext"] = "XE";
fldToPrefs["title"] = "S"; fldToPrefs["title"] = "S";
@ -778,14 +778,14 @@ bool mySplitterCB::takeword(const std::string &term, int pos, int, int)
// want to stop indexation because of a bad string // want to stop indexation because of a bad string
bool dumb_string(const string &in, string &out) bool dumb_string(const string &in, string &out)
{ {
out.erase(); out.clear();
if (in.empty()) if (in.empty())
return true; return true;
string s1 = neutchars(in, "\n\r"); string s1 = neutchars(in, "\n\r");
if (!unacmaybefold(s1, out, "UTF-8", true)) { if (!unacmaybefold(s1, out, "UTF-8", true)) {
LOGINFO(("dumb_string: unac failed for [%s]\n", in.c_str())); LOGINFO(("dumb_string: unac failed for [%s]\n", in.c_str()));
out.erase(); out.clear();
// See comment at start of func // See comment at start of func
return true; return true;
} }

View File

@ -1,5 +1,5 @@
#ifndef lint #ifndef lint
static char rcsid[] = "@(#$Id: rclquery.cpp,v 1.2 2008-07-01 08:31:08 dockes Exp $ (C) 2008 J.F.Dockes"; static char rcsid[] = "@(#$Id: rclquery.cpp,v 1.3 2008-07-01 11:51:51 dockes Exp $ (C) 2008 J.F.Dockes";
#endif #endif
#include <list> #include <list>
@ -101,7 +101,7 @@ bool Query::setQuery(RefCntr<SearchData> sdata, int opts,
} }
Xapian::Query xq; Xapian::Query xq;
if (!sdata->toNativeQuery(*m_db, &xq, (opts & QO_STEM) ? stemlang : "")) { if (!sdata->toNativeQuery(*m_db, &xq, (opts & QO_STEM) ? stemlang : string())) {
m_reason += sdata->getReason(); m_reason += sdata->getReason();
return false; return false;
} }

View File

@ -16,7 +16,7 @@
*/ */
#ifndef _SEARCHDATA_H_INCLUDED_ #ifndef _SEARCHDATA_H_INCLUDED_
#define _SEARCHDATA_H_INCLUDED_ #define _SEARCHDATA_H_INCLUDED_
/* @(#$Id: searchdata.h,v 1.14 2008-06-13 18:22:46 dockes Exp $ (C) 2004 J.F.Dockes */ /* @(#$Id: searchdata.h,v 1.15 2008-07-01 11:51:51 dockes Exp $ (C) 2004 J.F.Dockes */
/** /**
* Structures to hold data coming almost directly from the gui * Structures to hold data coming almost directly from the gui
@ -160,7 +160,7 @@ protected:
class SearchDataClauseSimple : public SearchDataClause { class SearchDataClauseSimple : public SearchDataClause {
public: public:
SearchDataClauseSimple(SClType tp, const string& txt, SearchDataClauseSimple(SClType tp, const string& txt,
const string& fld = "") const string& fld = string())
: SearchDataClause(tp), m_text(txt), m_field(fld), m_slack(0) { : SearchDataClause(tp), m_text(txt), m_field(fld), m_slack(0) {
m_haveWildCards = (txt.find_first_of("*?[") != string::npos); m_haveWildCards = (txt.find_first_of("*?[") != string::npos);
} }
@ -212,7 +212,7 @@ public:
class SearchDataClauseDist : public SearchDataClauseSimple { class SearchDataClauseDist : public SearchDataClauseSimple {
public: public:
SearchDataClauseDist(SClType tp, const string& txt, int slack, SearchDataClauseDist(SClType tp, const string& txt, int slack,
const string& fld = "") const string& fld = string())
: SearchDataClauseSimple(tp, txt, fld) {m_slack = slack;} : SearchDataClauseSimple(tp, txt, fld) {m_slack = slack;}
virtual ~SearchDataClauseDist() {} virtual ~SearchDataClauseDist() {}

View File

@ -1,5 +1,5 @@
#ifndef lint #ifndef lint
static char rcsid [] = "@(#$Id: conftree.cpp,v 1.15 2007-12-13 06:58:22 dockes Exp $ (C) 2003 J.F.Dockes"; static char rcsid [] = "@(#$Id: conftree.cpp,v 1.16 2008-07-01 11:51:51 dockes Exp $ (C) 2003 J.F.Dockes";
#endif #endif
/* /*
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
@ -389,7 +389,7 @@ ConfSimple::sortwalk(WalkerCode (*walker)(void *,const string&,const string&),
sit != m_submaps.end(); sit++) { sit != m_submaps.end(); sit++) {
// Possibly emit submap name: // Possibly emit submap name:
if (!sit->first.empty() && walker(clidata, "", sit->first.c_str()) if (!sit->first.empty() && walker(clidata, string(), sit->first.c_str())
== WALK_STOP) == WALK_STOP)
return WALK_STOP; return WALK_STOP;
@ -539,7 +539,7 @@ int ConfTree::get(const std::string &name, string &value, const string &sk)
return 1; return 1;
string::size_type pos = msk.rfind("/"); string::size_type pos = msk.rfind("/");
if (pos != string::npos) { if (pos != string::npos) {
msk.replace(pos, string::npos, ""); msk.replace(pos, string::npos, string());
} else } else
break; break;
} }

View File

@ -95,9 +95,9 @@ public:
enum StatusCode {STATUS_ERROR=0, STATUS_RO=1, STATUS_RW=2}; enum StatusCode {STATUS_ERROR=0, STATUS_RO=1, STATUS_RW=2};
virtual ~ConfNull() {}; virtual ~ConfNull() {};
virtual int get(const string &name, string &value, virtual int get(const string &name, string &value,
const string &sk = "") = 0; const string &sk = string()) = 0;
virtual int set(const string &nm, const string &val, virtual int set(const string &nm, const string &val,
const string &sk = "") = 0; const string &sk = string()) = 0;
virtual bool ok() = 0; virtual bool ok() = 0;
virtual list<string> getNames(const string &sk) = 0; virtual list<string> getNames(const string &sk) = 0;
virtual int erase(const string &, const string &) = 0; virtual int erase(const string &, const string &) = 0;
@ -156,13 +156,13 @@ public:
* global space if sk is empty). * global space if sk is empty).
* @return 0 if name not found, 1 else * @return 0 if name not found, 1 else
*/ */
virtual int get(const string &name, string &value, const string &sk = ""); virtual int get(const string &name, string &value, const string &sk = string());
/** /**
* Set value for named parameter in specified subsection (or global) * Set value for named parameter in specified subsection (or global)
* @return 0 for error, 1 else * @return 0 for error, 1 else
*/ */
virtual int set(const string &nm, const string &val, const string &sk = ""); virtual int set(const string &nm, const string &val, const string &sk = string());
/** /**
* Remove name and value from config * Remove name and value from config
@ -363,7 +363,7 @@ public:
return false; return false;
} }
virtual int set(const string &nm, const string &val, const string &sk = "") virtual int set(const string &nm, const string &val, const string &sk = string())
{ {
if (!m_ok) if (!m_ok)
return 0; return 0;

View File

@ -1,5 +1,5 @@
#ifndef lint #ifndef lint
static char rcsid[] = "@(#$Id: idfile.cpp,v 1.8 2008-05-21 07:21:37 dockes Exp $ (C) 2005 J.F.Dockes"; static char rcsid[] = "@(#$Id: idfile.cpp,v 1.9 2008-07-01 11:51:51 dockes Exp $ (C) 2005 J.F.Dockes";
#endif #endif
/* /*
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
@ -68,7 +68,7 @@ string idFile(const char *fn)
input.open(fn, ios::in); input.open(fn, ios::in);
if (!input.is_open()) { if (!input.is_open()) {
LOGERR(("idFile: could not open [%s]\n", fn)); LOGERR(("idFile: could not open [%s]\n", fn));
return string(""); return string();
} }
bool line1HasFrom = false; bool line1HasFrom = false;
@ -88,7 +88,7 @@ string idFile(const char *fn)
if (input.fail()) { if (input.fail()) {
if (input.bad()) { if (input.bad()) {
LOGERR(("idfile: error while reading [%s]\n", fn)); LOGERR(("idfile: error while reading [%s]\n", fn));
return string(""); return string();
} }
// Must be eof ? // Must be eof ?
break; break;
@ -121,7 +121,7 @@ string idFile(const char *fn)
// emacs vm can insert VERY long header lines. // emacs vm can insert VERY long header lines.
if (ll > 800) { if (ll > 800) {
LOGDEB2(("idFile: Line too long\n")); LOGDEB2(("idFile: Line too long\n"));
return string(""); return string();
} }
// Check for mbox 'From ' line // Check for mbox 'From ' line
@ -159,7 +159,7 @@ string idFile(const char *fn)
if (lookslikemail >= wantnhead) if (lookslikemail >= wantnhead)
return line1HasFrom ? string("text/x-mail") : string("message/rfc822"); return line1HasFrom ? string("text/x-mail") : string("message/rfc822");
return string(""); return string();
} }

View File

@ -1,5 +1,5 @@
#ifndef lint #ifndef lint
static char rcsid[] = "@(#$Id: mimeparse.cpp,v 1.20 2007-12-13 06:58:22 dockes Exp $ (C) 2004 J.F.Dockes"; static char rcsid[] = "@(#$Id: mimeparse.cpp,v 1.21 2008-07-01 11:51:51 dockes Exp $ (C) 2004 J.F.Dockes";
#endif #endif
/* /*
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
@ -360,7 +360,7 @@ bool parseMimeHeaderValue(const string& value, MimeHeaderValue& parsed)
string nm = it->first; string nm = it->first;
// Create the name entry // Create the name entry
if (parsed.params.find(nm) == parsed.params.end()) if (parsed.params.find(nm) == parsed.params.end())
parsed.params[nm] = ""; parsed.params[nm].clear();
// Concatenate all chunks and decode the whole if the first one needs // Concatenate all chunks and decode the whole if the first one needs
// to. Yes, this is not quite right. // to. Yes, this is not quite right.
string value; string value;
@ -437,7 +437,7 @@ static bool rfc2047_decodeParsed(const std::string& charset,
{ {
DPRINT((stderr, "DecodeParsed: charset [%s] enc [%s] val [%s]\n", DPRINT((stderr, "DecodeParsed: charset [%s] enc [%s] val [%s]\n",
charset.c_str(), encoding.c_str(), value.c_str())); charset.c_str(), encoding.c_str(), value.c_str()));
utf8 = ""; utf8.clear();
string decoded; string decoded;
if (!stringlowercmp("b", encoding)) { if (!stringlowercmp("b", encoding)) {
@ -485,7 +485,7 @@ bool rfc2047_decode(const std::string& in, std::string &out)
Rfc2047States state = rfc2047ready; Rfc2047States state = rfc2047ready;
string encoding, charset, value, utf8; string encoding, charset, value, utf8;
out = ""; out.clear();
for (string::size_type ii = 0; ii < in.length(); ii++) { for (string::size_type ii = 0; ii < in.length(); ii++) {
char ch = in[ii]; char ch = in[ii];
@ -523,7 +523,7 @@ bool rfc2047_decode(const std::string& in, std::string &out)
if (value.length() > 0) { if (value.length() > 0) {
transcode(value, utf8, "ISO-8859-1", "UTF-8"); transcode(value, utf8, "ISO-8859-1", "UTF-8");
out += utf8; out += utf8;
value = ""; value.clear();
} }
state = rfc2047charset; state = rfc2047charset;
} }
@ -568,7 +568,9 @@ bool rfc2047_decode(const std::string& in, std::string &out)
return false; return false;
} }
out += utf8; out += utf8;
charset = encoding = value = ""; charset.clear();
encoding.clear();
value.clear();
} }
break; break;
default: state = rfc2047value; value += '?';value += ch;break; default: state = rfc2047value; value += '?';value += ch;break;
@ -583,7 +585,7 @@ bool rfc2047_decode(const std::string& in, std::string &out)
if (value.length() > 0) { if (value.length() > 0) {
transcode(value, utf8, "ISO-8859-1", "UTF-8"); transcode(value, utf8, "ISO-8859-1", "UTF-8");
out += utf8; out += utf8;
value = ""; value.clear();
} }
if (state != rfc2047base) if (state != rfc2047base)
return false; return false;

View File

@ -1,5 +1,5 @@
#ifndef lint #ifndef lint
static char rcsid[] = "@(#$Id: pathut.cpp,v 1.21 2008-07-01 08:26:08 dockes Exp $ (C) 2004 J.F.Dockes"; static char rcsid[] = "@(#$Id: pathut.cpp,v 1.22 2008-07-01 11:51:51 dockes Exp $ (C) 2004 J.F.Dockes";
#endif #endif
/* /*
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
@ -273,7 +273,7 @@ extern std::string path_absolute(const std::string &is)
if (s[0] != '/') { if (s[0] != '/') {
char buf[MAXPATHLEN]; char buf[MAXPATHLEN];
if (!getcwd(buf, MAXPATHLEN)) { if (!getcwd(buf, MAXPATHLEN)) {
return ""; return string();
} }
s = path_cat(string(buf), s); s = path_cat(string(buf), s);
} }
@ -289,7 +289,7 @@ extern std::string path_canon(const std::string &is)
if (s[0] != '/') { if (s[0] != '/') {
char buf[MAXPATHLEN]; char buf[MAXPATHLEN];
if (!getcwd(buf, MAXPATHLEN)) { if (!getcwd(buf, MAXPATHLEN)) {
return ""; return string();
} }
s = path_cat(string(buf), s); s = path_cat(string(buf), s);
} }

View File

@ -16,7 +16,7 @@
*/ */
#ifndef _PATHUT_H_INCLUDED_ #ifndef _PATHUT_H_INCLUDED_
#define _PATHUT_H_INCLUDED_ #define _PATHUT_H_INCLUDED_
/* @(#$Id: pathut.h,v 1.14 2008-07-01 08:26:08 dockes Exp $ (C) 2004 J.F.Dockes */ /* @(#$Id: pathut.h,v 1.15 2008-07-01 11:51:51 dockes Exp $ (C) 2004 J.F.Dockes */
#include <string> #include <string>
#include <list> #include <list>
@ -34,7 +34,7 @@ extern string path_cat(const string &s1, const string &s2);
/// Get the simple file name (get rid of any directory path prefix /// Get the simple file name (get rid of any directory path prefix
extern string path_getsimple(const string &s); extern string path_getsimple(const string &s);
/// Simple file name + optional suffix stripping /// Simple file name + optional suffix stripping
extern string path_basename(const string &s, const string &suff=""); extern string path_basename(const string &s, const string &suff=string());
/// Get the father directory /// Get the father directory
extern string path_getfather(const string &s); extern string path_getfather(const string &s);
/// Get the current user's home directory /// Get the current user's home directory

View File

@ -1,5 +1,5 @@
#ifndef lint #ifndef lint
static char rcsid[] = "@(#$Id: smallut.cpp,v 1.28 2008-05-08 09:57:29 dockes Exp $ (C) 2004 J.F.Dockes"; static char rcsid[] = "@(#$Id: smallut.cpp,v 1.29 2008-07-01 11:51:51 dockes Exp $ (C) 2004 J.F.Dockes";
#endif #endif
/* /*
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
@ -185,7 +185,7 @@ template <class T> bool stringToStrings(const string &s, T &tokens)
continue; continue;
case INQUOTE: case INQUOTE:
tokens.push_back(current); tokens.push_back(current);
current = ""; current.clear();
state = SPACE; state = SPACE;
continue; continue;
case ESCAPE: case ESCAPE:
@ -220,7 +220,7 @@ template <class T> bool stringToStrings(const string &s, T &tokens)
continue; continue;
case TOKEN: case TOKEN:
tokens.push_back(current); tokens.push_back(current);
current = ""; current.clear();
state = SPACE; state = SPACE;
continue; continue;
case INQUOTE: case INQUOTE:
@ -336,14 +336,14 @@ void trimstring(string &s, const char *ws)
{ {
string::size_type pos = s.find_first_not_of(ws); string::size_type pos = s.find_first_not_of(ws);
if (pos == string::npos) { if (pos == string::npos) {
s = ""; s.clear();
return; return;
} }
s.replace(0, pos, ""); s.replace(0, pos, string());
pos = s.find_last_not_of(ws); pos = s.find_last_not_of(ws);
if (pos != string::npos && pos != s.length()-1) if (pos != string::npos && pos != s.length()-1)
s.replace(pos+1, string::npos, ""); s.replace(pos+1, string::npos, string());
} }
// Remove some chars and replace them with spaces // Remove some chars and replace them with spaces