Лясны жыхар (soko1) wrote in sokolsoft,
Лясны жыхар
soko1
sokolsoft

  • Music:

Sllame-0.2

Сегодня обновил Sllame до версии 0.2!

Основные новшества:
* Устранено переполнение буфера в массивах "device" и "command". Все переписано с использованием функции malloc();
* Добавлена библиотека stdlib.h для совместимости со старыми версиями GCC.

Посмотрите, нет ли там ошибок каких...


/* Название:
 * Sllame
 * 
 * Описание:
 * Программа для облегчения работы с пакетами "cdparanoia" (запись cdda-диска в wav-файлы) и "lame" (конвертирование wav-файлов в mp3).
 * 
 * Версия: 
 * 0.2
 * 
 * Лицензия: 
 * BSD
 * 
 * Исправления:
 * (0.1)
 * Первый релиз.
 * (0.2) 
 * Устранено переполнение буфера в массивах "device" и "command". Все переписано с использованием функции malloc();
 * Добавлена библиотека stdlib.h для совместимости со старыми версиями GCC.
 * 
 * Автор: 
 * Соколов Алексей <sokolhacker@mail.ru>
 * 
 * Сайт: 
 * SokolSoft.org.ru
 */

#include <stdio.h>
#include <stdlib.h>

void
wav_conv(char *command) /* функция записи с cd-диска треков в wav-файлы */
{
	char *device = (char *) malloc (sizeof (device)); /* буфер, хранящий путь к cd-девайсу */
	
	puts ("Введи путь к твоему cd-девайсу (например: /dev/acd0)");
	printf (": ");
	scanf ("%s", device);
	sprintf (command, "cdparanoia -d %s -B --", device); /* записываем в переменную */
	system (command); /* выполняем... */
}

void
mp3_conv(char *command) /* функция конвертирования wav-файлов в mp3 */
{
	int bit; /* битрейд */
	int ctr; /* счетчик */
	int tracks; /* кол-во треков */

	printf ("Введи кол-во треков: ");
	scanf ("%d", &tracks);
	printf ("Введи нужный тебе битрейд: ");
	scanf ("%d", &bit);

	/* это все очень сложно объяснить=) */
	if (tracks < 10) {
		for (ctr = 1; ctr <= tracks; ctr++) {
			sprintf (command, "lame -b %d track0%d.cdda.wav", bit, ctr);
			system (command);
		}
	}
	else {
		while (ctr < 10) {
			for (ctr = 1; ctr < 10; ctr++) {
				sprintf (command, "lame -b %d track0%d.cdda.wav", bit, ctr);
				system (command);
		}
				if (ctr >= 10) {
					for (ctr = ctr; ctr <= tracks; ctr++) {
						sprintf (command, "lame -b %d track%d.cdda.wav", bit, ctr);
						system (command);
					}
				}
			}
	}
}

void
menu(char *command) /* функция меню программы */
{
	char key;
	
	puts ("Выберите один из пунктов: ");
	puts ("1. Перегнать в wav");
	puts ("2. Перегнать в mp3");
	puts ("3. Выход");
	printf (": ");
	scanf ("%c", &key);

	switch (key) {
		case '1':
			wav_conv (command); /* конвертирования wav-файлов в mp3 */
			break;
		case '2':
			mp3_conv (command); /* конвертирования wav-файлов в mp3 */
			break;
		case '3':
			exit (1); /* выходим... */
		default:
			puts ("Ошибка!"); /* вывод сообщения об ошибке */
			break;
	}
}

int
main()
{
	char *command = (char *) malloc (sizeof (command)); /* буфер, в котором будет храниться команда */
	menu (command); /* меню программы */
}	

  • Post a new comment

    Error

    default userpic
  • 27 comments