- Fix build with gcc 4.2

- Pass maintainership to submitter

PR:		117778
Submitted by:	Pietro Cerutti <gahr@gahr.ch>
Approved by:	portmgr (linimon)
This commit is contained in:
Martin Wilke 2007-11-14 08:23:24 +00:00
parent 68ae591488
commit b605f3cf0a
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=202701
4 changed files with 342 additions and 11 deletions

View file

@ -11,23 +11,16 @@ PORTREVISION= 2
CATEGORIES= audio net
MASTER_SITES= ftp://ftp.holywar.net/pub/FreeBSD/
MAINTAINER= ports@FreeBSD.org
MAINTAINER= gahr@gahr.ch
COMMENT= Streaming audio to Icecast/shoutcast supports multiple bitrate stream
LIB_DEPENDS= shout.2:${PORTSDIR}/audio/libshout
LIB_DEPENDS= shout.5:${PORTSDIR}/audio/libshout2 \
mp3lame.0:${PORTSDIR}/audio/lame
PLIST_FILES= bin/holyshout
USE_GMAKE= yes
.include <bsd.port.pre.mk>
.if ${OSVERSION} >= 700042
BROKEN= Broken with gcc 4.2
.endif
post-patch:
${REINPLACE_CMD} -e 's,/usr/local,${PREFIX},g' \
${WRKSRC}/Makefile
${REINPLACE_CMD} -e 's, ,\\r,g' ${WRKSRC}/holyshout.c
.include <bsd.port.post.mk>
.include <bsd.port.mk>

View file

@ -0,0 +1,34 @@
--- Makefile.orig 2003-11-23 05:52:12.000000000 +0100
+++ Makefile 2007-11-09 01:35:21.000000000 +0100
@@ -44,28 +44,20 @@
#
# CAUTION: this Makefile doesn't work if your $HOME contains whitespaces!
-CC = gcc
-CFLAG += -fomit-frame-pointer -funroll-all-loops -g -L. -Lliblame -lm -lncurses -lmp3lame -L/usr/local/lib -I/usr/local/include -lshout
+CFLAG += -fomit-frame-pointer -funroll-all-loops -g -lm -lncurses -lmp3lame -L/usr/local/lib -I/usr/local/include -lshout -lspeex -lpthread
PROG = holyshout
DESTDIR = /usr/local/bin/
RM = /bin/rm -f
-all: liblame holyshout
+all: holyshout
-holyshout : holyshout.c liblame
- cd liblame ; gmake ;
- @echo; echo -n It needs a shout library. if you have a error about -lshout , please install libshout.
- @echo; echo -n Building holyshout.
- @echo; echo
+holyshout : holyshout.c
${CC} -o holyshout holyshout.c ${CFLAG}
install: all
install -c -m 755 ${PROG} ${DESTDIR}
-clean:
- cd liblame ; gmake clean
- ${RM} ${PROG} *.o
holyclean:
${RM} ${PROG} *.o

View file

