[BACK]Return to file.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / mg

Diff for /src/usr.bin/mg/file.c between version 1.53 and 1.54

version 1.53, 2006/04/06 05:28:17 version 1.54, 2006/05/02 17:10:25
Line 6 
Line 6 
  *      File commands.   *      File commands.
  */   */
   
 #include "def.h"  
   
 #include <libgen.h>  #include <libgen.h>
   
   #include "def.h"
   
 /*  /*
  * Insert a file into the current buffer.  Real easy - just call the   * Insert a file into the current buffer.  Real easy - just call the
  * insertfile routine with the file name.   * insertfile routine with the file name.
Line 20 
Line 20 
 {  {
         char     fname[NFILEN], *bufp, *adjf;          char     fname[NFILEN], *bufp, *adjf;
   
         bufp = eread("Insert file: ", fname, NFILEN, EFNEW | EFCR | EFFILE);          if (getbufcwd(fname, sizeof(fname)) != TRUE)
                   fname[0] = '\0';
           bufp = eread("Insert file: ", fname, NFILEN,
               EFNEW | EFCR | EFFILE | EFDEF);
         if (bufp == NULL)          if (bufp == NULL)
                 return (ABORT);                  return (ABORT);
         else if (bufp[0] == '\0')          else if (bufp[0] == '\0')
Line 42 
Line 45 
 filevisit(int f, int n)  filevisit(int f, int n)
 {  {
         struct buffer   *bp;          struct buffer   *bp;
         char     fname[NFILEN], *bufp, *adjf, *slash;          char     fname[NFILEN], *bufp, *adjf;
         int      status;          int      status;
   
         if (curbp->b_fname && curbp->b_fname[0] != '\0') {          if (getbufcwd(fname, sizeof(fname)) != TRUE)
                 if (strlcpy(fname, curbp->b_fname, sizeof(fname)) >= sizeof(fname))  
                         return (FALSE);  
                 if ((slash = strrchr(fname, '/')) != NULL) {  
                         *(slash + 1) = '\0';  
                 }  
         }  
         else  
                 fname[0] = '\0';                  fname[0] = '\0';
   
         bufp = eread("Find file: ", fname, NFILEN,          bufp = eread("Find file: ", fname, NFILEN,
             EFNEW | EFCR | EFFILE | EFDEF);              EFNEW | EFCR | EFFILE | EFDEF);
         if (bufp == NULL)          if (bufp == NULL)
Line 88 
Line 83 
 filevisitalt(int f, int n)  filevisitalt(int f, int n)
 {  {
         struct buffer   *bp;          struct buffer   *bp;
         char     fname[NFILEN], *bufp, *adjf, *slash;          char     fname[NFILEN], *bufp, *adjf;
         int      status;          int      status;
   
         if (curbp->b_fname && curbp->b_fname[0] != '\0') {          if (getbufcwd(fname, sizeof(fname)) != TRUE)
                 if (strlcpy(fname, curbp->b_fname, sizeof(fname)) >= sizeof(fname))  
                         return (FALSE);  
                 if ((slash = strrchr(fname, '/')) != NULL) {  
                         *(slash + 1) = '\0';  
                 }  
         } else  
                 fname[0] = '\0';                  fname[0] = '\0';
   
         bufp = eread("Find alternate file: ", fname, NFILEN,          bufp = eread("Find alternate file: ", fname, NFILEN,
             EFNEW | EFCR | EFFILE | EFDEF);              EFNEW | EFCR | EFFILE | EFDEF);
         if (bufp == NULL)          if (bufp == NULL)
Line 152 
Line 140 
         char     fname[NFILEN], *adjf, *bufp;          char     fname[NFILEN], *adjf, *bufp;
         int      status;          int      status;
   
           if (getbufcwd(fname, sizeof(fname)) != TRUE)
                   fname[0] = '\0';
         if ((bufp = eread("Find file in other window: ", fname, NFILEN,          if ((bufp = eread("Find file in other window: ", fname, NFILEN,
             EFNEW | EFCR | EFFILE)) == NULL)              EFNEW | EFCR | EFFILE | EFDEF)) == NULL)
                 return (ABORT);                  return (ABORT);
         else if (bufp[0] == '\0')          else if (bufp[0] == '\0')
                 return (FALSE);                  return (FALSE);
Line 194 
Line 184 
                         return (bp);                          return (bp);
         }          }
         /* Not found. Create a new one, adjusting name first */          /* Not found. Create a new one, adjusting name first */
         if (baugname(bname, fname, sizeof(bname)) == FALSE)          if (augbname(bname, fname, sizeof(bname)) == FALSE)
                 return (NULL);                  return (NULL);
   
         bp = bfind(bname, TRUE);          bp = bfind(bname, TRUE);
