summaryrefslogtreecommitdiff
path: root/riscos/save.c
diff options
context:
space:
mode:
authorAdrian Lees <adrian@aemulor.com>2005-07-16 14:02:15 +0000
committerAdrian Lees <adrian@aemulor.com>2005-07-16 14:02:15 +0000
commit81a39c30755e9bb61a10a0edb16fec8996100024 (patch)
tree1306ca5b594ad5b01811be43e67cfca4e1dcfe92 /riscos/save.c
parentc38381392154c47b6f03362789d5bde8a5933ec4 (diff)
downloadnetsurf-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
Diffstat (limited to 'riscos/save.c')
-rw-r--r--riscos/save.c21
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);
}