dwest / grip Goto Github PK
View Code? Open in Web Editor NEWGrip is dead, long live grip!
License: GNU General Public License v2.0
Grip is dead, long live grip!
License: GNU General Public License v2.0
Grip ==== Grip is a cd-player and cd-ripper for the Gnome desktop.. It has the ripping capabilities of cdparanoia builtin, but can also use external rippers (such as cdda2wav). It also provides an automated frontend for MP3 encoders, letting you take a disc and transform it easily straight into MP3s. Internet disc lookups are supported for retrieving track information from disc database servers. Grip works with DigitalDJ to provide a unified "computerized" version of your music collection. Requirements ============ To use Grip, you must have: o The Gnome desktop o POSIX thread support (http://pauillac.inria.fr/~xleroy/linuxthreads) o a net connection (if you want to use disc database lookup) o a CD player (surprise, surprise) Grip requires that you have at least a basic version of the Gnome desktop installed on your computer. In particular, make sure that you have libghttp installed. If you can't find it, I have mirrored a copy here: http://www.nostatic.org/grip/libghttp-1.0.9.tar.gz If you wish to have builtin cdparanoia support, or id3v2 support, you must have the appropriate packages on your system. You can find them here: cdparanoia: http://xiph.org/paranoia/index.html id3v2: http://id3lib.sourceforge.net/ Grip is designed to work closely with DigitalDJ, my SQL-based mp3 jukebox system (although it does not require it). DigitalDJ can be obtained from: http://www.nostatic.org/ddj Installation ============ If you obtained Grip from the RPM distribution then they are already installed. If you have the source distribution, you need to compile it. To install Grip, simply go through the following steps: o after unpacking Grip, cd to the extracted directory o './configure' o 'make' o become root if you are installing in a non-user directory o 'make install' For information on options to the configure process, run: ./configure --help Grip adds the following options that can be specified to configure: --disable-shared-cdpar -- This will force Grip to link statically, rather than dynamically with cdparanoia --disable-cdpar -- This disable linking with cdparanoia entirely --disable-shared-id3 -- This will force Grip to link statically, rather than dynamically with id3lib --enable-gettext-location -- This will build po/grip-2.2.pot with filenames and line numbers for each string Note that if Gnome is installed in a non-standard place (such as /opt), you may need to use the '--with-gnome' configure option for all libraries to be found correctly. Running Grip ============ Grip's usage is: grip [options] where the available options are: --config=CONFIG Specify the configuration file to use (defaults to .grip, relative to home dir) --device=DEVICE Specify the cdrom device to use --scsi-device=DEVICE Specify the generic scsi device to use --small Launch in "small" (cd-only) mode --local "Local" mode -- do not look up disc info on the net --no-redirect Do not do I/O redirection --verbose Run in verbose (debug) mode Getting More Help ================= For more information, see the online documentation within Grip. It can also be accessed locally in the source distribution. Load doc/C/grip/grip.html into an html viewer. If you need more help with Grip, your best resource is the Grip mailing list. You will find it at: http://lists.sourceforge.net/mailman/listinfo/grip-users Be sure to check the mailing list archives for answers to any questions you may have. To report a bug with Grip, or to submit a patch. Please do so at the Grip section on sourceforge.net: http://sourceforge.net/projects/grip --- Mike Oliphant ([email protected]) http://www.nostatic.org/grip
It basically reads a list of variables from a define and copies those variables from a struct into a file (or the reverse for loading). This would be much better handled through gconf. Make it happen.
grip crashes on x86_64 as follows. The reason is tray.c MakeTrayIcon()'s lack of a prototype for Loadxpm() here, resulting in Loadxpm()'s return value being truncated to a 32-bit signed int before being cast to a 64-bit pointer:
img = (GtkWidget*)Loadxpm(uinfo->app, menunext_xpm);
mentry = (GtkWidget*)BuildMenuItemXpm(img, _("Next"));
The backtrace:
Core was generated by `src/grip'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x00007f3cf76399cb in IA__gtk_widget_set_parent (widget=widget@entry=0xffffffffd4003d10,
```
parent=parent@entry=0x9de160) at /build/buildd/gtk+2.0-2.24.27/gtk/gtkwidget.c:6419
```
6419 /build/buildd/gtk+2.0-2.24.27/gtk/gtkwidget.c: No such file or directory.
(gdb) i s
#0 0x00007f3cf76399cb in IA__gtk_widget_set_parent (widget=widget@entry=0x-2bffc2f0, parent=parent@entry=0x9de160 [GtkImageMenuItem]) at /build/buildd/gtk+2.0-2.24.27/gtk/gtkwidget.c:6419
#1 0x00007f3cf74ffe48 in IA__gtk_image_menu_item_set_image (image_menu_item=0x9de160 [GtkImageMenuItem], image=0x-2bffc2f0) at /build/buildd/gtk+2.0-2.24.27/gtk/gtkimagemenuitem.c:935
#2 0x0000000000422e51 in BuildMenuItemXpm (xpm=0x-2bffc2f0, text=0x433a88 "Next") at uihelper.c:103
#3 0x000000000042b38b in MakeTrayIcon (ginfo=0x7f3cf7e08010) at tray.c:206
#4 0x000000000042a999 in UpdateTray (ginfo=0x7f3cf7e08010) at tray.c:63
#5 0x000000000040a238 in GripUpdate (app=0x78f020 [GnomeApp]) at grip.c:737
#6 0x0000000000407e63 in TimeOut (data=0x0, data@entry=)
```
at main.c:228
```
#7 0x00007f3cf66425e3 in g_timeout_dispatch (source=0x8bf800, callback=, user_data=) at /build/buildd/glib2.0-2.44.1/./glib/gmain.c:4545
#8 0x00007f3cf6641b4d in g_main_context_dispatch (context=0x7567a0)
```
at /build/buildd/glib2.0-2.44.1/./glib/gmain.c:3122
```
#9 0x00007f3cf6641b4d in g_main_context_dispatch (context=context@entry=0x7567a0)
```
at /build/buildd/glib2.0-2.44.1/./glib/gmain.c:3737
```
#10 0x00007f3cf6641f20 in g_main_context_iterate (context=0x7567a0, block=block@entry=1, dispatch=dispatch@entry=1, self=) at /build/buildd/glib2.0-2.44.1/./glib/gmain.c:3808
#11 0x00007f3cf6642242 in g_main_loop_run (loop=0x741760) at /build/buildd/glib2.0-2.44.1/./glib/gmain.c:4002
#12 0x00007f3cf7518857 in IA__gtk_main () at /build/buildd/gtk+2.0-2.24.27/gtk/gtkmain.c:1282
#13 0x0000000000407db3 in Cmain (argc=1, argv=0x7fffa4c20b28) at main.c:192
#14 0x00007f3cf5088a40 in __libc_start_main (main=
```
0x4079a0 , argc=1, argv=0x7fffa4c20b28, init=, fini=, rtld_fini=, stack_end=0x7fffa4c20b18) at libc-start.c:289
```
#15 0x00000000004079d9 in _start ()
Stumbled across this repo by accident today, and just wanted to say that development on the original SourceForge project was restarted in 2017, by myself.
Last release was in august 31, 2021. :-)
When a CD is inserted in computer and Gnome automounts it, Grip cannot eject it. This is due to the use of ioctl function calls instead of asking Gnome to eject the CD for us. Use GIO.
See gnome docs. popt is deprecated, we need to start using GOption. Needs to be changed around main.c:39 and main.c:164
In CDStat(), using CDROMSUBCHNL:
If the CD drive doesn't support audio playback, the ioctl(CDROMSUBCHNL) returns cdsc.cdsc_audiostatus == 0 (CDROM_AUDIO_INVALID).
The switch(cdsc.cdsc_audiostatus) doesn't include a case for this, so we leave disc->disc_mode unchanged, generally 0, which is CDAUDIO_PLAYING.
Then grip always thinks the CD is playing, with two effects that I've noticed:
Even though the drive doesn't support playback, grip can still be used for ripping. But point 2 above prevents you from editing the track info via the GUI.
According to http://library.gnome.org/devel/references GNOME UI is heading towards planned deprecation. The link also states that many of the widgets from libgnomeui have been ported to GTK+. We need to convert all widgets over to GTK+ and remove libgnomeui as a dependency.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.