{
struct ttmp *tmp = ts->user_data;
int wrote;
+ size_t len;
wrote = teletone_mux_tones(ts, map);
- write(tmp->fd, ts->buffer, wrote * 2);
+ len = write(tmp->fd, ts->buffer, wrote * 2);
+
+ if (!len) return -1;
+
return 0;
}
int32_t durations[] = {274, 274, 380, 0};
teletone_dds_state_t dds = {0};
int16_t sample;
+ size_t len = 1;
if (argc < 2 || (fd = open(argv[1], O_WRONLY | O_TRUNC | O_CREAT, S_IRUSR | S_IWUSR)) < 0) {
fprintf(stderr, "File Error!\n", strerror(errno));
teletone_dds_state_set_tone(&dds, tones[j], rate, -50);
- for(i = 0; i < durations[j] * rate / 1000; i++) {
+ for(i = 0; (i < durations[j] * rate / 1000) && len != 0; i++) {
sample = teletone_dds_modulate_sample(&dds) * 20;
- write(fd, &sample, sizeof(sample));
+ len = write(fd, &sample, sizeof(sample));
}
}