summaryrefslogtreecommitdiff
path: root/audio/grip
diff options
context:
space:
mode:
authorPatrick Li <pat@FreeBSD.org>2002-03-14 06:56:08 +0000
committerPatrick Li <pat@FreeBSD.org>2002-03-14 06:56:08 +0000
commitb46ed553c88e4516adb862e051e5d6e90661d7d6 (patch)
tree4d779fc532382a012c1c3edbd0444f9f97396763 /audio/grip
parentFix PORTREVISION. (diff)
Update to 2.99.0
PR: 35863 Submitted by: maintainer
Notes
Notes: svn path=/head/; revision=56058
Diffstat (limited to 'audio/grip')
-rw-r--r--audio/grip/Makefile45
-rw-r--r--audio/grip/distinfo2
-rw-r--r--audio/grip/files/patch-aa38
-rw-r--r--audio/grip/files/patch-cddb.c160
-rw-r--r--audio/grip/files/patch-grip.c99
-rw-r--r--audio/grip/files/patch-grip.h18
-rw-r--r--audio/grip/pkg-message24
-rw-r--r--audio/grip/pkg-plist81
8 files changed, 128 insertions, 339 deletions
diff --git a/audio/grip/Makefile b/audio/grip/Makefile
index 83e6e29d2b00..42813c95fc8a 100644
--- a/audio/grip/Makefile
+++ b/audio/grip/Makefile
@@ -6,34 +6,45 @@
#
PORTNAME= grip
-PORTVERSION= 2.96
-PORTREVISION= 2
+PORTVERSION= 2.99.0
CATEGORIES= audio
-MASTER_SITES= ${MASTER_SITE_SOURCEFORGE}
+MASTER_SITES= ${MASTER_SITE_SOURCEFORGE}
MASTER_SITE_SUBDIR=grip
-EXTRACT_SUFX= .tgz
MAINTAINER= ports@geeksrus.net
+LIB_DEPENDS= id3-3.7.13:${PORTSDIR}/audio/id3lib \
+ ghttp.1:${PORTSDIR}/www/libghttp
+
USE_GMAKE= yes
USE_X_PREFIX= yes
USE_GTK= yes
-ALL_TARGET= gripnopar gcd
-MAN1= grip.1
-MLINKS= grip.1 gcd.1
+USE_GNOMELIBS= yes
+GNU_CONFIGURE= yes
-post-patch:
- @${PERL} -pi -e "s|%%LOCALBASE%%|${LOCALBASE}|g" ${WRKSRC}/*.c
+CONFIGURE_ARGS+= --datadir=${PREFIX}/share
-do-install:
- ${INSTALL_PROGRAM} ${WRKSRC}/grip ${PREFIX}/bin
- ${INSTALL_PROGRAM} ${WRKSRC}/gcd ${PREFIX}/bin
- ${INSTALL_MAN} ${WRKSRC}/grip.1 ${MANPREFIX}/man/man1
+CONFIGURE_ENV+= CPPFLAGS="-I${LOCALBASE}/include"
+
+.if defined(WITH_DEBUG)
+CONFIGURE_ENV+= CFLAGS="-g" \
+ LDFLAGS="-g -L${LOCALBASE}/lib"
+.else
+CONFIGURE_ENV+= LDFLAGS="-L${LOCALBASE}/lib"
+.endif
+
+INSTALL_SUBDIRS= po src intl pixmaps
.if !defined(NOPORTDOCS)
- @${MKDIR} ${PREFIX}/share/doc/grip
-.for file in CHANGES CREDITS README TODO
- ${INSTALL_DATA} ${WRKSRC}/${file} ${PREFIX}/share/doc/grip
-.endfor
+INSTALL_SUBDIRS+= doc
.endif
+do-install:
+ @cd ${WRKSRC}; ${MAKE} install-am
+.for dir in ${INSTALL_SUBDIRS}
+ @cd ${WRKSRC}/${dir}; ${MAKE} ${INSTALL_TARGET}
+.endfor
+
+post-install:
+ @${CAT} ${PKGMESSAGE}
+
.include <bsd.port.mk>
diff --git a/audio/grip/distinfo b/audio/grip/distinfo
index 62c80fe265a1..1e6ef6c9cc79 100644
--- a/audio/grip/distinfo
+++ b/audio/grip/distinfo
@@ -1 +1 @@
-MD5 (grip-2.96.tgz) = 29d03b2874c5cb60096ac3051fbbc4e3
+MD5 (grip-2.99.0.tar.gz) = 341be99d25e4c427161aa59da85bbdc1
diff --git a/audio/grip/files/patch-aa b/audio/grip/files/patch-aa
deleted file mode 100644
index ada13a171613..000000000000
--- a/audio/grip/files/patch-aa
+++ /dev/null
@@ -1,38 +0,0 @@
---- Makefile.orig Thu Oct 19 04:42:53 2000
-+++ Makefile Thu Jul 19 23:07:59 2001
-@@ -4,30 +4,24 @@
- OS=$(shell uname -s)
-
- # Compiler
--CC= gcc
-+CC?= gcc
-
- # Install prefix
--PREFIX=/usr
-+PREFIX?=/usr/local
-
- # Installation directory -- where the binary will go
- INSTALLDIR= $(PREFIX)/bin
-
- # Location to store auxilliary files
--AUXDIR= $(PREFIX)/lib/grip
-+AUXDIR= $(PREFIX)/etc
-
-
- # Compiler flags
--CFLAGS= -Wall `gtk-config --cflags` -DAUXDIR=\"$(AUXDIR)\" \
-+CFLAGS+= `$(GTK_CONFIG) --cflags gthread` -DAUXDIR=\"$(AUXDIR)\" \
- -DINSTALLDIR=\"$(INSTALLDIR)\" -D_REENTRANT
-
- # Link libraries
--LIBS= `gtk-config --libs gthread`
--ifeq ($(OS), Linux)
--LIBS+= -lpthread
--endif
--ifeq ($(OS), FreeBSD)
--LIBS+= -pthread
--endif
-+LIBS= `$(GTK_CONFIG) --libs gthread`
- PARLIBS= cdparanoia/interface/libcdda_interface.a \
- cdparanoia/paranoia/libcdda_paranoia.a
-
diff --git a/audio/grip/files/patch-cddb.c b/audio/grip/files/patch-cddb.c
deleted file mode 100644
index 14f8fa672850..000000000000
--- a/audio/grip/files/patch-cddb.c
+++ /dev/null
@@ -1,160 +0,0 @@
---- cddb.c.orig Mon Jul 16 12:15:32 2001
-+++ cddb.c Mon Jan 21 22:51:21 2002
-@@ -27,6 +27,9 @@
- #include <strings.h>
- #endif
- #include <ctype.h>
-+#include <fcntl.h>
-+#include <pthread.h>
-+#include <sys/time.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <sys/stat.h>
-@@ -43,7 +46,7 @@
- extern char *Version;
-
- static int CDDBSum(int val);
--static int CDDBConnect(CDDBServer *server);
-+static int CDDBConnect(CDDBServer *server, int ns);
- static void CDDBDisconnect(int sock);
- static void CDDBSkipHTTP(int sock);
- static int CDDBReadLine(int sock,char *inbuffer,int len);
-@@ -59,6 +62,81 @@
- "data","folk","jazz","misc","newage",
- "reggae","rock","soundtrack"};
-
-+/* nonblocking connect */
-+
-+static int
-+nonbconnect(int fd, struct sockaddr *pa, socklen_t cba, int ns)
-+{
-+ int n;
-+ int s;
-+ int fl;
-+ fd_set rfds, wfds;
-+ struct timeval tv;
-+
-+ if (!ns) {
-+ n = connect(fd, pa, cba);
-+ pthread_testcancel();
-+ return n;
-+ }
-+
-+ fl = fcntl(fd, F_GETFL, 0);
-+ fcntl(fd, F_SETFL, fl | O_NONBLOCK);
-+
-+ if ((n = connect(fd, pa, cba)) < 0) {
-+ if (errno != EINPROGRESS) {
-+ return -1;
-+ }
-+ } else if (n == 0) {
-+ fcntl(fd, F_SETFL, fl);
-+ return 0;
-+ }
-+
-+
-+ for (s = 0; s < ns; s++) {
-+ tv.tv_sec = 1;
-+ tv.tv_usec = 0;
-+ FD_ZERO(&rfds);
-+ FD_SET(fd, &rfds);
-+ wfds = rfds;
-+ if ((n = select(fd + 1, &rfds, &wfds, 0, &tv)) > 0) {
-+ break;
-+ } else if (n < 0) {
-+ if (errno == EINTR) {
-+ s--;
-+ } else {
-+ return -1;
-+ }
-+ }
-+ pthread_testcancel();
-+ }
-+
-+ if (n == 0 && s == ns) {
-+ errno = ETIMEDOUT;
-+ return -1;
-+ }
-+
-+ if (FD_ISSET(fd, &rfds) || FD_ISSET(fd, &wfds)) {
-+ int err;
-+ int cberr = sizeof(err);
-+
-+ getsockopt(fd, SOL_SOCKET, SO_ERROR, &err, &cberr);
-+ if (err) {
-+ errno = err;
-+ return -1;
-+ }
-+ fcntl(fd, F_SETFL, fl);
-+ tv.tv_sec = ns;
-+ tv.tv_usec = 0;
-+ setsockopt(fd, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv));
-+ return 0;
-+ }
-+
-+ /* ohshit */
-+
-+ errno = EIO; /* WTF? */
-+ return -1;
-+}
-+
- /* CDDB sum function */
-
- static int CDDBSum(int val)
-@@ -115,7 +193,7 @@
- }
-
- /* Connect to a CDDB server */
--static int CDDBConnect(CDDBServer *server)
-+static int CDDBConnect(CDDBServer *server, int ns)
- {
- int sock;
- struct sockaddr_in sin;
-@@ -146,8 +224,10 @@
-
- if((sock=socket(AF_INET,SOCK_STREAM,0))<0) return -1;
-
-- if(connect(sock,(struct sockaddr *)&sin,sizeof(sin))<0) return -1;
--
-+ if(nonbconnect(sock,(struct sockaddr *)&sin,sizeof(sin),ns)<0) {
-+ close(sock);
-+ sock = -1;
-+ }
- return sock;
- }
-
-@@ -243,7 +323,7 @@
- /* Query the CDDB for the CD currently in the CD-ROM */
-
- gboolean CDDBDoQuery(int cd_desc,CDDBServer *server,
-- CDDBHello *hello,CDDBQuery *query)
-+ CDDBHello *hello,CDDBQuery *query, int ns)
- {
- int socket;
- int index;
-@@ -251,7 +331,7 @@
- char *offset_buffer,*query_buffer,*http_buffer,inbuffer[256];
- int tot_len,len;
-
-- socket=CDDBConnect(server);
-+ socket=CDDBConnect(server,ns);
-
- if(socket==-1) return FALSE;
-
-@@ -476,14 +556,14 @@
-
- gboolean CDDBRead(int cd_desc,CDDBServer *server,
- CDDBHello *hello,CDDBEntry *entry,
-- DiscData *data)
-+ DiscData *data, int ns)
- {
- int socket;
- int index;
- char outbuffer[256], inbuffer[512],cmdbuffer[256];
- struct disc_info disc;
-
-- socket=CDDBConnect(server);
-+ socket=CDDBConnect(server,ns);
- if(socket==-1) return FALSE;
-
- CDStat(cd_desc,&disc,TRUE);
diff --git a/audio/grip/files/patch-grip.c b/audio/grip/files/patch-grip.c
deleted file mode 100644
index 7f931df1da6b..000000000000
--- a/audio/grip/files/patch-grip.c
+++ /dev/null
@@ -1,99 +0,0 @@
---- grip.c.orig Mon Jul 16 12:15:32 2001
-+++ grip.c Mon Jan 21 23:03:30 2002
-@@ -54,6 +54,8 @@
- #include "parsecfg.h"
- #include "dialog/dialog.h"
-
-+#define CDDB_USE_CANCEL 1
-+
- #ifdef CDPAR
- #define size16 short
- #define size32 int
-@@ -212,6 +214,8 @@
-
- GdkCursor *wait_cursor;
-
-+int cddb_tmo = 30;
-+
- int cd_desc;
- int changer_slots;
- int current_disc=0;
-@@ -315,7 +319,7 @@
- gboolean use_proxy=FALSE;
- gboolean use_proxy_env=FALSE;
-
--char *bin_search_paths[]={"/cpd/misc/bin","/usr/bin","/usr/local/bin",NULL};
-+char *bin_search_paths[]={"/cpd/misc/bin","/usr/bin","%%LOCALBASE%%/bin",NULL};
- Ripper ripper_defaults[]={
- #ifdef CDPAR
- {"grip (cdparanoia)",""},
-@@ -328,7 +332,7 @@
- #endif
- {"other",""},
- {"",""}};
--char ripexename[256]="/usr/bin/cdparanoia";
-+char ripexename[256]="%%LOCALBASE%%/bin/cdparanoia";
- char ripcmdline[256]="-d %c %t:[.%b]-%t:[.%e] %f";
- int selected_ripper=0;
- char outputdir[256];
-@@ -347,7 +351,7 @@
- gboolean disable_extra_paranoia=FALSE;
- gboolean disable_scratch_detect=FALSE;
- gboolean disable_scratch_repair=FALSE;
--char mp3exename[256]="/usr/bin/bladeenc";
-+char mp3exename[256]="%%LOCALBASE%%/bin/bladeenc";
- char mp3cmdline[256]="-%b -QUIT %f";
- int selected_encoder=1;
- char mp3fileformat[256]="~/mp3/%a/%d/%n.mp3";
-@@ -450,7 +454,7 @@
- "Instrumental Rock", "Ethnic", "Gothic", "Darkwave", "Techno-Industrial",
- "Electronic", "Pop-Folk", "Eurodance", "Dream", "Southern Rock", "Comedy",
- "Cult", "Gangsta", "Top 40", "Christian Rap", "Pop/Funk", "Jungle",
-- "Native American", "Cabaret", "New Wave", "Psychadelic", "Rave", "Showtunes",
-+ "Native American", "Cabaret", "New Wave", "Psychedelic", "Rave", "Showtunes",
- "Trailer", "Lo-Fi", "Tribal", "Acid Punk", "Acid Jazz", "Polka", "Retro",
- "Musical", "Rock & Roll", "Hard Rock", "Folk", "Folk/Rock", "National Folk",
- "Swing", "Fast Fusion", "Bebob", "Latin", "Revival", "Celtic", "Bluegrass",
-@@ -1657,8 +1661,12 @@
- pthread_exit(&status);
- #elif defined(__FreeBSD__)
- pthread_kill(cddb_thread, 0);
-+#elif defined(linux)
-+#if CDDB_USE_CANCEL
-+ pthread_cancel(cddb_thread);
- #else
-- pthread_kill_other_threads_np();
-+ pthread_kill_other_threads_np();
-+#endif
- #endif
- Debug("Aborted\n");
- looking_up=FALSE;
-@@ -1722,6 +1730,7 @@
- int cddb_found = 0;
-
- if(!CDDBLookupDisc(&dbserver)) {
-+ pthread_testcancel();
- if(*(dbserver2.name)) {
- if(CDDBLookupDisc(&dbserver2)) {
- cddb_found = 1;
-@@ -1759,9 +1768,10 @@
- strncpy(hello.hello_program,PROGRAM,256);
- strncpy(hello.hello_version,VERSION,256);
-
-- if(!CDDBDoQuery(cd_desc,server,&hello,&query)) {
-+ if(!CDDBDoQuery(cd_desc,server,&hello,&query,cddb_tmo)) {
- update_required=TRUE;
- } else {
-+ pthread_testcancel();
- switch(query.query_match) {
- case MATCH_INEXACT:
- case MATCH_EXACT:
-@@ -1770,7 +1780,7 @@
- query.query_list[0].list_title);
- entry.entry_genre = query.query_list[0].list_genre;
- entry.entry_id = query.query_list[0].list_id;
-- CDDBRead(cd_desc,server,&hello,&entry,&ddata);
-+ CDDBRead(cd_desc,server,&hello,&entry,&ddata,cddb_tmo);
-
- Debug("Done\n");
- success=TRUE;
diff --git a/audio/grip/files/patch-grip.h b/audio/grip/files/patch-grip.h
deleted file mode 100644
index 9a7b02bee3e7..000000000000
--- a/audio/grip/files/patch-grip.h
+++ /dev/null
@@ -1,18 +0,0 @@
---- grip.h.orig Mon Jul 16 12:15:32 2001
-+++ grip.h Mon Jan 21 22:51:22 2002
-@@ -239,13 +239,10 @@
- char *CDDBGenre(int genre);
- int CDDBGenreValue(char *genre);
- gboolean CDDBDoQuery(int cd_desc,CDDBServer *server,
-- CDDBHello *hello,CDDBQuery *query);
-+ CDDBHello *hello,CDDBQuery *query, int ns);
- gboolean CDDBRead(int cd_desc,CDDBServer *server,
- CDDBHello *hello,CDDBEntry *entry,
-- DiscData *data);
--gboolean CDDBRead(int cd_desc,CDDBServer *server,
-- CDDBHello *hello,CDDBEntry *entry,
-- DiscData *data);
-+ DiscData *data, int ns);
- gboolean CDDBStatDiscData(int cd_desc);
- int CDDBReadDiscData(int cd_desc, DiscData *outdata);
- int CDDBWriteDiscData(int cd_desc,DiscData *ddata,FILE *outfile,
diff --git a/audio/grip/pkg-message b/audio/grip/pkg-message
new file mode 100644
index 000000000000..d681e0b83d70
--- /dev/null
+++ b/audio/grip/pkg-message
@@ -0,0 +1,24 @@
+************************************************************
+NOTE: If you do not use Gnome as your desktop (if you do
+not have the gnomecore port/package installed), you may need
+to edit your ~/.gnome/Gnome file in order to see the Grip
+help pages.
+
+The following settings worked for me:
+
+--8<----8<----8<----8<----8<----8<----8<----8<----8<----8<--
+[URL Handlers]
+default-show=gnome-moz-remote --newwin "%s"
+info-show=kfmclient openURL "%s"
+man-show=kfmclient openURL "%s"
+ghelp-show=gnome-moz-remote --newwin "%s"
+--8<----8<----8<----8<----8<----8<----8<----8<----8<----8<--
+
+Note to KDE users: using 'konqueror' or 'kfmclient' will
+not work, since the help pages use a 'ghelp:' URL, which is
+not understood by KDE.
+************************************************************
+
+
+
+
diff --git a/audio/grip/pkg-plist b/audio/grip/pkg-plist
index 0566d19bada2..87cd5be6c9ff 100644
--- a/audio/grip/pkg-plist
+++ b/audio/grip/pkg-plist
@@ -1,7 +1,76 @@
-bin/gcd
bin/grip
-%%PORTDOCS%%share/doc/grip/CHANGES
-%%PORTDOCS%%share/doc/grip/CREDITS
-%%PORTDOCS%%share/doc/grip/README
-%%PORTDOCS%%share/doc/grip/TODO
-%%PORTDOCS%%@dirrm share/doc/grip
+share/gnome/apps/Multimedia/grip.desktop
+share/locale/de/LC_MESSAGES/grip.mo
+share/locale/fr/LC_MESSAGES/grip.mo
+share/pixmaps/gripicon.png
+%%PORTDOCS%%share/gnome/help/grip/C/acknowledge.html
+%%PORTDOCS%%share/gnome/help/grip/C/bugs.html
+%%PORTDOCS%%share/gnome/help/grip/C/cdconfig.png
+%%PORTDOCS%%share/gnome/help/grip/C/cddb.html
+%%PORTDOCS%%share/gnome/help/grip/C/cdplayer.html
+%%PORTDOCS%%share/gnome/help/grip/C/cdplayer.png
+%%PORTDOCS%%share/gnome/help/grip/C/cdplayersmall.png
+%%PORTDOCS%%share/gnome/help/grip/C/configure.html
+%%PORTDOCS%%share/gnome/help/grip/C/discdb.png
+%%PORTDOCS%%share/gnome/help/grip/C/discdbconfig.html
+%%PORTDOCS%%share/gnome/help/grip/C/discdbconfig.png
+%%PORTDOCS%%share/gnome/help/grip/C/editing.png
+%%PORTDOCS%%share/gnome/help/grip/C/eject.png
+%%PORTDOCS%%share/gnome/help/grip/C/encprog.png
+%%PORTDOCS%%share/gnome/help/grip/C/faq.html
+%%PORTDOCS%%share/gnome/help/grip/C/ffwd.png
+%%PORTDOCS%%share/gnome/help/grip/C/grip-logo.png
+%%PORTDOCS%%share/gnome/help/grip/C/grip.html
+%%PORTDOCS%%share/gnome/help/grip/C/gripswitches.html
+%%PORTDOCS%%share/gnome/help/grip/C/id3config.html
+%%PORTDOCS%%share/gnome/help/grip/C/id3config.png
+%%PORTDOCS%%share/gnome/help/grip/C/intro.html
+%%PORTDOCS%%share/gnome/help/grip/C/license.html
+%%PORTDOCS%%share/gnome/help/grip/C/ln14.html
+%%PORTDOCS%%share/gnome/help/grip/C/minmax.png
+%%PORTDOCS%%share/gnome/help/grip/C/miscconfig.html
+%%PORTDOCS%%share/gnome/help/grip/C/miscconfig.png
+%%PORTDOCS%%share/gnome/help/grip/C/modeinterface.png
+%%PORTDOCS%%share/gnome/help/grip/C/morehelp.html
+%%PORTDOCS%%share/gnome/help/grip/C/mp3config.html
+%%PORTDOCS%%share/gnome/help/grip/C/mp3config.png
+%%PORTDOCS%%share/gnome/help/grip/C/mp3config2.png
+%%PORTDOCS%%share/gnome/help/grip/C/multiartist.png
+%%PORTDOCS%%share/gnome/help/grip/C/nexttrk.png
+%%PORTDOCS%%share/gnome/help/grip/C/playloop.png
+%%PORTDOCS%%share/gnome/help/grip/C/playnormal.png
+%%PORTDOCS%%share/gnome/help/grip/C/playonce.png
+%%PORTDOCS%%share/gnome/help/grip/C/playpause.png
+%%PORTDOCS%%share/gnome/help/grip/C/playplaylist.png
+%%PORTDOCS%%share/gnome/help/grip/C/playrandom.png
+%%PORTDOCS%%share/gnome/help/grip/C/prevtrk.png
+%%PORTDOCS%%share/gnome/help/grip/C/progtrack.png
+%%PORTDOCS%%share/gnome/help/grip/C/proxyconfig.html
+%%PORTDOCS%%share/gnome/help/grip/C/proxyconfig.png
+%%PORTDOCS%%share/gnome/help/grip/C/quit.png
+%%PORTDOCS%%share/gnome/help/grip/C/rewind.png
+%%PORTDOCS%%share/gnome/help/grip/C/rip-perform.html
+%%PORTDOCS%%share/gnome/help/grip/C/ripconfig.html
+%%PORTDOCS%%share/gnome/help/grip/C/ripconfig.png
+%%PORTDOCS%%share/gnome/help/grip/C/ripconfig2.png
+%%PORTDOCS%%share/gnome/help/grip/C/ripconfig3.png
+%%PORTDOCS%%share/gnome/help/grip/C/ripping.html
+%%PORTDOCS%%share/gnome/help/grip/C/ripping.png
+%%PORTDOCS%%share/gnome/help/grip/C/ripprog.png
+%%PORTDOCS%%share/gnome/help/grip/C/ripsmall.png
+%%PORTDOCS%%share/gnome/help/grip/C/sect-trackmode.html
+%%PORTDOCS%%share/gnome/help/grip/C/smile1.png
+%%PORTDOCS%%share/gnome/help/grip/C/smile2.png
+%%PORTDOCS%%share/gnome/help/grip/C/smile3.png
+%%PORTDOCS%%share/gnome/help/grip/C/smile4.png
+%%PORTDOCS%%share/gnome/help/grip/C/smile5.png
+%%PORTDOCS%%share/gnome/help/grip/C/smile7.png
+%%PORTDOCS%%share/gnome/help/grip/C/smile8.png
+%%PORTDOCS%%share/gnome/help/grip/C/stop.png
+%%PORTDOCS%%share/gnome/help/grip/C/topic.dat
+%%PORTDOCS%%share/gnome/help/grip/C/trkedit.png
+%%PORTDOCS%%share/gnome/help/grip/C/volume.png
+%%PORTDOCS%%share/gnome/help/grip/C/x131.html
+%%PORTDOCS%%@dirrm share/gnome/help/grip/C/images
+%%PORTDOCS%%@dirrm share/gnome/help/grip/C
+%%PORTDOCS%%@dirrm share/gnome/help/grip