Fix bug with replace host zeroing out file.
This commit is contained in:
parent
b7ca669b3a
commit
fbe5e18f9d
28
main.c
28
main.c
@ -85,7 +85,7 @@ void showHosts()
|
|||||||
* Read the configuration file and give a return code to indicate any changes.
|
* Read the configuration file and give a return code to indicate any changes.
|
||||||
* @return 1 if successful, 0 if otherwise.
|
* @return 1 if successful, 0 if otherwise.
|
||||||
*/
|
*/
|
||||||
int read_config_file() {
|
int update_hosts_file() {
|
||||||
// increment the refcount for tmp.
|
// increment the refcount for tmp.
|
||||||
FILE *config = fopen(CONFIG, "r");
|
FILE *config = fopen(CONFIG, "r");
|
||||||
LinkedList *ptr = hosts, *prev = NULL;
|
LinkedList *ptr = hosts, *prev = NULL;
|
||||||
@ -163,7 +163,7 @@ void run_loop() {
|
|||||||
}
|
}
|
||||||
else if (signo == SIGALRM) {
|
else if (signo == SIGALRM) {
|
||||||
fprintf(stderr, "Waking up and reading config..\n");
|
fprintf(stderr, "Waking up and reading config..\n");
|
||||||
read_config_file();
|
update_hosts_file();
|
||||||
alarm(HB_PERIOD);
|
alarm(HB_PERIOD);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -206,7 +206,8 @@ int main(int argc, char **argv)
|
|||||||
// Replaces a host
|
// Replaces a host
|
||||||
else if (ARG_IS("edit"))
|
else if (ARG_IS("edit"))
|
||||||
{
|
{
|
||||||
replacehost(argv[++i], argv[++i]);
|
replacehost(argv[i + 1], argv[i + 2]);
|
||||||
|
i += 2;
|
||||||
}
|
}
|
||||||
// Deletes a host.
|
// Deletes a host.
|
||||||
else if (ARG_IS("delete"))
|
else if (ARG_IS("delete"))
|
||||||
@ -251,16 +252,14 @@ int main(int argc, char **argv)
|
|||||||
* @param hostsFile
|
* @param hostsFile
|
||||||
*/
|
*/
|
||||||
void replacehost(char *oldhost, char *newhost) {
|
void replacehost(char *oldhost, char *newhost) {
|
||||||
FILE *hostsFile = fopenHostsFile("w+");
|
FILE *hostsFile = fopenHostsFile("r");
|
||||||
char buf[256];
|
char buf[256];
|
||||||
char *ptr, *f;
|
char *ptr, *f;
|
||||||
|
|
||||||
char newHostsFile[4096];
|
char newHostsFile[4096];
|
||||||
memset(newHostsFile, 0, 4096);
|
memset(newHostsFile, 0, 4096);
|
||||||
|
|
||||||
printf("Starting to read!\n");
|
// fseek(hostsFile, 0, SEEK_SET);
|
||||||
printf("Looking for host:%s\n", oldhost);
|
|
||||||
fseek(hostsFile, 0, SEEK_SET);
|
|
||||||
|
|
||||||
while (fgets(buf, 256, hostsFile) != NULL)
|
while (fgets(buf, 256, hostsFile) != NULL)
|
||||||
{
|
{
|
||||||
@ -269,7 +268,6 @@ void replacehost(char *oldhost, char *newhost) {
|
|||||||
memset(buf, 0, sizeof(buf));
|
memset(buf, 0, sizeof(buf));
|
||||||
sprintf(buf, "%s %s\n", blockString, newhost);
|
sprintf(buf, "%s %s\n", blockString, newhost);
|
||||||
}
|
}
|
||||||
|
|
||||||
strcat(newHostsFile, buf);
|
strcat(newHostsFile, buf);
|
||||||
memset(buf, 0, sizeof(buf));
|
memset(buf, 0, sizeof(buf));
|
||||||
}
|
}
|
||||||
@ -277,12 +275,14 @@ void replacehost(char *oldhost, char *newhost) {
|
|||||||
// Ensure we have an EOF at the end of the file.
|
// Ensure we have an EOF at the end of the file.
|
||||||
newHostsFile[strlen(newHostsFile)] = EOF;
|
newHostsFile[strlen(newHostsFile)] = EOF;
|
||||||
|
|
||||||
// Seek to 0
|
// // Seek to 0
|
||||||
fseek(hostsFile, 0, SEEK_SET);
|
// fseek(hostsFile, 0, SEEK_SET);
|
||||||
|
fclose(hostsFile);
|
||||||
|
|
||||||
// If this failed, write an error message to stderr
|
// If this failed, write an error message to stderr
|
||||||
ONFAILED(0, (fwrite(newHostsFile, sizeof(char), sizeof(newHostsFile), hostsFile))) {
|
// ONFAILED(0, (fwrite(newHostsFile, sizeof(char), sizeof(newHostsFile), hostsFile))) {
|
||||||
fprintf(stderr, "Did not write anything!\n");
|
// fprintf(stderr, "Did not write anything!\n");
|
||||||
}
|
// }
|
||||||
fclose(hostsFile);
|
fprintf(stderr, "New hosts file: \n%s\n", newHostsFile);
|
||||||
|
// fclose(hostsFile);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user