changeset 1817:71698fb39d29

xspf: decruftify and Mk2
author William Pitcock <nenolod@atheme.org>
date Mon, 24 Sep 2007 13:09:03 -0500
parents 6bc14eddc4c3
children f340fe033655
files src/xspf/Makefile src/xspf/base64.c src/xspf/base64.h src/xspf/urlencode.c src/xspf/urlencode.h
diffstat 5 files changed, 9 insertions(+), 320 deletions(-) [+]
line wrap: on
line diff
--- a/src/xspf/Makefile	Mon Sep 24 13:06:11 2007 -0500
+++ b/src/xspf/Makefile	Mon Sep 24 13:09:03 2007 -0500
@@ -1,18 +1,12 @@
-include ../../mk/rules.mk
-include ../../mk/init.mk
+PLUGIN = xspf$(PLUGIN_SUFFIX)
+plugindir = audacious/$(CONTAINER_PLUGIN_DIR)
 
-OBJECTIVE_LIBS = libxspf$(SHARED_SUFFIX)
-
-LIBDIR = $(plugindir)/$(CONTAINER_PLUGIN_DIR)
-
-SOURCES = xspf.c
+SRCS = xspf.c
 
-OBJECTS = ${SOURCES:.c=.o}
-
-CFLAGS += $(PICFLAGS) $(GTK_CFLAGS) $(GLIB_CFLAGS) $(PANGO_CFLAGS) $(ARCH_DEFINES) $(XML_CPPFLAGS) -I../../intl -I../.. -Wall
+include ../../buildsys.mk
+include ../../extra.mk
 
