Skip to content
Permalink
Browse files
Username is now accurately reported, which means that the default use…
…r dir works more correctly.
  • Loading branch information
icculus committed Apr 2, 2002
1 parent af1452a commit 6519a249ff2c64f8a17f2984387aea3a05e9f1bd
Showing with 24 additions and 11 deletions.
  1. +24 −11 platform/macclassic.c
@@ -13,16 +13,16 @@
* Please note that I haven't tried this code with CarbonLib or under
* MacOS X at all. The code in unix.c is known to work with Darwin,
* and you may or may not be better off using that.
*
* GetDefaultUser() from PPCToolbox.h isn't supported in CarbonLib, for one.
*/
#ifdef __PHYSFS_CARBONIZED__
#include <Carbon.h>
#else
#include <OSUtils.h>
#include <Processes.h>
#include <Files.h>
#include <PPCToolbox.h>
#include <TextUtils.h>
#include <Resources.h>
#include <MacMemory.h>
#endif

#define __PHYSICSFS_INTERNAL__
@@ -118,14 +118,27 @@ char *__PHYSFS_platformCalcBaseDir(const char *argv0)
char *__PHYSFS_platformGetUserName(void)
{
char *retval = NULL;
Str32 name;
UInt32 ref;
BAIL_IF_MACRO(GetDefaultUser(&ref, name) != noErr, ERR_OS_ERROR, NULL);

retval = (char *) malloc(name[0] + 1);
BAIL_IF_MACRO(retval == NULL, ERR_OUT_OF_MEMORY, NULL);
memcpy(retval, &name[1], name[0]);
retval[name[0]] = '\0'; /* null-terminate it. */
StringHandle strHandle;
short origResourceFile = CurResFile();

/* use the System resource file. */
UseResFile(0);
/* apparently, -16096 specifies the username. */
strHandle = GetString(-16096);
UseResFile(origResourceFile);
BAIL_IF_MACRO(strHandle == NULL, ERR_OS_ERROR, NULL);

HLock((Handle) strHandle);
retval = (char *) malloc((*strHandle)[0] + 1);
if (retval == NULL)
{
HUnlock((Handle) strHandle);
BAIL_MACRO(ERR_OUT_OF_MEMORY, NULL);
} /* if */
memcpy(retval, &(*strHandle)[1], (*strHandle)[0]);
retval[(*strHandle)[0]] = '\0'; /* null-terminate it. */
HUnlock((Handle) strHandle);

return(retval);
} /* __PHYSFS_platformGetUserName */

0 comments on commit 6519a24

Please sign in to comment.