diff -rc nano-1.1.6/files.c nano-1.1.6-patch/files.c *** nano-1.1.6/files.c Fri Jan 4 19:45:44 2002 --- nano-1.1.6-patch/files.c Wed Feb 20 06:48:40 2002 *************** *** 2467,2469 **** --- 2467,2489 ---- #endif + + void getnextfn(char *name, char *ret) + { + int i = 0; + char cnum[12]; + char buf[strlen(name)+12]; + struct stat fs; + + strcpy(buf,name); + while(1) { + if (stat(buf,&fs) == -1) { + break; + } + i++; + sprintf(cnum,".%d",i); + strcpy(buf,name); + strcat(buf,cnum); + } + strcpy(ret,buf); + } diff -rc nano-1.1.6/nano.c nano-1.1.6-patch/nano.c *** nano-1.1.6/nano.c Mon Jan 21 14:32:22 2002 --- nano-1.1.6-patch/nano.c Wed Feb 20 06:49:01 2002 *************** *** 158,163 **** --- 158,164 ---- void die_save_file(char *die_filename) { + char *ret; char *name; int i; *************** *** 165,178 **** * but we might as well TRY. */ if (die_filename[0] == '\0') { name = "nano.save"; ! i = write_file(name, 1, 0, 0); } else { char *buf = charalloc(strlen(die_filename) + 6); strcpy(buf, die_filename); strcat(buf, ".save"); ! i = write_file(buf, 1, 0, 0); ! name = buf; } if (i != -1) --- 166,186 ---- * but we might as well TRY. */ if (die_filename[0] == '\0') { name = "nano.save"; ! ret = malloc(strlen(name) + 12); ! getnextfn(name,ret); ! i = write_file(ret, 1, 0, 0); ! strcpy(name,ret); ! free(ret); } else { char *buf = charalloc(strlen(die_filename) + 6); strcpy(buf, die_filename); strcat(buf, ".save"); ! ret = malloc(strlen(buf) + 11); ! getnextfn(buf,ret); ! i = write_file(ret, 1, 0, 0); ! strcpy(name,ret); ! free(ret); } if (i != -1)