@ -0,0 +1,273 @@
--- holyshout.c.orig 2003-11-25 08:43:07.000000000 +0100
+++ holyshout.c 2007-11-09 01:09:35.000000000 +0100
@@ -44,33 +44,34 @@
char **play_list , **pointer_list , listfile[0xff];
int play_list_num=0 , shuffle=0 , encode=0, nal=0 ;
struct timeval lastint, shoutstart;
-lame_global_flags gf ;
+lame_global_flags *gf ;
int main(int argc , char **argv)
{
int playlist = 0 , loop=0 , check=0 , ch ;
struct hostent *host ;
- shout_conn_t conn;
+ shout_t *conn;
signal (SIGINT, s1gnal); signal (SIGHUP, s1gnal);
/* Shout default informaton descriptions. But , It can change using
Options. do not change that. */
- lame_init(&gf) ;
- shout_init_connection(&conn);
- conn.name="AP_"PROGRAM_NAME"_"VERSION ;
- conn.mount="default" ;
- conn.description="HOLYSHOUT";
- conn.url="http://www.icecast.org";
+ gf = lame_init() ;
+ shout_init();
+ conn = shout_new();
+ shout_set_name(conn, "AP_"PROGRAM_NAME"_"VERSION);
+ shout_set_mount(conn, "default");
+ shout_set_description(conn, "HOLYSHOUT");
+ shout_set_host(conn, "http://www.icecast.org");
/* Get arguments options */
while ((ch = getopt(argc, argv, "P:p:h:l:f:m:b:g:d:n:u:s:izr")) != -1) {
switch (ch) {
case 'P':
- conn.port = atoi(optarg) ; check++ ; break ;
+ shout_set_port(conn, atoi(optarg)) ; check++ ; break ;
case 'p':
- conn.password = optarg ; check++ ; break ;
+ shout_set_password(conn, optarg); check++ ; break ;
case 'l':
playlist=2 ; check++ ; strcpy(listfile,optarg) ; break ;
case 'z':
@@ -78,28 +79,31 @@
case 'f':
playlist=1 ; check++ ; strcpy(listfile,optarg) ; break ;
case 'i':
- conn.icy_compat=1 ; conn.ispublic=1; break ;
+ shout_set_public(conn, 1); break ;
case 'm':
- conn.mount=optarg; break ;
+ shout_set_mount(conn, optarg); break ;
case 'g':
- conn.genre=optarg; break ;
+ shout_set_genre(conn, optarg); break ;
case 'd':
- conn.description=optarg; break ;
+ shout_set_description(conn, optarg); break ;
case 'u':
- conn.url=optarg; break ;
+ shout_set_url(conn, optarg); break ;
case 'n':
- conn.name=optarg; break ;
+ shout_set_name(conn, optarg); break ;
case 'r':
loop=1 ; break ;
case 's':
- gf.mode=atoi(optarg); break ;
+ lame_set_mode(gf, atoi(optarg)); break ;
case 'b':
- check++ ;
- if (!strcmp(optarg,"auto") || !strcmp(optarg,"AUTO")) encode=0;
- else {
- conn.bitrate=atoi(optarg); gf.brate=conn.bitrate; encode=1;
- }
- break ;
+ check++ ;
+ if (!strcmp(optarg,"auto") || !strcmp(optarg,"AUTO")) encode=0;
+ else {
+ /*
+ * XXX
+ conn.bitrate=atoi(optarg); lame_set_brate(gf, conn.bitrate); encode=1;
+ */
+ }
+ break ;
case '?':
default:
usage();
@@ -114,7 +118,7 @@
/* find a address , if the address is a dns , lookup ip */
if (isdigit(argv[argc-1][0])) {
- conn.ip = argv[argc-1] ;
+ shout_set_host(conn, argv[argc-1]);
} else {
if (argv[argc-1] == NULL) {
puts("You must specify server name"); exit(0);
@@ -130,27 +134,28 @@
exit(0);
}
- conn.ip = (char *)inet_ntoa(*((struct in_addr *)host->h_addr)) ;
- if (conn.ip == NULL) {
+ shout_set_host(conn, (char *)inet_ntoa(*((struct in_addr *)host->h_addr))) ;
+ if (shout_get_host(conn) == NULL) {
printf("Can't resolv %s\n",argv[argc-1]) ;
exit(0);
}
}
/* connect to shoutcast (icecast) server. */
- if (shout_connect(&conn)) {
+ shout_open(conn);
+ if(shout_get_connected(conn) == SHOUTERR_CONNECTED) {
printf("Connected.\n");
} else {
- printf("Couldn't connect %s:%d (Error Code %d)\n",conn.ip, conn.port ,conn.error);
+ printf("Couldn't connect %s:%d (Error Code %d)\n", shout_get_host(conn), shout_get_port(conn), shout_get_errno(conn));
/* if the server is a shoutcast , automatic retry using -i */
- if (conn.error==3) {
+ if (shout_get_errno(conn)==3) {
printf("Automatic retry using old icy header using -i option.\n");
- shout_disconnect(&conn) ;
- conn.icy_compat=1 ; conn.ispublic=1;
- if (shout_connect(&conn)) {
+ shout_close(conn) ;
+ shout_set_public(conn, 1);
+ if (shout_get_connected(conn) == SHOUTERR_CONNECTED) {
printf("Connected.\n");
} else {
- printf("Couldn't connect %s:%d (Error Code %d)\n",conn.ip, conn.port ,conn.error);
+ printf("Couldn't connect %s:%d (Error Code %d)\n", shout_get_host(conn), shout_get_port(conn), shout_get_error(conn));
exit(0);
}
} else {
@@ -183,13 +188,13 @@
} else usage() ;
if (loop==0) break ; else puts("Loopping....");
}
- shout_disconnect(&conn);
+ shout_close(conn);
return 0 ;
}
-int send_setram (shout_conn_t conn , char *filename)
+int send_setram (shout_t *conn , char *filename)
{
char buff[LAME_MAXMP3BUFFER*2] ;
char mp3buffer[LAME_MAXMP3BUFFER];
@@ -207,19 +212,13 @@
return 1 ;
}
- gf.inPath=filename ;
- gf.outPath="Streamming server";
+ lame_set_quality(gf, 5);
+ lame_set_num_channels(gf, 2);
- gf.input_format=sf_mp3 ;
- //gf.mode_fixed=1 ;
- gf.quality=5 ;
- gf.num_channels=2;
-
- lame_init_infile(&gf) ; lame_init_params(&gf) ; lame_print_config(&gf) ;
+ lame_print_config(gf);
do {
- iread = lame_readframe(&gf,Buffer) ;
- imp3=lame_encode_buffer(&gf,Buffer[0],Buffer[1],iread, mp3buffer,(int)sizeof(mp3buffer));
+ imp3=lame_encode_buffer(gf,Buffer[0],Buffer[1],iread, mp3buffer,(int)sizeof(mp3buffer));
/* Get the SIGINT . skipped to the next song. */
if (nal==1) { nal=0 ; break ; }
@@ -230,12 +229,12 @@
}
if (buf_loc >= buff_size) {
- ret = shout_send_data(&conn, buff, buf_loc);
- if (!ret) {
- fprintf(stderr,"SEND_ERROR : %i...\n", conn.error);
+ ret = shout_send_raw(conn, buff, buf_loc);
+ if (ret) {
+ fprintf(stderr,"SEND_ERROR : %s...\n", shout_get_error(conn));
break;
}
- shout_sleep(&conn);
+ shout_sync(conn);
buf_loc=0 ;
if (buff_size < MAX_BUF) buff_size += INC_BUF ;
}
@@ -246,14 +245,12 @@
} while(iread) ;
if (buf_loc > 0) {
- ret = shout_send_data(&conn, buff, buf_loc);
- shout_sleep(&conn);
+ ret = shout_send(conn, buff, buf_loc);
+ shout_sync(conn);
}
- imp3=lame_encode_finish(&gf,mp3buffer,(int)sizeof(mp3buffer));
- //ret = shout_send_data(&conn, mp3buffer, imp3);
- lame_close_infile(&gf) ;
- lame_mp3_tags(&gf) ;
+ imp3=lame_encode_finish(gf,mp3buffer,(int)sizeof(mp3buffer));
+ lame_close(gf) ;
puts("") ;
return 0 ;
@@ -280,11 +277,11 @@
fclose(fp) ;
// memory allocation play list //
- if (!((char **)play_list = (char **) malloc (sizeof(char*)*play_list_num))){
+ if (!(play_list = malloc (sizeof(char*)*play_list_num))){
fprintf(stderr,"malloc failed") ; exit(0);
}
// memory allocation pointer //
- if (!((char **)pointer_list = (char **) malloc (sizeof(char*)*play_list_num))){
+ if (!(pointer_list = malloc (sizeof(char*)*play_list_num))){
fprintf(stderr,"malloc failed") ; exit(0);
}
@@ -298,7 +295,7 @@
while( (fgets(buf,0xff,fp))) {
if (!mp3_extension_compare(buf)) continue ;
buf[strlen(buf)-1] = '\0' ;
- (char *)play_list[i] = (char *) malloc(sizeof(char)*strlen(buf)+1) ;
+ play_list[i] = malloc(sizeof(char)*strlen(buf)+1) ;
strcpy(play_list[i],buf) ;
pointer_list[i] = play_list[i] ;
i++ ;
@@ -349,7 +346,7 @@
}
}
-int send_setram_direct (shout_conn_t conn , char *filename)
+int send_setram_direct (shout_t *conn , char *filename)
{
char buff[4096] ;
int read, total , ret, file_size;
@@ -376,12 +373,12 @@
if (nal==1) { nal=0 ; break ; }
if (read>0) {
- ret = shout_send_data(&conn,buff,read) ;
- if (!ret) {
- fprintf(stderr,"SEND_ERROR : %i...\n",conn.error) ;
+ ret = shout_send(conn,buff,read) ;
+ if (ret) {
+ fprintf(stderr,"SEND_ERROR : %s...\n",shout_get_error(conn)) ;
break ;
}
- shout_sleep(&conn) ;
+ shout_sync(conn) ;
} else break ;
fprintf(stderr,"\rSend: %-.2f %%",((float) total / (float)file_size)*100) ;
}
@@ -421,7 +418,7 @@
char *code ;
/* Data is null or space line */
- if (data[0]=='\0' || data[0]=='\n' || data[0]==' ') return 0 ;
+ if (data[0]=='\0' || data[0]=='\n' || data[0]=='\r') return 0 ;
code = (char *)malloc ((strlen(data)+1) * sizeof (char) );

View file

@ -0,0 +1,31 @@
--- holyshout.h.orig 2003-11-25 08:43:07.000000000 +0100
+++ holyshout.h 2007-11-09 01:08:52.000000000 +0100
@@ -35,6 +35,7 @@
#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
#include <unistd.h>
#include <netdb.h>
#include <time.h>
@@ -47,7 +48,7 @@
#include <netinet/in.h>
#include "shout/shout.h"
-#include "liblame/lame.h"
+#include "lame/lame.h"
#define PROGRAM_NAME "HOLYSHOUT"
#define VERSION "0.2"
@@ -61,9 +62,9 @@
#define PL_FREE 3
void usage(void) ;
-int send_setram (shout_conn_t conn , char *filename) ;
+int send_setram (shout_t *conn , char *filename) ;
void s1gnal(const int sig) ;
-int send_setram_direct (shout_conn_t conn , char *filename) ;
+int send_setram_direct (shout_t *conn , char *filename) ;
int init_playlist(int type) ;