Procházet zdrojové kódy

dselect: Use m_asprintf() instead of ad-hoc string construction

Guillem Jover před 15 roky
rodič
revize
c0f00ddf9a
2 změnil soubory, kde provedl 5 přidání a 14 odebrání
  1. 3 7
      dselect/method.cc
  2. 2 7
      dselect/methparse.cc

+ 3 - 7
dselect/method.cc

@@ -105,13 +105,9 @@ static enum urqresult ensureoptions(void) {
 static enum urqresult lockmethod(void) {
   struct flock fl;
 
-  if (!methodlockfile) {
-    int l;
-    l= strlen(admindir);
-    methodlockfile= new char[l+sizeof(METHLOCKFILE)+2];
-    strcpy(methodlockfile,admindir);
-    strcpy(methodlockfile+l, "/" METHLOCKFILE);
-  }
+  if (methodlockfile == NULL)
+    m_asprintf(&methodlockfile, "%s/%s", admindir, METHLOCKFILE);
+
   if (methlockfd == -1) {
     methlockfd= open(methodlockfile, O_RDWR|O_CREAT|O_TRUNC, 0660);
     if (methlockfd == -1) {

+ 2 - 7
dselect/methparse.cc

@@ -235,15 +235,10 @@ void getcurrentopt() {
   char methoptbuf[IMETHODMAXLEN+1+IOPTIONMAXLEN+2];
   FILE *cmo;
   int l;
-  int admindirlen;
   char *p;
 
-  if (!methoptfile) {
-    admindirlen= strlen(admindir);
-    methoptfile= new char[admindirlen + sizeof(CMETHOPTFILE) + 2];
-    strcpy(methoptfile,admindir);
-    strcpy(methoptfile+admindirlen, "/" CMETHOPTFILE);
-  }
+  if (methoptfile == NULL)
+    m_asprintf(&methoptfile, "%s/%s", admindir, CMETHOPTFILE);
 
   coption= 0;
   cmo= fopen(methoptfile,"r");