-CXXFLAGS = $(CFLAGS)
-
-LIBADD = $(GTK_LIBS) $(GLIB_LIBS) $(PANGO_LIBS) $(XML_LIBS)
-
-include ../../mk/objective.mk
+CFLAGS += $(PLUGIN_CFLAGS)
+CPPFLAGS += $(PLUGIN_CPPFLAGS) $(MOWGLI_CFLAGS) $(DBUS_CFLAGS) $(GTK_CFLAGS) $(GLIB_CFLAGS) $(PANGO_CFLAGS) $(ARCH_DEFINES) $(XML_CPPFLAGS) \
+	-I../../intl -I../.. -Wall
+LIBS += $(GTK_LIBS) $(GLIB_LIBS) $(PANGO_LIBS) $(XML_LIBS)
--- a/src/xspf/base64.c	Mon Sep 24 13:06:11 2007 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,114 +0,0 @@
-/**
- * \file base64.c
- * \brief base-64 conversion routines.
- *
- * \author Eric S. Raymond <esr@snark.thyrsus.com>.
- *
- * For license terms, see the file COPYING.
- *
- * This base 64 encoding is defined in RFC2045 section 6.8,
- * "Base64 Content-Transfer-Encoding", but lines must not be broken in the
- * scheme used here.
- */
-#include <ctype.h>
-
-
-static const char base64digits[] =
-   "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
-
-#define BAD	-1
-static const char base64val[] = {
-    BAD,BAD,BAD,BAD, BAD,BAD,BAD,BAD, BAD,BAD,BAD,BAD, BAD,BAD,BAD,BAD,
-    BAD,BAD,BAD,BAD, BAD,BAD,BAD,BAD, BAD,BAD,BAD,BAD, BAD,BAD,BAD,BAD,
-    BAD,BAD,BAD,BAD, BAD,BAD,BAD,BAD, BAD,BAD,BAD, 62, BAD,BAD,BAD, 63,
-     52, 53, 54, 55,  56, 57, 58, 59,  60, 61,BAD,BAD, BAD,BAD,BAD,BAD,
-    BAD,  0,  1,  2,   3,  4,  5,  6,   7,  8,  9, 10,  11, 12, 13, 14,
-     15, 16, 17, 18,  19, 20, 21, 22,  23, 24, 25,BAD, BAD,BAD,BAD,BAD,
-    BAD, 26, 27, 28,  29, 30, 31, 32,  33, 34, 35, 36,  37, 38, 39, 40,
-     41, 42, 43, 44,  45, 46, 47, 48,  49, 50, 51,BAD, BAD,BAD,BAD,BAD
-};
-#define DECODE64(c)  (isascii(c) ? base64val[c] : BAD)
-
-/**
- * \brief Raw bytes in quasi-big-endian order to base 64 string (NUL-terminated)
- *
- * \param[out]	out	A pointer to a char to hold the converted string
- * \param[in]	in	String to convert
- * \param[in]	inlen	Length of the string to be converted
- */
-void to64frombits(unsigned char *out, const unsigned char *in, int inlen)
-{
-	for (; inlen >= 3; inlen -= 3)
-	{
-		*out++ = base64digits[in[0] >> 2];
-		*out++ = base64digits[((in[0] << 4) & 0x30) | (in[1] >> 4)];
-		*out++ = base64digits[((in[1] << 2) & 0x3c) | (in[2] >> 6)];
-		*out++ = base64digits[in[2] & 0x3f];
-		in += 3;
-	}
-
-	if (inlen > 0)
-	{
-		unsigned char fragment;
-
-		*out++ = base64digits[in[0] >> 2];
-		fragment = (in[0] << 4) & 0x30;
-
-		if (inlen > 1)
-			fragment |= in[1] >> 4;
-
-		*out++ = base64digits[fragment];
-		*out++ = (inlen < 2) ? '=' : base64digits[(in[1] << 2) & 0x3c];
-		*out++ = '=';
-	}
-	
-	*out = '\0';
-}
-
-/**
- * \brief base 64 to raw bytes in quasi-big-endian order, returning count of bytes
- *
- * \param[out]	out	Where to save the converted string
- * \param[in]	in	String to convert
- * \return Number of converted bytes.
- */
-int from64tobits(char *out, const char *in)
-{
-	int len = 0;
-	register unsigned char digit1, digit2, digit3, digit4;
-
-	if (in[0] == '+' && in[1] == ' ')
-		in += 2;
-	if (*in == '\r')
-		return(0);
-
-	do {
-		digit1 = in[0];
-		if (DECODE64(digit1) == BAD)
-			return(-1);
-		digit2 = in[1];
-		if (DECODE64(digit2) == BAD)
-			return(-1);
-		digit3 = in[2];
-		if (digit3 != '=' && DECODE64(digit3) == BAD)
-			return(-1);
-		digit4 = in[3];
-		if (digit4 != '=' && DECODE64(digit4) == BAD)
-			return(-1);
-		in += 4;
-		*out++ = (DECODE64(digit1) << 2) | (DECODE64(digit2) >> 4);
-		++len;
-		if (digit3 != '=')
-		{
-			*out++ = ((DECODE64(digit2) << 4) & 0xf0) | (DECODE64(digit3) >> 2);
-			++len;
-			if (digit4 != '=')
-			{
-				*out++ = ((DECODE64(digit3) << 6) & 0xc0) | DECODE64(digit4);
-				++len;
-			}
-		}
-	} while (*in && *in != '\r' && digit4 != '=');
-
-	return (len);
-}
--- a/src/xspf/base64.h	Mon Sep 24 13:06:11 2007 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/**
- * \file base64.h
- * \brief This file has all base64.c declarations
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
- *
- * See COPYING for details.
- */
-
-#ifndef BASE64_H_
-#define BASE64_H_
-
-void to64frombits(unsigned char*,const unsigned char*,int);
-int from64tobits(char*,const char*);
-
-#endif /* BASE64_H_ */
--- a/src/xspf/urlencode.c	Mon Sep 24 13:06:11 2007 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,159 +0,0 @@
-/* the original code was taken from wget-1.10.2 */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <glib.h>
-#include <ctype.h>
-#include "urlencode.h"
-
-enum {
-  /* rfc1738 reserved chars + "$" and ",".  */
-  urlchr_reserved = 1,
-
-  /* rfc1738 unsafe chars, plus non-printables.  */
-  urlchr_unsafe   = 2
-};
-
-#define urlchr_test(c, mask) (urlchr_table[(unsigned char)(c)] & (mask))
-#define URL_RESERVED_CHAR(c) urlchr_test(c, urlchr_reserved)
-#define URL_UNSAFE_CHAR(c) urlchr_test(c, urlchr_unsafe)
-#define XNUM_TO_DIGIT(x) ("0123456789ABCDEF"[x] + 0)
-#define ISXDIGIT(x) (isxdigit((unsigned char)(x)))
-#define X2DIGITS_TO_NUM(h1, h2) ((XDIGIT_TO_NUM (h1) << 4) + XDIGIT_TO_NUM (h2))
-#define XDIGIT_TO_NUM(h) ((h) < 'A' ? (h) - '0' : toupper (h) - 'A' + 10)
-
-/* Shorthands for the table: */
-#define R  urlchr_reserved
-#define U  urlchr_unsafe
-#define RU R|U
-
-static const unsigned char urlchr_table[256] =
-{
-  U,  U,  U,  U,   U,  U,  U,  U,   /* NUL SOH STX ETX  EOT ENQ ACK BEL */
-  U,  U,  U,  U,   U,  U,  U,  U,   /* BS  HT  LF  VT   FF  CR  SO  SI  */
-  U,  U,  U,  U,   U,  U,  U,  U,   /* DLE DC1 DC2 DC3  DC4 NAK SYN ETB */
-  U,  U,  U,  U,   U,  U,  U,  U,   /* CAN EM  SUB ESC  FS  GS  RS  US  */
-  U,  0,  U, RU,   R,  U,  R,  0,   /* SP  !   "   #    $   %   &   '   */
-  0,  0,  0,  R,   R,  0,  0,  R,   /* (   )   *   +    ,   -   .   /   */
-  0,  0,  0,  0,   0,  0,  0,  0,   /* 0   1   2   3    4   5   6   7   */
-  0,  0, RU,  R,   U,  R,  U,  R,   /* 8   9   :   ;    <   =   >   ?   */
- RU,  0,  0,  0,   0,  0,  0,  0,   /* @   A   B   C    D   E   F   G   */
-  0,  0,  0,  0,   0,  0,  0,  0,   /* H   I   J   K    L   M   N   O   */
-  0,  0,  0,  0,   0,  0,  0,  0,   /* P   Q   R   S    T   U   V   W   */
-  0,  0,  0, RU,   U, RU,  U,  0,   /* X   Y   Z   [    \   ]   ^   _   */
-  U,  0,  0,  0,   0,  0,  0,  0,   /* `   a   b   c    d   e   f   g   */
-  0,  0,  0,  0,   0,  0,  0,  0,   /* h   i   j   k    l   m   n   o   */
-  0,  0,  0,  0,   0,  0,  0,  0,   /* p   q   r   s    t   u   v   w   */
-  0,  0,  0,  U,   U,  U,  0,  U,   /* x   y   z   {    |   }   ~   DEL */
-
-  U, U, U, U,  U, U, U, U,  U, U, U, U,  U, U, U, U,
-  U, U, U, U,  U, U, U, U,  U, U, U, U,  U, U, U, U,
-  U, U, U, U,  U, U, U, U,  U, U, U, U,  U, U, U, U,
-  U, U, U, U,  U, U, U, U,  U, U, U, U,  U, U, U, U,
-
-  U, U, U, U,  U, U, U, U,  U, U, U, U,  U, U, U, U,
-  U, U, U, U,  U, U, U, U,  U, U, U, U,  U, U, U, U,
-  U, U, U, U,  U, U, U, U,  U, U, U, U,  U, U, U, U,
-  U, U, U, U,  U, U, U, U,  U, U, U, U,  U, U, U, U,
-};
-#undef R
-#undef U
-#undef RU
-
-/* URL-unescape the string S.
-
-   This is done by transforming the sequences "%HH" to the character
-   represented by the hexadecimal digits HH.  If % is not followed by
-   two hexadecimal digits, it is inserted literally.
-
-   The transformation is done in place.  If you need the original
-   string intact, make a copy before calling this function.  */
-
-char *
-xspf_url_decode (const char *s)
-{
-    char *copy = strdup(s);
-    char *t = copy;			/* t - tortoise */
-    char *h = copy;			/* h - hare     */
-
-    for (; *h; h++, t++)
-    {
-        if (*h != '%')
-        {
-        copychar:
-            *t = *h;
-        }
-        else
-        {
-            char c;
-            /* Do nothing if '%' is not followed by two hex digits. */
-            if (!h[1] || !h[2] || !(ISXDIGIT (h[1]) && ISXDIGIT (h[2])))
-                goto copychar;
-            c = X2DIGITS_TO_NUM (h[1], h[2]);
-            /* Don't unescape %00 because there is no way to insert it
-               into a C string without effectively truncating it. */
-            if (c == '\0')
-                goto copychar;
-            *t = c;
-            h += 2;
-        }
-    }
-    *t = '\0';
-    return copy;
-}
-
-/* The core of url_escape_* functions.  Escapes the characters that
-   match the provided mask in urlchr_table.
-
-   If ALLOW_PASSTHROUGH is non-zero, a string with no unsafe chars
-   will be returned unchanged.  If ALLOW_PASSTHROUGH is zero, a
-   freshly allocated string will be returned in all cases.  */
-
-static char *
-url_escape_1 (const char *s, unsigned char mask, int allow_passthrough)
-{
-  const char *p1;
-  char *p2, *newstr;
-  int newlen;
-  int addition = 0;
-
-  for (p1 = s; *p1; p1++)
-    if (urlchr_test (*p1, mask))
-      addition += 2;		/* Two more characters (hex digits) */
-
-  if (!addition)
-    return allow_passthrough ? (char *)s : strdup (s);
-
-  newlen = (p1 - s) + addition;
-  newstr = (char *)malloc (newlen + 1);
-
-  p1 = s;
-  p2 = newstr;
-  while (*p1)
-    {
-      /* Quote the characters that match the test mask. */
-      if (urlchr_test (*p1, mask))
-	{
-	  unsigned char c = *p1++;
-	  *p2++ = '%';
-	  *p2++ = XNUM_TO_DIGIT (c >> 4);
-	  *p2++ = XNUM_TO_DIGIT (c & 0xf);
-	}
-      else
-	*p2++ = *p1++;
-    }
-  g_return_val_if_fail (p2 - newstr == newlen, NULL);
-  *p2 = '\0';
-
-  return newstr;
-}
-
-/* URL-escape the unsafe characters (see urlchr_table) in a given
-   string, returning a freshly allocated string.  */
-
-char *
-xspf_url_encode (const char *s)
-{
-  return url_escape_1 (s, urlchr_unsafe, 0);
-}
--- a/src/xspf/urlencode.h	Mon Sep 24 13:06:11 2007 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-/* prototypes */
-
-char *xspf_url_decode(const char *url);
-char *xspf_url_encode(const char *path);