Home | History | Annotate | Download | only in adventure

Lines Matching defs:sf

119 	struct savefile *sf;
121 sf = malloc(sizeof(*sf));
122 if (sf == NULL) {
125 sf->f = fopen(name, forwrite ? "w" : "r");
126 if (sf->f == NULL) {
127 free(sf);
133 sf->name = name;
134 sf->warned = false;
135 sf->bintextpos = 0;
136 sf->key = 0;
137 crc_start(&sf->crc);
138 memset(sf->pad, 0, sizeof(sf->pad));
139 sf->padpos = 0;
140 return sf;
147 savefile_rawread(struct savefile *sf, void *data, size_t len)
151 result = fread(data, 1, len, sf->f);
152 if (result != len || ferror(sf->f)) {
153 fprintf(stderr, "Oops: error reading %s.\n", sf->name);
154 sf->warned = true;
164 savefile_rawwrite(struct savefile *sf, const void *data, size_t len)
168 result = fwrite(data, 1, len, sf->f);
169 if (result != len || ferror(sf->f)) {
170 fprintf(stderr, "Oops: error writing %s.\n", sf->name);
171 sf->warned = true;
181 savefile_close(struct savefile *sf)
185 if (sf->bintextpos > 0) {
186 savefile_rawwrite(sf, "\n", 1);
190 if (fclose(sf->f)) {
191 if (!sf->warned) {
192 fprintf(stderr, "Oops: error on %s.\n", sf->name);
196 free(sf);
204 savefile_bintextread(struct savefile *sf, void *data, size_t len)
213 ch = fgetc(sf->f);
214 if (ch == EOF || ferror(sf->f)) {
215 fprintf(stderr, "Oops: error reading %s.\n", sf->name);
216 sf->warned = true;
231 savefile_binread(struct savefile *sf, void *data, size_t len)
245 if (savefile_bintextread(sf, buf, amt*2)) {
266 savefile_bintextwrite(struct savefile *sf, const void *data, size_t len)
274 amt = BINTEXT_WIDTH - sf->bintextpos;
278 if (savefile_rawwrite(sf, udata + pos, amt)) {
282 sf->bintextpos += amt;
283 if (sf->bintextpos >= BINTEXT_WIDTH) {
284 savefile_rawwrite(sf, "\n", 1);
285 sf->bintextpos = 0;
295 savefile_binwrite(struct savefile *sf, const void *data, size_t len)
310 if (savefile_bintextwrite(sf, buf, bpos)) {
316 if (savefile_bintextwrite(sf, buf, bpos)) {
363 savefile_key(struct savefile *sf, uint32_t key)
365 sf->key = 0;
366 crc_start(&sf->crc);
367 hash(&sf->key, sizeof(sf->key), sf->pad, sizeof(sf->pad));
368 sf->padpos = 0;
376 savefile_getpad(struct savefile *sf)
380 ret = sf->pad[sf->padpos++];
381 if (sf->padpos >= sizeof(sf->pad)) {
382 hash(sf->pad, sizeof(sf->pad), sf->pad, sizeof(sf->pad));
383 sf->padpos = 0;
392 savefile_cread(struct savefile *sf, void *data, size_t len)
406 if (savefile_binread(sf, buf, amt)) {
411 ch ^= savefile_getpad(sf);
416 crc_add(&sf->crc, data, len);
424 savefile_cwrite(struct savefile *sf, const void *data, size_t len)
440 ch ^= savefile_getpad(sf);
443 if (savefile_binwrite(sf, buf, amt)) {
448 crc_add(&sf->crc, data, len);
664 struct savefile *sf;
671 sf = savefile_open(outfile, true);
672 if (sf == NULL) {
676 if (savefile_rawwrite(sf, header, strlen(header))) {
677 savefile_close(sf);
682 if (savefile_binwrite(sf, &version, sizeof(version))) {
683 savefile_close(sf);
691 if (savefile_binwrite(sf, &writeable_key, sizeof(writeable_key))) {
692 savefile_close(sf);
699 savefile_key(sf, key);
707 if (savefile_cwrite(sf, &val, sizeof(val))) {
708 savefile_close(sf);
721 if (savefile_cwrite(sf, &val, sizeof(val))) {
722 savefile_close(sf);
733 if (savefile_cwrite(sf, save_blobs[i].ptr, save_blobs[i].len)) {
734 savefile_close(sf);
740 sum = htonl(crc_get(&sf->crc));
741 if (savefile_binwrite(sf, &sum, sizeof(&sum))) {
742 savefile_close(sf);
745 savefile_close(sf);
755 struct savefile *sf;
763 sf = savefile_open(infile, false);
764 if (sf == NULL) {
768 if (savefile_rawread(sf, buf, headersize)) {
769 savefile_close(sf);
774 savefile_close(sf);
781 if (savefile_binread(sf, &version, sizeof(version))) {
782 savefile_close(sf);
793 savefile_close(sf);
800 if (savefile_binread(sf, &key, sizeof(key))) {
801 savefile_close(sf);
805 savefile_key(sf, key);
814 if (savefile_cread(sf, &val, sizeof(val))) {
815 savefile_close(sf);
828 if (savefile_cread(sf, &val, sizeof(val))) {
829 savefile_close(sf);
842 if (savefile_cread(sf, save_blobs[i].ptr, save_blobs[i].len)) {
843 savefile_close(sf);
849 if (savefile_binread(sf, &sum, sizeof(&sum))) {
850 savefile_close(sf);
855 if (!skipsum && sum != crc_get(&sf->crc)) {
857 savefile_close(sf);
860 savefile_close(sf);