int List::backup() {
FILE *fp;
if( (fp = fopen(FILE_NAME, "wb") ) == NULL )
return 1;
int i;
Node *dummy;
fwrite(&members, sizeof(members), 1, fp);
for(i = 0, dummy = list; i < members; i++, dummy = dummy->next)
fwrite(dummy, sizeof(Node), 1, fp);
fclose(fp);
return 0;
}
int List::load() {
FILE *fp;
if( (fp = fopen(FILE_NAME, "rb")) == NULL )
return 1;
int i;
Node *dummy;
fread(&members, sizeof(members), 1, fp);
list = dummy;
for(i = 0; i < members; i++, dummy = dummy->next) {
dummy = new Node;
fread(dummy, sizeof(Node), 1, fp);
}
return 0;
}
aW50IExpc3Q6OmJhY2t1cCgpICAgIHsKICAgIEZJTEUgKmZwOwoKICAgIGlmKCAoZnAgPSBmb3BlbihGSUxFX05BTUUsICJ3YiIpICkgPT0gTlVMTCApCiAgICAgICAgcmV0dXJuIDE7CgogICAgaW50IGk7CiAgICBOb2RlICpkdW1teTsKCiAgICBmd3JpdGUoJm1lbWJlcnMsIHNpemVvZihtZW1iZXJzKSwgMSwgZnApOwogICAgZm9yKGkgPSAwLCBkdW1teSA9IGxpc3Q7IGkgPCBtZW1iZXJzOyBpKyssIGR1bW15ID0gZHVtbXktPm5leHQpCiAgICAgICAgZndyaXRlKGR1bW15LCBzaXplb2YoTm9kZSksIDEsIGZwKTsKCiAgICBmY2xvc2UoZnApOwogICAgcmV0dXJuIDA7Cn0KCmludCBMaXN0Ojpsb2FkKCkgICB7CiAgICBGSUxFICpmcDsKCiAgICBpZiggKGZwID0gZm9wZW4oRklMRV9OQU1FLCAicmIiKSkgPT0gTlVMTCApCiAgICAgICAgcmV0dXJuIDE7CgogICAgaW50IGk7CiAgICBOb2RlICpkdW1teTsKCiAgICBmcmVhZCgmbWVtYmVycywgc2l6ZW9mKG1lbWJlcnMpLCAxLCBmcCk7CiAgICBsaXN0ID0gZHVtbXk7CgogICAgZm9yKGkgPSAwOyBpIDwgbWVtYmVyczsgaSsrLCBkdW1teSA9IGR1bW15LT5uZXh0KSAgIHsKICAgICAgICBkdW1teSA9IG5ldyBOb2RlOwogICAgICAgIGZyZWFkKGR1bW15LCBzaXplb2YoTm9kZSksIDEsIGZwKTsKICAgIH0KCiAgICByZXR1cm4gMDsKfQo=