Skip to content

Commit

Permalink
Implemented PyMac_GetFullPathname for MacPython.
Browse files Browse the repository at this point in the history
  • Loading branch information
jackjansen committed Sep 11, 2001
1 parent 78e0fc7 commit cf03193
Showing 1 changed file with 13 additions and 3 deletions.
16 changes: 13 additions & 3 deletions Mac/Python/macglue.c
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,7 @@ get_folder_parent (FSSpec * fss, FSSpec * parent)
/* Given an FSSpec return a full, colon-separated pathname */

OSErr
PyMac_GetFullPath (FSSpec *fss, char *buf)
PyMac_GetFullPathname (FSSpec *fss, char *buf, int length)
{
short err;
FSSpec fss_parent, fss_current;
Expand All @@ -212,6 +212,10 @@ PyMac_GetFullPath (FSSpec *fss, char *buf)

fss_current = *fss;
plen = fss_current.name[0];
if ( plen+2 > length ) {
*buf = 0;
return errFSNameTooLong;
}
memcpy(buf, &fss_current.name[1], plen);
buf[plen] = 0;
/* Special case for disk names */
Expand All @@ -222,19 +226,25 @@ PyMac_GetFullPath (FSSpec *fss, char *buf)
}
while (fss_current.parID > 1) {
/* Get parent folder name */
if (err = get_folder_parent(&fss_current, &fss_parent))
if (err = get_folder_parent(&fss_current, &fss_parent)) {
*buf = 0;
return err;
}
fss_current = fss_parent;
/* Prepend path component just found to buf */
plen = fss_current.name[0];
if (strlen(buf) + plen + 1 > 1024) {
/* Oops... Not enough space (shouldn't happen) */
*buf = 0;
return -1;
return errFSNameTooLong;
}
memcpy(tmpbuf, &fss_current.name[1], plen);
tmpbuf[plen] = ':';
strcpy(&tmpbuf[plen+1], buf);
if ( strlen(tmpbuf) > length ) {
*buf = 0;
return errFSNameTooLong;
}
strcpy(buf, tmpbuf);
}
return 0;
Expand Down

0 comments on commit cf03193

Please sign in to comment.