teste de publish
Dependencies: DS1820 HighSpeedAnalogIn devices mbed
funcoesSDCard.cpp@0:1c0a769988ee, 2017-03-24 (annotated)
- Committer:
- brunofgc
- Date:
- Fri Mar 24 15:54:41 2017 +0000
- Revision:
- 0:1c0a769988ee
- Child:
- 1:0e0967c88590
Saidas digitais com pwm ok, entradas analogicas ok
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
brunofgc | 0:1c0a769988ee | 1 | #include "funcoesSDCard.h" |
brunofgc | 0:1c0a769988ee | 2 | #include "serialPC.h" |
brunofgc | 0:1c0a769988ee | 3 | |
brunofgc | 0:1c0a769988ee | 4 | arquivoSD sdCard::envio; |
brunofgc | 0:1c0a769988ee | 5 | arquivoSD sdCard::armazenamento; |
brunofgc | 0:1c0a769988ee | 6 | arquivoSD sdCard::config; |
brunofgc | 0:1c0a769988ee | 7 | arquivoSD sdCard::devices; |
brunofgc | 0:1c0a769988ee | 8 | arquivoSD sdCard::status; |
brunofgc | 0:1c0a769988ee | 9 | arquivoSD sdCard::tempFile; |
brunofgc | 0:1c0a769988ee | 10 | |
brunofgc | 0:1c0a769988ee | 11 | char sdCard::nomeArquivoEmRecebimento[30]; |
brunofgc | 0:1c0a769988ee | 12 | |
brunofgc | 0:1c0a769988ee | 13 | |
brunofgc | 0:1c0a769988ee | 14 | bool sdCard::deleteSentFiles; |
brunofgc | 0:1c0a769988ee | 15 | |
brunofgc | 0:1c0a769988ee | 16 | SDFileSystem sd(p11, p12, p13, p14, "sd"); |
brunofgc | 0:1c0a769988ee | 17 | |
brunofgc | 0:1c0a769988ee | 18 | |
brunofgc | 0:1c0a769988ee | 19 | bool sdCard::abreArquivo(arquivoSD *arquivo,char *mode){ |
brunofgc | 0:1c0a769988ee | 20 | //Struct do arquivo e seu nome |
brunofgc | 0:1c0a769988ee | 21 | if(arquivo->aberto){ |
brunofgc | 0:1c0a769988ee | 22 | if(!fclose(arquivo->fp)){ |
brunofgc | 0:1c0a769988ee | 23 | return false; |
brunofgc | 0:1c0a769988ee | 24 | } |
brunofgc | 0:1c0a769988ee | 25 | } |
brunofgc | 0:1c0a769988ee | 26 | |
brunofgc | 0:1c0a769988ee | 27 | //pc.printf("Abrindo arquivo <%s>.\n",arquivo->nome); |
brunofgc | 0:1c0a769988ee | 28 | if((arquivo->fp = fopen(arquivo->nome,mode))!=NULL){ |
brunofgc | 0:1c0a769988ee | 29 | arquivo->aberto = true; |
brunofgc | 0:1c0a769988ee | 30 | return true; |
brunofgc | 0:1c0a769988ee | 31 | }else{ |
brunofgc | 0:1c0a769988ee | 32 | return false; |
brunofgc | 0:1c0a769988ee | 33 | } |
brunofgc | 0:1c0a769988ee | 34 | } |
brunofgc | 0:1c0a769988ee | 35 | |
brunofgc | 0:1c0a769988ee | 36 | uint16_t sdCard::calcCheckSum16BITFile(char *nome){ |
brunofgc | 0:1c0a769988ee | 37 | FILE *fp; |
brunofgc | 0:1c0a769988ee | 38 | char c; |
brunofgc | 0:1c0a769988ee | 39 | uint16_t sum = 0; |
brunofgc | 0:1c0a769988ee | 40 | |
brunofgc | 0:1c0a769988ee | 41 | fp = fopen (nome,"r"); |
brunofgc | 0:1c0a769988ee | 42 | if(fp != NULL){ |
brunofgc | 0:1c0a769988ee | 43 | do{ |
brunofgc | 0:1c0a769988ee | 44 | c = fgetc(fp); |
brunofgc | 0:1c0a769988ee | 45 | if(!feof(fp)){sum+=c;} |
brunofgc | 0:1c0a769988ee | 46 | }while(!feof(fp)); |
brunofgc | 0:1c0a769988ee | 47 | fclose(fp); |
brunofgc | 0:1c0a769988ee | 48 | } |
brunofgc | 0:1c0a769988ee | 49 | return sum; |
brunofgc | 0:1c0a769988ee | 50 | } |
brunofgc | 0:1c0a769988ee | 51 | |
brunofgc | 0:1c0a769988ee | 52 | bool sdCard::insereDadosArquivoPeloNome(char *nome, char *dados,uint16_t tam){ |
brunofgc | 0:1c0a769988ee | 53 | FILE *fp; |
brunofgc | 0:1c0a769988ee | 54 | fp = fopen(nome,"a"); |
brunofgc | 0:1c0a769988ee | 55 | uint16_t i; |
brunofgc | 0:1c0a769988ee | 56 | if(fp!=NULL){ |
brunofgc | 0:1c0a769988ee | 57 | for(i=0;i<tam;i++){ |
brunofgc | 0:1c0a769988ee | 58 | fprintf(fp,"%c",dados[i]); |
brunofgc | 0:1c0a769988ee | 59 | fflush(fp); |
brunofgc | 0:1c0a769988ee | 60 | } |
brunofgc | 0:1c0a769988ee | 61 | fclose(fp); |
brunofgc | 0:1c0a769988ee | 62 | }else{ |
brunofgc | 0:1c0a769988ee | 63 | return false; |
brunofgc | 0:1c0a769988ee | 64 | } |
brunofgc | 0:1c0a769988ee | 65 | return true; |
brunofgc | 0:1c0a769988ee | 66 | } |
brunofgc | 0:1c0a769988ee | 67 | |
brunofgc | 0:1c0a769988ee | 68 | bool sdCard::insereDadosArquivo(arquivoSD *arquivo, char* data,uint16_t tam){ |
brunofgc | 0:1c0a769988ee | 69 | //Struct do arquivo, dados a inserir e tamanho deles |
brunofgc | 0:1c0a769988ee | 70 | uint16_t i; |
brunofgc | 0:1c0a769988ee | 71 | |
brunofgc | 0:1c0a769988ee | 72 | if(!sdCard::abreArquivo(arquivo,"a")){ |
brunofgc | 0:1c0a769988ee | 73 | pc.printf("Erro abrindo %s .\n",arquivo->nome); |
brunofgc | 0:1c0a769988ee | 74 | if(!sdCard::fechaArquivo(arquivo)){ |
brunofgc | 0:1c0a769988ee | 75 | return false; |
brunofgc | 0:1c0a769988ee | 76 | } |
brunofgc | 0:1c0a769988ee | 77 | } |
brunofgc | 0:1c0a769988ee | 78 | |
brunofgc | 0:1c0a769988ee | 79 | for(i=0;i<tam;i++){ |
brunofgc | 0:1c0a769988ee | 80 | fprintf(arquivo->fp,"%c",data[i]); |
brunofgc | 0:1c0a769988ee | 81 | fflush(arquivo->fp); |
brunofgc | 0:1c0a769988ee | 82 | } |
brunofgc | 0:1c0a769988ee | 83 | |
brunofgc | 0:1c0a769988ee | 84 | sdCard::fechaArquivo(arquivo); |
brunofgc | 0:1c0a769988ee | 85 | return true; |
brunofgc | 0:1c0a769988ee | 86 | } |
brunofgc | 0:1c0a769988ee | 87 | bool sdCard::fechaArquivo(arquivoSD* arquivo){ |
brunofgc | 0:1c0a769988ee | 88 | //Struct do arquivo |
brunofgc | 0:1c0a769988ee | 89 | fclose(arquivo->fp); |
brunofgc | 0:1c0a769988ee | 90 | arquivo->aberto = false; |
brunofgc | 0:1c0a769988ee | 91 | return true; |
brunofgc | 0:1c0a769988ee | 92 | } |
brunofgc | 0:1c0a769988ee | 93 | |
brunofgc | 0:1c0a769988ee | 94 | bool sdCard::excluiArquivo(arquivoSD *arquivo){ |
brunofgc | 0:1c0a769988ee | 95 | bool retorno = true; |
brunofgc | 0:1c0a769988ee | 96 | if(arquivo->aberto){ |
brunofgc | 0:1c0a769988ee | 97 | if(!sdCard::fechaArquivo(arquivo)){retorno = false;} |
brunofgc | 0:1c0a769988ee | 98 | } |
brunofgc | 0:1c0a769988ee | 99 | if(!remove(arquivo->nome)){retorno = false;} |
brunofgc | 0:1c0a769988ee | 100 | return retorno; |
brunofgc | 0:1c0a769988ee | 101 | } |
brunofgc | 0:1c0a769988ee | 102 | |
brunofgc | 0:1c0a769988ee | 103 | bool sdCard::exibeArquivo(arquivoSD *arquivo){ |
brunofgc | 0:1c0a769988ee | 104 | |
brunofgc | 0:1c0a769988ee | 105 | if(!sdCard::abreArquivo(arquivo,"r")){ |
brunofgc | 0:1c0a769988ee | 106 | return false; |
brunofgc | 0:1c0a769988ee | 107 | } |
brunofgc | 0:1c0a769988ee | 108 | |
brunofgc | 0:1c0a769988ee | 109 | //rewind(arquivo->fp); |
brunofgc | 0:1c0a769988ee | 110 | char c; |
brunofgc | 0:1c0a769988ee | 111 | pc.printf("\n\nInicio do arquivo %s.\n\n",arquivo->nome); |
brunofgc | 0:1c0a769988ee | 112 | |
brunofgc | 0:1c0a769988ee | 113 | do{ |
brunofgc | 0:1c0a769988ee | 114 | c = fgetc(arquivo->fp); |
brunofgc | 0:1c0a769988ee | 115 | if(!feof(arquivo->fp)){pc.printf("%c",c);} |
brunofgc | 0:1c0a769988ee | 116 | }while(!feof(arquivo->fp)); |
brunofgc | 0:1c0a769988ee | 117 | pc.printf("\n\nFim do arquivo %s.\n",arquivo->nome); |
brunofgc | 0:1c0a769988ee | 118 | sdCard::fechaArquivo(arquivo); |
brunofgc | 0:1c0a769988ee | 119 | return true; |
brunofgc | 0:1c0a769988ee | 120 | } |
brunofgc | 0:1c0a769988ee | 121 | |
brunofgc | 0:1c0a769988ee | 122 | int sdCard::init(){ |
brunofgc | 0:1c0a769988ee | 123 | //Inicializando SDCard |
brunofgc | 0:1c0a769988ee | 124 | |
brunofgc | 0:1c0a769988ee | 125 | strcpy(sdCard::envio.nome,"/sd/RAD/envio.txt"); |
brunofgc | 0:1c0a769988ee | 126 | strcpy(sdCard::armazenamento.nome,"/sd/RAD/armazenamento.txt"); |
brunofgc | 0:1c0a769988ee | 127 | strcpy(sdCard::config.nome,"/sd/RAD/config.bin"); |
brunofgc | 0:1c0a769988ee | 128 | strcpy(sdCard::devices.nome,"/sd/RAD/devices.cfg"); |
brunofgc | 0:1c0a769988ee | 129 | strcpy(sdCard::status.nome,"/sd/RAD/status.txt"); |
brunofgc | 0:1c0a769988ee | 130 | strcpy(sdCard::tempFile.nome,"/sd/RAD/tempFile.bin"); |
brunofgc | 0:1c0a769988ee | 131 | |
brunofgc | 0:1c0a769988ee | 132 | |
brunofgc | 0:1c0a769988ee | 133 | |
brunofgc | 0:1c0a769988ee | 134 | |
brunofgc | 0:1c0a769988ee | 135 | if(!sdCard::abreArquivo(&sdCard::config,"r")){ |
brunofgc | 0:1c0a769988ee | 136 | //Não foi encontrado o arquivo config.bin, então vou criar o diretório |
brunofgc | 0:1c0a769988ee | 137 | pc.printf("Nao foi encontrado o arquivo config.bin .\n"); |
brunofgc | 0:1c0a769988ee | 138 | //Criando o diretorio |
brunofgc | 0:1c0a769988ee | 139 | pc.printf("Criando diretorio e arquivo config.bin .\n"); |
brunofgc | 0:1c0a769988ee | 140 | mkdir("/sd/RAD", 0777); |
brunofgc | 0:1c0a769988ee | 141 | |
brunofgc | 0:1c0a769988ee | 142 | if(sdCard::abreArquivo(&sdCard::config,"w")){ |
brunofgc | 0:1c0a769988ee | 143 | //Fazer o arquivo de configuração aqui! |
brunofgc | 0:1c0a769988ee | 144 | pc.printf("Criado arquivo config.bin .\n"); |
brunofgc | 0:1c0a769988ee | 145 | fprintf(sdCard::config.fp,"SSID:DROME\r\nPASSWORD:VITAE\r\nPORT:80"); |
brunofgc | 0:1c0a769988ee | 146 | |
brunofgc | 0:1c0a769988ee | 147 | } |
brunofgc | 0:1c0a769988ee | 148 | } |
brunofgc | 0:1c0a769988ee | 149 | //Fechando arquivo de configuração; |
brunofgc | 0:1c0a769988ee | 150 | fechaArquivo(&sdCard::config); |
brunofgc | 0:1c0a769988ee | 151 | if(!sdCard::abreArquivo(&sdCard::devices,"r")){ |
brunofgc | 0:1c0a769988ee | 152 | pc.printf("Remota nao parametrizada!!!\n"); |
brunofgc | 0:1c0a769988ee | 153 | }else{ |
brunofgc | 0:1c0a769988ee | 154 | fechaArquivo(&sdCard::devices); |
brunofgc | 0:1c0a769988ee | 155 | } |
brunofgc | 0:1c0a769988ee | 156 | return 1; |
brunofgc | 0:1c0a769988ee | 157 | } |
brunofgc | 0:1c0a769988ee | 158 | |
brunofgc | 0:1c0a769988ee | 159 | int sdCard::preparaEnvio(void){ |
brunofgc | 0:1c0a769988ee | 160 | //Verifico se existe arquivo pendente de envio. |
brunofgc | 0:1c0a769988ee | 161 | if(sdCard::envio.aberto||sdCard::armazenamento.aberto){ |
brunofgc | 0:1c0a769988ee | 162 | pc.printf("Um dos dois arquivos esta aberto. envio = %u, armazenamento = %u.\n",sdCard::envio.aberto,sdCard::armazenamento.aberto); |
brunofgc | 0:1c0a769988ee | 163 | return 2; |
brunofgc | 0:1c0a769988ee | 164 | } |
brunofgc | 0:1c0a769988ee | 165 | |
brunofgc | 0:1c0a769988ee | 166 | |
brunofgc | 0:1c0a769988ee | 167 | if(abreArquivo(&sdCard::envio,"r")){ |
brunofgc | 0:1c0a769988ee | 168 | pc.printf("Tem um arquivo pendente de envio.\n"); |
brunofgc | 0:1c0a769988ee | 169 | fechaArquivo(&sdCard::envio); |
brunofgc | 0:1c0a769988ee | 170 | return 1; |
brunofgc | 0:1c0a769988ee | 171 | } |
brunofgc | 0:1c0a769988ee | 172 | |
brunofgc | 0:1c0a769988ee | 173 | if(sdCard::abreArquivo(&sdCard::armazenamento,"r")){ |
brunofgc | 0:1c0a769988ee | 174 | sdCard::fechaArquivo(&sdCard::armazenamento); |
brunofgc | 0:1c0a769988ee | 175 | }else{ |
brunofgc | 0:1c0a769988ee | 176 | pc.printf("Nao foi encontrado o arquivo de armazenamento em preparaEnvio.\n"); |
brunofgc | 0:1c0a769988ee | 177 | return 0; |
brunofgc | 0:1c0a769988ee | 178 | } |
brunofgc | 0:1c0a769988ee | 179 | |
brunofgc | 0:1c0a769988ee | 180 | sdCard::armazenamento.aberto = true; |
brunofgc | 0:1c0a769988ee | 181 | sdCard::envio.aberto = true; |
brunofgc | 0:1c0a769988ee | 182 | if(!sdCard::file_rename("/sd/RAD/armazenamento.txt","/sd/RAD/envio.txt")){ |
brunofgc | 0:1c0a769988ee | 183 | pc.printf("Nao foi possivel renomear arquivo para envio.\n"); |
brunofgc | 0:1c0a769988ee | 184 | sdCard::armazenamento.aberto = false; |
brunofgc | 0:1c0a769988ee | 185 | sdCard::envio.aberto = false; |
brunofgc | 0:1c0a769988ee | 186 | return 0; |
brunofgc | 0:1c0a769988ee | 187 | } |
brunofgc | 0:1c0a769988ee | 188 | |
brunofgc | 0:1c0a769988ee | 189 | sdCard::armazenamento.aberto = false; |
brunofgc | 0:1c0a769988ee | 190 | sdCard::envio.aberto = false; |
brunofgc | 0:1c0a769988ee | 191 | pc.printf("Renomeado.\n"); |
brunofgc | 0:1c0a769988ee | 192 | return 1; |
brunofgc | 0:1c0a769988ee | 193 | } |
brunofgc | 0:1c0a769988ee | 194 | |
brunofgc | 0:1c0a769988ee | 195 | void sdCard::finalizaEnvio(void){ |
brunofgc | 0:1c0a769988ee | 196 | if(sdCard::envio.aberto){fclose(sdCard::envio.fp);} |
brunofgc | 0:1c0a769988ee | 197 | remove(sdCard::envio.nome); |
brunofgc | 0:1c0a769988ee | 198 | pc.printf("Deletado o arquivo de envio apos envio do mesmo ao server.\n"); |
brunofgc | 0:1c0a769988ee | 199 | } |
brunofgc | 0:1c0a769988ee | 200 | |
brunofgc | 0:1c0a769988ee | 201 | bool sdCard::getFileTam(arquivoSD *arquivo){ |
brunofgc | 0:1c0a769988ee | 202 | uint32_t tam=0; |
brunofgc | 0:1c0a769988ee | 203 | uint8_t timeout = 50; |
brunofgc | 0:1c0a769988ee | 204 | while((timeout>0)&&(arquivo->aberto)){ |
brunofgc | 0:1c0a769988ee | 205 | //Aguardo fechar o arquivo caso ele esteja aberto |
brunofgc | 0:1c0a769988ee | 206 | timeout--; |
brunofgc | 0:1c0a769988ee | 207 | osDelay(100); |
brunofgc | 0:1c0a769988ee | 208 | } |
brunofgc | 0:1c0a769988ee | 209 | |
brunofgc | 0:1c0a769988ee | 210 | if(arquivo->aberto){ |
brunofgc | 0:1c0a769988ee | 211 | fechaArquivo(arquivo); |
brunofgc | 0:1c0a769988ee | 212 | } |
brunofgc | 0:1c0a769988ee | 213 | |
brunofgc | 0:1c0a769988ee | 214 | if(sdCard::abreArquivo(arquivo,"r")){ |
brunofgc | 0:1c0a769988ee | 215 | rewind(arquivo->fp); |
brunofgc | 0:1c0a769988ee | 216 | while(fgetc(arquivo->fp)!=EOF){ |
brunofgc | 0:1c0a769988ee | 217 | tam++; |
brunofgc | 0:1c0a769988ee | 218 | } |
brunofgc | 0:1c0a769988ee | 219 | sdCard::fechaArquivo(arquivo); |
brunofgc | 0:1c0a769988ee | 220 | }else{ |
brunofgc | 0:1c0a769988ee | 221 | return false; |
brunofgc | 0:1c0a769988ee | 222 | } |
brunofgc | 0:1c0a769988ee | 223 | arquivo->bytes = tam; |
brunofgc | 0:1c0a769988ee | 224 | return true; |
brunofgc | 0:1c0a769988ee | 225 | } |
brunofgc | 0:1c0a769988ee | 226 | |
brunofgc | 0:1c0a769988ee | 227 | bool sdCard::arquivoAberto(){ |
brunofgc | 0:1c0a769988ee | 228 | /*extern arquivoSD envio; |
brunofgc | 0:1c0a769988ee | 229 | extern arquivoSD armazenamento; |
brunofgc | 0:1c0a769988ee | 230 | extern arquivoSD config; |
brunofgc | 0:1c0a769988ee | 231 | extern arquivoSD devices; |
brunofgc | 0:1c0a769988ee | 232 | extern arquivoSD status; |
brunofgc | 0:1c0a769988ee | 233 | extern arquivoSD tempFile;*/ |
brunofgc | 0:1c0a769988ee | 234 | return ( |
brunofgc | 0:1c0a769988ee | 235 | sdCard::envio.aberto |
brunofgc | 0:1c0a769988ee | 236 | || |
brunofgc | 0:1c0a769988ee | 237 | sdCard::armazenamento.aberto |
brunofgc | 0:1c0a769988ee | 238 | || |
brunofgc | 0:1c0a769988ee | 239 | sdCard::config.aberto |
brunofgc | 0:1c0a769988ee | 240 | || |
brunofgc | 0:1c0a769988ee | 241 | sdCard::devices.aberto |
brunofgc | 0:1c0a769988ee | 242 | || |
brunofgc | 0:1c0a769988ee | 243 | sdCard::status.aberto |
brunofgc | 0:1c0a769988ee | 244 | || |
brunofgc | 0:1c0a769988ee | 245 | sdCard::tempFile.aberto |
brunofgc | 0:1c0a769988ee | 246 | ); |
brunofgc | 0:1c0a769988ee | 247 | } |
brunofgc | 0:1c0a769988ee | 248 | |
brunofgc | 0:1c0a769988ee | 249 | |
brunofgc | 0:1c0a769988ee | 250 | //*********************************************************** |
brunofgc | 0:1c0a769988ee | 251 | // file_rename: renames a file (via copy & delete). |
brunofgc | 0:1c0a769988ee | 252 | // Moves data instead of adjusting the file name in the |
brunofgc | 0:1c0a769988ee | 253 | // file directory. Checks to insure the file was renamed. |
brunofgc | 0:1c0a769988ee | 254 | // Returns -1 = error; 0 = success |
brunofgc | 0:1c0a769988ee | 255 | //*********************************************************** |
brunofgc | 0:1c0a769988ee | 256 | uint8_t sdCard::file_rename(const char *oldfname, const char *newfname) { |
brunofgc | 0:1c0a769988ee | 257 | int retval = 0; |
brunofgc | 0:1c0a769988ee | 258 | int ch; |
brunofgc | 0:1c0a769988ee | 259 | sdCard::envio.bytes=0; |
brunofgc | 0:1c0a769988ee | 260 | |
brunofgc | 0:1c0a769988ee | 261 | FILE *fpold = fopen(oldfname, "r"); // src file |
brunofgc | 0:1c0a769988ee | 262 | if(fpold == NULL){ |
brunofgc | 0:1c0a769988ee | 263 | fclose(fpold); |
brunofgc | 0:1c0a769988ee | 264 | return 0; |
brunofgc | 0:1c0a769988ee | 265 | } |
brunofgc | 0:1c0a769988ee | 266 | |
brunofgc | 0:1c0a769988ee | 267 | FILE *fpnew = fopen(newfname, "w"); // dest file |
brunofgc | 0:1c0a769988ee | 268 | if(fpnew == NULL){ |
brunofgc | 0:1c0a769988ee | 269 | fclose(fpnew); |
brunofgc | 0:1c0a769988ee | 270 | return 0; |
brunofgc | 0:1c0a769988ee | 271 | } |
brunofgc | 0:1c0a769988ee | 272 | |
brunofgc | 0:1c0a769988ee | 273 | pc.printf("Iniciando copia.\n"); |
brunofgc | 0:1c0a769988ee | 274 | |
brunofgc | 0:1c0a769988ee | 275 | sdCard::envio.bytes=0; |
brunofgc | 0:1c0a769988ee | 276 | ch = fgetc(fpold); |
brunofgc | 0:1c0a769988ee | 277 | while(ch != EOF){ |
brunofgc | 0:1c0a769988ee | 278 | fputc(ch, fpnew); |
brunofgc | 0:1c0a769988ee | 279 | ch = fgetc(fpold); |
brunofgc | 0:1c0a769988ee | 280 | sdCard::envio.bytes++; |
brunofgc | 0:1c0a769988ee | 281 | } |
brunofgc | 0:1c0a769988ee | 282 | |
brunofgc | 0:1c0a769988ee | 283 | fclose(fpnew); |
brunofgc | 0:1c0a769988ee | 284 | fclose(fpold); |
brunofgc | 0:1c0a769988ee | 285 | |
brunofgc | 0:1c0a769988ee | 286 | fpnew = fopen(newfname, "r"); // Reopen dest to insure |
brunofgc | 0:1c0a769988ee | 287 | if(fpnew == NULL) { // that it was created. |
brunofgc | 0:1c0a769988ee | 288 | retval = (0); // Return Error. |
brunofgc | 0:1c0a769988ee | 289 | } |
brunofgc | 0:1c0a769988ee | 290 | else { |
brunofgc | 0:1c0a769988ee | 291 | fclose(fpnew); |
brunofgc | 0:1c0a769988ee | 292 | remove(oldfname); // Remove original file. |
brunofgc | 0:1c0a769988ee | 293 | retval = (1); // Return Success. |
brunofgc | 0:1c0a769988ee | 294 | } |
brunofgc | 0:1c0a769988ee | 295 | return (retval); |
brunofgc | 0:1c0a769988ee | 296 | } |