diff options
author | Adrian Lees <adrian@aemulor.com> | 2005-07-16 14:02:15 +0000 |
---|---|---|
committer | Adrian Lees <adrian@aemulor.com> | 2005-07-16 14:02:15 +0000 |
commit | 81a39c30755e9bb61a10a0edb16fec8996100024 (patch) | |
tree | 1306ca5b594ad5b01811be43e67cfca4e1dcfe92 | |
parent | c38381392154c47b6f03362789d5bde8a5933ec4 (diff) | |
download | netsurf-81a39c30755e9bb61a10a0edb16fec8996100024.tar.gz netsurf-81a39c30755e9bb61a10a0edb16fec8996100024.tar.bz2 |
[project @ 2005-07-16 14:02:15 by adrianl]
Update sprite name when saving
svn path=/import/netsurf/; revision=1795
-rw-r--r-- | riscos/save.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/riscos/save.c b/riscos/save.c index 956bb8c6a..0c4f8ea0b 100644 --- a/riscos/save.c +++ b/riscos/save.c @@ -704,9 +704,13 @@ bool ro_gui_save_content(struct content *c, char *path) bool ro_gui_save_complete(struct content *c, char *path) { + osspriteop_header *sprite; + char name[12]; char buf[256]; FILE *fp; os_error *error; + size_t len; + char *dot; /* Create dir */ error = xosfile_create_dir(path, 0); @@ -735,6 +739,20 @@ bool ro_gui_save_complete(struct content *c, char *path) return false; } + /* Make sure the sprite name matches the directory name, because + the user may have renamed the directory since we created the + thumbnail sprite */ + + dot = strrchr(path, '.'); + if (dot) dot++; else dot = path; + len = strlen(dot); + if (len >= 12) len = 12; + + sprite = (osspriteop_header*)((byte*)saveas_area + saveas_area->first); + memcpy(name, sprite->name, 12); /* remember original name */ + memcpy(sprite->name, dot, len); + memset(sprite->name + len, 0, 12 - len); + /* Create !Sprites */ snprintf(buf, sizeof buf, "%s.!Sprites", path); @@ -746,6 +764,9 @@ bool ro_gui_save_complete(struct content *c, char *path) return false; } + /* restore sprite name in case the save fails and we need to try again */ + memcpy(sprite->name, name, 12); + return save_complete(c, path); } |