fixed cart name loaded from cmd
This commit is contained in:
parent
4f7f2e924c
commit
221998d1c4
|
@ -213,8 +213,10 @@ static void commandDoneLine(Console* console, bool newLine)
|
||||||
if(newLine)
|
if(newLine)
|
||||||
printLine(console);
|
printLine(console);
|
||||||
|
|
||||||
if(strlen(fsGetDir(console->fs)))
|
char dir[FILENAME_MAX];
|
||||||
printBack(console, fsGetDir(console->fs));
|
fsGetDir(console->fs, dir);
|
||||||
|
if(strlen(dir))
|
||||||
|
printBack(console, dir);
|
||||||
|
|
||||||
printFront(console, ">");
|
printFront(console, ">");
|
||||||
}
|
}
|
||||||
|
@ -2854,7 +2856,9 @@ static bool cmdLoadCart(Console* console, const char* name)
|
||||||
if(hasProjectExt(name))
|
if(hasProjectExt(name))
|
||||||
{
|
{
|
||||||
loadProject(console, name, data, size, console->embed.file);
|
loadProject(console, name, data, size, console->embed.file);
|
||||||
setCartName(console, fsFilename(name));
|
char cartName[FILENAME_MAX];
|
||||||
|
fsFilename(name, cartName);
|
||||||
|
setCartName(console, cartName);
|
||||||
console->embed.yes = true;
|
console->embed.yes = true;
|
||||||
console->skipStart = true;
|
console->skipStart = true;
|
||||||
done = true;
|
done = true;
|
||||||
|
@ -2865,7 +2869,12 @@ static bool cmdLoadCart(Console* console, const char* name)
|
||||||
if(hasExt(name, CART_EXT))
|
if(hasExt(name, CART_EXT))
|
||||||
{
|
{
|
||||||
loadCart(console->tic, console->embed.file, data, size, true);
|
loadCart(console->tic, console->embed.file, data, size, true);
|
||||||
setCartName(console, fsFilename(name));
|
|
||||||
|
char cartName[FILENAME_MAX];
|
||||||
|
fsFilename(name, cartName);
|
||||||
|
|
||||||
|
setCartName(console, cartName);
|
||||||
|
|
||||||
console->embed.yes = true;
|
console->embed.yes = true;
|
||||||
done = true;
|
done = true;
|
||||||
}
|
}
|
||||||
|
|
20
src/fs.c
20
src/fs.c
|
@ -523,9 +523,9 @@ void fsDirBack(FileSystem* fs)
|
||||||
*ptr = '\0';
|
*ptr = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* fsGetDir(FileSystem* fs)
|
void fsGetDir(FileSystem* fs, char* dir)
|
||||||
{
|
{
|
||||||
return fs->work;
|
strcpy(dir, fs->work);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool fsChangeDir(FileSystem* fs, const char* dir)
|
bool fsChangeDir(FileSystem* fs, const char* dir)
|
||||||
|
@ -753,6 +753,7 @@ static void fsFullname(const char *path, char *fullname)
|
||||||
freeString(pathString);
|
freeString(pathString);
|
||||||
|
|
||||||
const char* res = stringToUtf8(wpath);
|
const char* res = stringToUtf8(wpath);
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
const char* res = realpath(path, NULL);
|
const char* res = realpath(path, NULL);
|
||||||
|
@ -763,17 +764,18 @@ static void fsFullname(const char *path, char *fullname)
|
||||||
free((void*)res);
|
free((void*)res);
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* fsFilename(const char *path)
|
void fsFilename(const char *path, char* out)
|
||||||
{
|
{
|
||||||
static char full[FILENAME_MAX];
|
char full[FILENAME_MAX];
|
||||||
fsFullname(path, full);
|
fsFullname(path, full);
|
||||||
|
|
||||||
const char* base = fsBasename(path);
|
char base[FILENAME_MAX];
|
||||||
|
fsBasename(path, base);
|
||||||
|
|
||||||
return base ? full + strlen(fsBasename(path)) : NULL;
|
strcpy(out, full + strlen(base));
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* fsBasename(const char *path)
|
void fsBasename(const char *path, char* out)
|
||||||
{
|
{
|
||||||
char* result = NULL;
|
char* result = NULL;
|
||||||
|
|
||||||
|
@ -784,7 +786,7 @@ const char* fsBasename(const char *path)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
{
|
{
|
||||||
static char full[FILENAME_MAX];
|
char full[FILENAME_MAX];
|
||||||
fsFullname(path, full);
|
fsFullname(path, full);
|
||||||
|
|
||||||
struct tic_stat_struct s;
|
struct tic_stat_struct s;
|
||||||
|
@ -818,7 +820,7 @@ const char* fsBasename(const char *path)
|
||||||
if(result && result[strlen(result)-1] != SEP[0])
|
if(result && result[strlen(result)-1] != SEP[0])
|
||||||
strcat(result, SEP);
|
strcat(result, SEP);
|
||||||
|
|
||||||
return result;
|
strcpy(out, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool fsExists(const char* name)
|
bool fsExists(const char* name)
|
||||||
|
|
6
src/fs.h
6
src/fs.h
|
@ -62,8 +62,8 @@ void fsMakeDir(FileSystem* fs, const char* name);
|
||||||
bool fsExistsFile(FileSystem* fs, const char* name);
|
bool fsExistsFile(FileSystem* fs, const char* name);
|
||||||
u64 fsMDate(FileSystem* fs, const char* name);
|
u64 fsMDate(FileSystem* fs, const char* name);
|
||||||
|
|
||||||
const char* fsBasename(const char *path);
|
void fsBasename(const char *path, char* out);
|
||||||
const char* fsFilename(const char *path);
|
void fsFilename(const char *path, char* out);
|
||||||
bool fsExists(const char* name);
|
bool fsExists(const char* name);
|
||||||
void* fsReadFile(const char* path, s32* size);
|
void* fsReadFile(const char* path, s32* size);
|
||||||
bool fsWriteFile(const char* path, const void* data, s32 size);
|
bool fsWriteFile(const char* path, const void* data, s32 size);
|
||||||
|
@ -74,6 +74,6 @@ void fsOpenWorkingFolder(FileSystem* fs);
|
||||||
bool fsIsDir(FileSystem* fs, const char* dir);
|
bool fsIsDir(FileSystem* fs, const char* dir);
|
||||||
bool fsIsInPublicDir(FileSystem* fs);
|
bool fsIsInPublicDir(FileSystem* fs);
|
||||||
bool fsChangeDir(FileSystem* fs, const char* dir);
|
bool fsChangeDir(FileSystem* fs, const char* dir);
|
||||||
const char* fsGetDir(FileSystem* fs);
|
void fsGetDir(FileSystem* fs, char* out);
|
||||||
void fsDirBack(FileSystem* fs);
|
void fsDirBack(FileSystem* fs);
|
||||||
void fsHomeDir(FileSystem* fs);
|
void fsHomeDir(FileSystem* fs);
|
|
@ -1809,7 +1809,13 @@ Studio* studioInit(s32 argc, char **argv, s32 samplerate, const char* folder, Sy
|
||||||
|
|
||||||
impl.system = system;
|
impl.system = system;
|
||||||
|
|
||||||
impl.fs = createFileSystem(argc > 1 && fsExists(argv[1]) ? fsBasename(argv[1]) : folder);
|
if(argc > 1 && fsExists(argv[1]))
|
||||||
|
{
|
||||||
|
char name[FILENAME_MAX];
|
||||||
|
fsBasename(argv[1], name);
|
||||||
|
impl.fs = createFileSystem(name);
|
||||||
|
}
|
||||||
|
else impl.fs = createFileSystem(folder);
|
||||||
|
|
||||||
impl.tic80local = (tic80_local*)tic80_create(impl.samplerate);
|
impl.tic80local = (tic80_local*)tic80_create(impl.samplerate);
|
||||||
impl.studio.tic = impl.tic80local->memory;
|
impl.studio.tic = impl.tic80local->memory;
|
||||||
|
|
20
src/surf.c
20
src/surf.c
|
@ -226,9 +226,10 @@ static void drawBottomToolbar(Surf* surf, s32 x, s32 y)
|
||||||
tic->api.rect(tic, x, y + Height, TIC80_WIDTH, 1, tic_color_black);
|
tic->api.rect(tic, x, y + Height, TIC80_WIDTH, 1, tic_color_black);
|
||||||
{
|
{
|
||||||
char label[FILENAME_MAX];
|
char label[FILENAME_MAX];
|
||||||
|
char dir[FILENAME_MAX];
|
||||||
|
fsGetDir(surf->fs, dir);
|
||||||
|
|
||||||
sprintf(label, "/%s", fsGetDir(surf->fs));
|
sprintf(label, "/%s", dir);
|
||||||
|
|
||||||
s32 xl = x + MAIN_OFFSET;
|
s32 xl = x + MAIN_OFFSET;
|
||||||
s32 yl = y + (Height - TIC_FONT_HEIGHT)/2;
|
s32 yl = y + (Height - TIC_FONT_HEIGHT)/2;
|
||||||
tic->api.text(tic, label, xl, yl+1, tic_color_black);
|
tic->api.text(tic, label, xl, yl+1, tic_color_black);
|
||||||
|
@ -576,7 +577,10 @@ static void initMenu(Surf* surf)
|
||||||
.surf = surf,
|
.surf = surf,
|
||||||
};
|
};
|
||||||
|
|
||||||
if(strcmp(fsGetDir(surf->fs), "") != 0)
|
char dir[FILENAME_MAX];
|
||||||
|
fsGetDir(surf->fs, dir);
|
||||||
|
|
||||||
|
if(strcmp(dir, "") != 0)
|
||||||
addMenuItem("..", NULL, 0, &data, true);
|
addMenuItem("..", NULL, 0, &data, true);
|
||||||
|
|
||||||
fsEnumFiles(surf->fs, addMenuItem, &data);
|
fsEnumFiles(surf->fs, addMenuItem, &data);
|
||||||
|
@ -588,12 +592,13 @@ static void initMenu(Surf* surf)
|
||||||
static void onGoBackDir(Surf* surf)
|
static void onGoBackDir(Surf* surf)
|
||||||
{
|
{
|
||||||
char last[FILENAME_MAX];
|
char last[FILENAME_MAX];
|
||||||
strcpy(last, fsGetDir(surf->fs));
|
fsGetDir(surf->fs, last);
|
||||||
|
|
||||||
fsDirBack(surf->fs);
|
fsDirBack(surf->fs);
|
||||||
initMenu(surf);
|
initMenu(surf);
|
||||||
|
|
||||||
const char* current = fsGetDir(surf->fs);
|
char current[FILENAME_MAX];
|
||||||
|
fsGetDir(surf->fs, current);
|
||||||
|
|
||||||
for(s32 i = 0; i < surf->menu.count; i++)
|
for(s32 i = 0; i < surf->menu.count; i++)
|
||||||
{
|
{
|
||||||
|
@ -628,7 +633,10 @@ static void changeDirectory(Surf* surf, const char* dir)
|
||||||
{
|
{
|
||||||
if(strcmp(dir, "..") == 0)
|
if(strcmp(dir, "..") == 0)
|
||||||
{
|
{
|
||||||
if(strcmp(fsGetDir(surf->fs), "") != 0)
|
char dir[FILENAME_MAX];
|
||||||
|
fsGetDir(surf->fs, dir);
|
||||||
|
|
||||||
|
if(strcmp(dir, "") != 0)
|
||||||
{
|
{
|
||||||
playSystemSfx(2);
|
playSystemSfx(2);
|
||||||
resetMovie(surf, &MenuRightHideState, onGoBackDir);
|
resetMovie(surf, &MenuRightHideState, onGoBackDir);
|
||||||
|
|
Loading…
Reference in New Issue