Line 305 
Line 295 
   
         /* cheap */          /* cheap */
         bp = curbp;          bp = curbp;
         if (newname != NULL)          if (newname != NULL) {
                 (void)strlcpy(bp->b_fname, newname, sizeof bp->b_fname);                  (void)strlcpy(bp->b_fname, newname, sizeof(bp->b_fname));
                   (void)strlcpy(bp->b_cwd, dirname(newname),
                       sizeof(bp->b_cwd));
                   (void)strlcat(bp->b_cwd, "/", sizeof(bp->b_cwd));
           }
   
         /* hard file open */          /* hard file open */
         if ((s = ffropen(fname, (replacebuf == TRUE) ? bp : NULL)) == FIOERR)          if ((s = ffropen(fname, (replacebuf == TRUE) ? bp : NULL)) == FIOERR)
Line 331 
Line 325 
                 undo_enable(x);                  undo_enable(x);
                 curbp = bp;                  curbp = bp;
                 return (showbuffer(bp, curwp, WFHARD | WFMODE));                  return (showbuffer(bp, curwp, WFHARD | WFMODE));
           } else {
                   (void)strlcpy(bp->b_cwd, dirname(fname), sizeof(bp->b_cwd));
                   (void)strlcat(bp->b_cwd, "/", sizeof(bp->b_cwd));
         }          }
         opos = curwp->w_doto;          opos = curwp->w_doto;
   
Line 474 
Line 471 
         char     fname[NFILEN], bn[NBUFN];          char     fname[NFILEN], bn[NBUFN];
         char    *adjfname, *bufp;          char    *adjfname, *bufp;
   
           if (getbufcwd(fname, sizeof(fname)) != TRUE)
                   fname[0] = '\0';
         if ((bufp = eread("Write file: ", fname, NFILEN,          if ((bufp = eread("Write file: ", fname, NFILEN,
             EFNEW | EFCR | EFFILE)) == NULL)              EFDEF | EFNEW | EFCR | EFFILE)) == NULL)
                 return (ABORT);                  return (ABORT);
         else if (bufp[0] == '\0')          else if (bufp[0] == '\0')
                 return (FALSE);                  return (FALSE);
Line 487 
Line 486 
         bzero(&curbp->b_fi, sizeof(curbp->b_fi));          bzero(&curbp->b_fi, sizeof(curbp->b_fi));
         if ((s = writeout(curbp, adjfname)) == TRUE) {          if ((s = writeout(curbp, adjfname)) == TRUE) {
                 (void)strlcpy(curbp->b_fname, adjfname, sizeof(curbp->b_fname));                  (void)strlcpy(curbp->b_fname, adjfname, sizeof(curbp->b_fname));
                   if (getbufcwd(curbp->b_cwd, sizeof(curbp->b_cwd)) != TRUE)
                           (void)strlcpy(curbp->b_cwd, "/", sizeof(curbp->b_cwd));
                 free(curbp->b_bname);                  free(curbp->b_bname);
                 if (baugname(bn, basename(curbp->b_fname), sizeof(bn))                  if (augbname(bn, basename(curbp->b_fname), sizeof(bn))
                     == FALSE)                      == FALSE)
                         return (FALSE);                          return (FALSE);
                 if ((curbp->b_bname = strdup(bn)) == NULL)                  if ((curbp->b_bname = strdup(bn)) == NULL)

Legend:
Removed from v.1.53  
changed lines
  Added in v.1.54