/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8; fill-column: 160 -*- */ /* camel-stream-buffer.c : Buffer any other other stream * * Authors: Michael Zucchi * * Copyright 1999, 2000 Ximian, Inc. (www.ximian.com) * * This program is free software; you can redistribute it and/or * modify it under the terms of version 2 of the GNU General Public * License as published by the Free Software Foundation. * * 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 */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include #include "camel-stream-buffer.h" static CamelStreamClass *parent_class = NULL; enum { BUF_USER = 1<<0, /* user-supplied buffer, do not free */ }; #define BUF_SIZE 1024 static ssize_t stream_read (CamelStream *stream, char *buffer, size_t n); static ssize_t stream_write (CamelStream *stream, const char *buffer, size_t n); static int stream_flush (CamelStream *stream); static int stream_close (CamelStream *stream); static gboolean stream_eos (CamelStream *stream); static void init_vbuf(CamelStreamBuffer *sbf, CamelStream *s, CamelStreamBufferMode mode, char *buf, guint32 size); static void init(CamelStreamBuffer *sbuf, CamelStream *s, CamelStreamBufferMode mode); static void camel_stream_buffer_class_init (CamelStreamBufferClass *camel_stream_buffer_class) { CamelStreamClass *camel_stream_class = CAMEL_STREAM_CLASS (camel_stream_buffer_class); parent_class = CAMEL_STREAM_CLASS (camel_type_get_global_classfuncs (camel_stream_get_type ())); /* virtual method definition */ camel_stream_buffer_class->init = init; camel_stream_buffer_class->init_vbuf = init_vbuf; /* virtual method overload */ camel_stream_class->read = stream_read; camel_stream_class->write = stream_write; camel_stream_class->flush = stream_flush; camel_stream_class->close = stream_close; camel_stream_class->eos = stream_eos; } static void camel_stream_buffer_init (gpointer object, gpointer klass) { CamelStreamBuffer *sbf = CAMEL_STREAM_BUFFER (object); sbf->flags = 0; sbf->size = BUF_SIZE; sbf->buf = g_malloc(BUF_SIZE); sbf->ptr = sbf->buf; sbf->end = sbf->buf; sbf->mode = CAMEL_STREAM_BUFFER_READ | CAMEL_STREAM_BUFFER_BUFFER; sbf->stream = 0; sbf->linesize = 80; sbf->linebuf = g_malloc(sbf->linesize); } static void camel_stream_buffer_finalize (CamelObject *object) { CamelStreamBuffer *sbf = CAMEL_STREAM_BUFFER (object); if (!(sbf->flags & BUF_USER)) { g_free(sbf->buf); } if (sbf->stream) camel_object_unref(CAMEL_OBJECT(sbf->stream)); g_free(sbf->linebuf); } CamelType camel_stream_buffer_get_type (void) { static CamelType camel_stream_buffer_type = CAMEL_INVALID_TYPE; if (camel_stream_buffer_type == CAMEL_INVALID_TYPE) { camel_stream_buffer_type = camel_type_register (camel_stream_get_type (), "CamelStreamBuffer", sizeof (CamelStreamBuffer), sizeof (CamelStreamBufferClass), (CamelObjectClassInitFunc) camel_stream_buffer_class_init, NULL, (CamelObjectInitFunc) camel_stream_buffer_init, (CamelObjectFinalizeFunc) camel_stream_buffer_finalize); } return camel_stream_buffer_type; } static void set_vbuf(CamelStreamBuffer *sbf, char *buf, CamelStreamBufferMode mode, int size) { if (sbf->buf && !(sbf->flags & BUF_USER)) { g_free(sbf->buf); } if (buf) { sbf->buf = buf; sbf->flags |= BUF_USER; } else { sbf->buf = g_malloc(size); sbf->flags &= ~BUF_USER; } sbf->size = size; sbf->mode = mode; } static void init_vbuf(CamelStreamBuffer *sbf, CamelStream *s, CamelStreamBufferMode mode, char *buf, guint32 size) { set_vbuf(sbf, buf, mode, size); if (sbf->stream) camel_object_unref(CAMEL_OBJECT(sbf->stream)); sbf->stream = s; camel_object_ref(CAMEL_OBJECT(sbf->stream)); } static void init(CamelStreamBuffer *sbuf, CamelStream *s, CamelStreamBufferMode mode) { init_vbuf(sbuf, s, mode, NULL, BUF_SIZE); } /** * camel_stream_buffer_new: * @stream: Existing stream to buffer. * @mode: Operational mode of buffered stream. * * Create a new buffered stream of another stream. A default * buffer size (1024 bytes), automatically managed will be used * for buffering. * * See camel_stream_buffer_new_with_vbuf() for details on the * @mode parameter. * * Return value: A newly created buffered stream. **/ CamelStream * camel_stream_buffer_new (CamelStream *stream, CamelStreamBufferMode mode) { CamelStreamBuffer *sbf; sbf = CAMEL_STREAM_BUFFER (camel_object_new (camel_stream_buffer_get_type ())); CAMEL_STREAM_BUFFER_CLASS (CAMEL_OBJECT_GET_CLASS(sbf))->init (sbf, stream, mode); return CAMEL_STREAM (sbf); } /** * camel_stream_buffer_new_with_vbuf: * @stream: An existing stream to buffer. * @mode: Mode to buffer in. * @buf: Memory to use for buffering. * @size: Size of buffer to use. * * Create a new stream which buffers another stream, @stream. * * The following values are available for @mode: * * CAMEL_STREAM_BUFFER_BUFFER, Buffer the input/output in blocks. * CAMEL_STREAM_BUFFER_NEWLINE, Buffer on newlines (for output). * CAMEL_STREAM_BUFFER_NONE, Perform no buffering. * * Note that currently this is ignored and CAMEL_STREAM_BUFFER_BUFFER * is always used. * * In addition, one of the following mode options should be or'd * together with the buffering mode: * * CAMEL_STREAM_BUFFER_WRITE, Buffer in write mode. * CAMEL_STREAM_BUFFER_READ, Buffer in read mode. * * Buffering can only be done in one direction for any * buffer instance. * * If @buf is non-NULL, then use the memory pointed to * (for upto @size bytes) as the buffer for all buffering * operations. It is upto the application to free this buffer. * If @buf is NULL, then allocate and manage @size bytes * for all buffering. * * Return value: A new stream with buffering applied. **/ CamelStream *camel_stream_buffer_new_with_vbuf (CamelStream *stream, CamelStreamBufferMode mode, char *buf, guint32 size) { CamelStreamBuffer *sbf; sbf = CAMEL_STREAM_BUFFER (camel_object_new (camel_stream_buffer_get_type ())); CAMEL_STREAM_BUFFER_CLASS (CAMEL_OBJECT_GET_CLASS(sbf))->init_vbuf (sbf, stream, mode, buf, size); return CAMEL_STREAM (sbf); } static ssize_t stream_read (CamelStream *stream, char *buffer, size_t n) { CamelStreamBuffer *sbf = CAMEL_STREAM_BUFFER (stream); ssize_t bytes_read = 1; ssize_t bytes_left; char *bptr = buffer; g_return_val_if_fail( (sbf->mode & CAMEL_STREAM_BUFFER_MODE) == CAMEL_STREAM_BUFFER_READ, 0); while (n && bytes_read > 0) { bytes_left = sbf->end - sbf->ptr; if (bytes_left < n) { if (bytes_left > 0) { memcpy(bptr, sbf->ptr, bytes_left); n -= bytes_left; bptr += bytes_left; sbf->ptr += bytes_left; } /* if we are reading a lot, then read directly to the destination buffer */ if (n >= sbf->size/3) { bytes_read = camel_stream_read(sbf->stream, bptr, n); if (bytes_read>0) { n -= bytes_read; bptr += bytes_read; } } else { bytes_read = camel_stream_read(sbf->stream, sbf->buf, sbf->size); if (bytes_read>0) { size_t bytes_used = bytes_read > n ? n : bytes_read; sbf->ptr = sbf->buf; sbf->end = sbf->buf+bytes_read; memcpy(bptr, sbf->ptr, bytes_used); sbf->ptr += bytes_used; bptr += bytes_used; n -= bytes_used; } } } else { memcpy(bptr, sbf->ptr, n); sbf->ptr += n; bptr += n; n = 0; } } return (ssize_t)(bptr - buffer); } /* only returns the number passed in, or -1 on an error */ static ssize_t stream_write_all(CamelStream *stream, const char *buffer, size_t n) { size_t left = n, w; while (left > 0) { w = camel_stream_write(stream, buffer, left); if (w == -1) return -1; left -= w; buffer += w; } return n; } static ssize_t stream_write (CamelStream *stream, const char *buffer, size_t n) { CamelStreamBuffer *sbf = CAMEL_STREAM_BUFFER (stream); ssize_t total = n; ssize_t left, todo; g_return_val_if_fail( (sbf->mode & CAMEL_STREAM_BUFFER_MODE) == CAMEL_STREAM_BUFFER_WRITE, 0); /* first, copy as much as we can */ left = sbf->size - (sbf->ptr-sbf->buf); todo = MIN(left, n); memcpy(sbf->ptr, buffer, todo); n -= todo; buffer += todo; sbf->ptr += todo; /* if we've filled the buffer, write it out, reset buffer */ if (left == todo) { if (stream_write_all(sbf->stream, sbf->buf, sbf->size) == -1) return -1; sbf->ptr = sbf->buf; } /* if we still have more, write directly, or copy to buffer */ if (n > 0) { if (n >= sbf->size/3) { if (stream_write_all(sbf->stream, buffer, n) == -1) return -1; } else { memcpy(sbf->ptr, buffer, n); sbf->ptr += n; } } return total; } static int stream_flush (CamelStream *stream) { CamelStreamBuffer *sbf = CAMEL_STREAM_BUFFER (stream); if ((sbf->mode & CAMEL_STREAM_BUFFER_MODE) == CAMEL_STREAM_BUFFER_WRITE) { int len = sbf->ptr-sbf->buf; int written = camel_stream_write(sbf->stream, sbf->buf, len); if (written > 0) sbf->ptr += written; if (written != len) return -1; } else { /* nothing to do for read mode 'flush' */ } return camel_stream_flush(sbf->stream); } static int stream_close (CamelStream *stream) { CamelStreamBuffer *sbf = CAMEL_STREAM_BUFFER (stream); if (stream_flush(stream) == -1) return -1; return camel_stream_close(sbf->stream); } static gboolean stream_eos (CamelStream *stream) { CamelStreamBuffer *sbf = CAMEL_STREAM_BUFFER (stream); return camel_stream_eos(sbf->stream) && sbf->ptr == sbf->end; } /** * camel_stream_buffer_gets: * @sbf: A CamelStreamBuffer. * @buf: Memory to write the string to. * @max: Maxmimum number of characters to store. * * Read a line of characters up to the next newline character or * @max-1 characters. * * If the newline character is encountered, then it will be * included in the buffer @buf. The buffer will be #NUL terminated. * * Return value: The number of characters read, or 0 for end of file, * and -1 on error. **/ int camel_stream_buffer_gets(CamelStreamBuffer *sbf, char *buf, unsigned int max) { register char *outptr, *inptr, *inend, c, *outend; int bytes_read; outptr = buf; inptr = sbf->ptr; inend = sbf->end; outend = buf+max-1; /* room for NUL */ do { while (inptrptr = inptr; return outptr-buf; } } if (outptr == outend) break; bytes_read = camel_stream_read (sbf->stream, sbf->buf, sbf->size); if (bytes_read == -1) { if (buf == outptr) return -1; else bytes_read = 0; } inptr = sbf->ptr = sbf->buf; inend = sbf->end = sbf->buf + bytes_read; } while (bytes_read>0); sbf->ptr = inptr; *outptr = 0; return (int)(outptr - buf); } /** * camel_stream_buffer_read_line: read a complete line from the stream * @sbf: A CamelStreamBuffer * * This function reads a complete newline-terminated line from the stream * and returns it in allocated memory. The trailing newline (and carriage * return if any) are not included in the returned string. * * Return value: the line read, which the caller must free when done with, * or NULL on eof. If an error occurs, @ex will be set. **/ char * camel_stream_buffer_read_line (CamelStreamBuffer *sbf) { unsigned char *p; int nread; p = sbf->linebuf; while (1) { nread = camel_stream_buffer_gets (sbf, p, sbf->linesize - (p - sbf->linebuf)); if (nread <=0) { if (p > sbf->linebuf) break; return NULL; } p += nread; if (p[-1] == '\n') break; nread = p - sbf->linebuf; sbf->linesize *= 2; sbf->linebuf = g_realloc (sbf->linebuf, sbf->linesize); p = sbf->linebuf + nread; } p--; if (p > sbf->linebuf && p[-1] == '\r') p--; p[0] = 0; return g_strdup(sbf->linebuf); } oval&id=249a718c26594354d574f1710d6ddc473b38800e'>lang/librep: Update version 0.92.4=>0.92.5bofh2015-03-242-4/+4 * Fix UNIQUENAME not being unique after recent PORTNAME shuffle.bdrewery2015-03-246-2/+12 * Update to the 20150322 snapshot of GCC 5.0.gerald2015-03-232-3/+3 * lang/gcc5-aux: Upgrade snapshot from 15 March to 22 Marchmarino2015-03-232-3/+3 * Add CONFLICTS with lang/gcc which is also GCC 4.8-based right now.gerald2015-03-232-6/+10 * Add CPE information. [1]gerald2015-03-231-3/+6 * Add CPE information. [1]gerald2015-03-231-3/+4 * Use PKGNAMESUFFIX so that PORTNAME falls back to plain gcc and wegerald2015-03-231-3/+2 * Use PKGNAMESUFFIX so that PORTNAME falls back to plain gcc and wegerald2015-03-231-3/+2 * Add CPE information.gerald2015-03-221-1/+4 * lang/sbcl: Install contrib modules (again)marino2015-03-222-12/+135 * lang/sbcl: Fix MASTER_SITES, support DragonFly and moremarino2015-03-222-98/+66 * lang/sbcl: remove experimental THREADS option; it doesn't buildmarino2015-03-221-1/+1 * Add CPE information.gerald2015-03-221-1/+4 * Add CPE information.gerald2015-03-221-1/+2 * Add patches for the following CVEsflo2015-03-223-1/+53 * php53 and fallout: Deprecate, set removal for 15 APR 2015marino2015-03-222-0/+6 * - Update to upstream release 2.11.6riggs2015-03-222-3/+3 * Give up maintainershipflo2015-03-222-2/+2 * lang/sbcl: Upgrade version 1.1.12 => 1.2.9marino2015-03-216-243/+94 * Update to the 20150318 snapshot of GCC 4.9.3.gerald2015-03-212-3/+3 * Update USE_GITHUB so it does not require GH_COMMIT.bdrewery2015-03-201-1/+1 * Fix Erlang release in pkg-descr.olgeni2015-03-181-1/+1 * lang/gcc5: Support DragonFly's gcc50 base compiler in specific scenariomarino2015-03-181-0/+8 * Update Qt5 to 5.4.1.rakuco2015-03-184-35/+2 * Update to 1.1.2bapt2015-03-182-3/+3 * lang/gnatdroid-armv7: Explicitly request gcc-auxmarino2015-03-171-1/+1 * Enable multi-threading.vanilla2015-03-172-4/+24 * lang/gcc5-aux: Disable diagnostic checksmarino2015-03-171-0/+1 * lang/gcc5-aux: Upgrade snapshot from 20150308 to 20150315marino2015-03-172-4/+4 * lang/asis: Fix build on gcc5-auxmarino2015-03-172-0/+80 * - Update Tcl/Tk 8.6 to 8.6.4gahr2015-03-173-80/+84 * Update to version 2.1.1.0pawel2015-03-173-7/+10 * lang/gnat_util, devel/gprbuild: Support gcc5-auxmarino2015-03-163-6/+6 * Update to the 20150315 snapshot of GCC 5.0.gerald2015-03-162-3/+3 * lang/gcc5-aux: Fix ada hardlinkmarino2015-03-162-2/+2 * lang/gcc5-aux: Make DragonFly build 3 stages toomarino2015-03-161-3/+2 * Update to 5.2.4bapt2015-03-152-4/+3 * - Update to version 1.15.3pawel2015-03-152-8/+8 * Add new port lang/gcc5-aux (next Ada compiler)marino2015-03-1514-0/+4895 * lang/gnatdroid-armv5: Oh, is it 2015 already?marino2015-03-141-1/+1 * Clean up the rest of the perl@ Makefiles a bit.adamw2015-03-143-29/+20 * lang/gcc-aux: Correct information about license in pkg-descrmarino2015-03-131-6/+4 * lang/gnatdroid-armv5: Set for removal on 31 March 2015marino2015-03-131-0/+2 * lang/gcc47-aux: Fix typo in DEPRECATED messagemarino2015-03-131-1/+1 * lang/gcc47-aux: Deprecate and expire before 1 June 2015marino2015-03-131-0/+3 * Update to the 20150311 snapshot of GCC 4.9.3.gerald2015-03-132-3/+3 * Make fetchableantoine2015-03-131-1/+2 * - Simplify MASTER_SITESamdmi32015-03-121-3/+3 * - Add empty directory to plistamdmi32015-03-122-1/+2 * Update to 3.8.romain2015-03-124-23/+12 * Update KDE SC to 4.14.3alonso2015-03-121-2/+2 * Convert to USES=mono (and unbreak when no TZ is set)antoine2015-03-121-4/+1 * Update to the 20150308 snapshot of GCC 5.0.gerald2015-03-112-3/+3 * - Simplify MASTER_SITESamdmi32015-03-101-2/+3 * Fix build on FreeBSD 8.romain2015-03-091-0/+16 * Add an upstream patch fixing build with gcc5.mat2015-03-093-0/+117 * Fix build on i386.romain2015-03-091-0/+13 * Fix build when no TimeZone is configured.romain2015-03-091-1/+1 * lang/ruby22: update to 2.2.1swills2015-03-097-426/+400 * - Add LICENSEamdmi32015-03-091-1/+6 * - Simplify MASTER_SITESamdmi32015-03-091-4/+7 * Import upstream patch for non-Linux ParseRouteInfo.romain2015-03-083-1/+339 * Update to the 20150304 snapshot of GCC 4.9.3.gerald2015-03-082-3/+3 * - Add LICENSEamdmi32015-03-081-0/+7 * Update to the 20150301 snapshot of GCC 5.0.gerald2015-03-082-3/+3 * lang/ruby20: update to 2.0.0 p643swills2015-03-084-46/+18 * Update to 3.12.1.romain2015-03-085-36/+6 * - Update Tcl/Tk 8.5 to 8.5.18gahr2015-03-074-84/+71 * lang/gcc-aux, lang/gcc47-aux, lang/gnatdroid-arm*: Add CPE informationmarino2015-03-052-2/+8 * Add checksums for 3.4.3 docs.demon2015-03-031-8/+8 * Update to version 3.4.3.demon2015-03-034-17/+26 * lang/gnatdroid-binutils: Fix undefined behavior in arm gasmarino2015-03-032-1/+18 * Remove Author from pkg-descr and white space fixesbapt2015-03-036-6/+0 * Update to 3.6.0 release.brooks2015-03-032-6/+6 * - Add LICENSEamdmi32015-03-022-0/+5 * - Change inline constant rotate functions to macros in the cryptoashish2015-03-011-0/+107 * Fix packagingantoine2015-03-011-1/+2 * lang/gnustep-base: Remove empty directories from stagedirmarino2015-03-011-0/+3 * Update to 0.76bapt2015-02-272-6/+6 * Update to the 20150225 snapshot of GCC 4.9.3.gerald2015-02-262-3/+3 * - Update to 0.6.1ashish2015-02-254-19/+89 * - Add LICENSEamdmi32015-02-251-0/+6 * By default dmd uses gcc to invoke the linker. Fix linking oncy2015-02-256-19/+39 * Add patches forflo2015-02-253-1/+113 * Remove lang/ruby19 which reached its end-of-life on 2015-02-23rene2015-02-2514-20431/+0 * Update to the 20150222 snapshot of GCC 5.0.gerald2015-02-252-3/+3 * - Update to version 2.0.2.1 [1]pawel2015-02-244-6/+5 * lang/urweb: update to 20150214rm2015-02-232-3/+3 * Fix packagingantoine2015-02-231-1/+2 * Upgrade to version 15.2.21 and unbreak.olgeni2015-02-223-270/+215 * Update to 1.1.1bapt2015-02-222-3/+3 * Add lang/erlang-java and lang/erlang-wx.olgeni2015-02-219-0/+1061 * - Use CXXFLAGS instead of CFLAGSsunpoet2015-02-211-6/+3 * - Fix build with Clang 3.6.0sunpoet2015-02-211-5/+5 * Upgrade to version 17.4.1.olgeni2015-02-215-55/+1410 * Add Ruby 2.2.0swills2015-02-2113-0/+18454 * Upgrade to version 17.4.1.olgeni2015-02-212-3/+1369 * Update to rc4.brooks2015-02-212-6/+6 * Switch default PHP version to 5.6.x.ale2015-02-208-9/+11 * Update to the 20150218 snapshot of GCC 4.9.3.gerald2015-02-202-3/+3 * Update to rc3brooks2015-02-202-6/+6 * - Update to 0.22 [1]jbeich2015-02-192-3/+7 * Register CONFLICTS between execline and ImageMagickjbeich2015-02-191-0/+2 * - Update to 1.4.2jlaffaye2015-02-193-3/+12 * - Update to 7.0.2sunpoet2015-02-192-3/+3 * - Update to 1.20150127sunpoet2015-02-192-4/+3 * Update Perl 5.20 to 5.20.2.mat2015-02-179-22/+27 * - update to 0.405lth2015-02-172-3/+3 * - Update to 1.41adamw2015-02-173-6/+7 * - Update to 0.22adamw2015-02-172-4/+8 * Upgrade to 2.6.12.vanilla2015-02-162-4/+3 * Upgrade to 1.6.0.vanilla2015-02-163-12/+106 * Update to the 20150212 snapshot of GCC 4.8.5.gerald2015-02-162-3/+3 * Update to the 20150215 snapshot of GCC 5.0.gerald2015-02-162-3/+3 * Add new port: devel/hs-ShellCheckpgj2015-02-161-0/+1 * Update to the 20150211 snapshot of GCC 4.9.3.gerald2015-02-152-3/+3 * Update to 0.17023.adamw2015-02-152-4/+3 * Give this an expiration date. The latest release is 0.64 from 20141030 andlinimon2015-02-141-2/+4 * Fix the build with clang 3.5 by using the suggested function.kwm2015-02-141-0/+11 * Check if dtraceall is actually loaded when DTRACE is enabled.olgeni2015-02-133-0/+24 * Only enable dtrace support for amd64/i386 for now.sbruno2015-02-131-1/+1 * lang/python34: BROKEN on i386 without LIBFFIkoobs2015-02-111-14/+16 * lang/python33: BROKEN on i386 without LIBFFIkoobs2015-02-111-9/+15 * - devel/skalibs: update to 2.2.1.0 [1]jbeich2015-02-114-58/+49 * pypy-devel: update to 2.5dbn2015-02-116-10/+50 * Update to the 20150208 snapshot of GCC 5.0.gerald2015-02-112-3/+3 * - Update to 0.404lth2015-02-102-4/+3 * - Update to 2.5.2ashish2015-02-093-2743/+3990 * Update to the 20150204 snapshot of GCC 4.9.3.gerald2015-02-072-3/+3 * - Update to version 2.11.5 [1]pawel2015-02-062-9/+9 * Update to RC2.brooks2015-02-062-6/+6 * Update to the 20150201 snapshot of GCC 5.0.gerald2015-02-022-10/+5 * Change the EDIT option of ruby to use libedit by default now that libeditbapt2015-02-026-3/+36 * Do not disable the hipe application entirely, even if the HIPEolgeni2015-02-023-12/+3 * Update to the 20150129 snapshot of GCC 4.8.5.gerald2015-02-012-3/+3 * Sort OPTIONS_DEFINE and OPTIONS_DEFAULT.olgeni2015-02-013-8/+87 * Update to the 20150128 snapshot of GCC 4.9.3.gerald2015-01-312-3/+3 * Add DTRACE optionkwm2015-01-305-2/+103 * Fix the build on ARM [1]kwm2015-01-308-2/+194 * Also disable Java and libffi on amd64 until the next snapshot ofgerald2015-01-301-3/+3 * Add upstream commit to fix a crash in devel/qtcreator.rakuco2015-01-292-0/+27 * New port - 0.94tj2015-01-295-0/+55 * Allow to build gcc for armv6(hf).andreast2015-01-282-1/+116 * - Update to 7.0.1sunpoet2015-01-272-3/+3 * Upgrade from 5f1 to 5f2.mi2015-01-276-57/+6922 * Upgrade to a new snapshot support an upcoming CheriBSD release.brooks2015-01-275-604/+190 * Update to the 20150125 snapshot of GCC 5.0. Sadly libffi is stillgerald2015-01-262-3/+3 * Update to the 20150118 snapshot of GCC 5.0.gerald2015-01-263-5/+10 * Replace spaces with tab.xmj2015-01-251-2/+2 * lang/lci: Add port.xmj2015-01-254-0/+27 * lang/py-mx-base: Update version 3.2.7=>3.2.8bofh2015-01-252-4/+20 * Update to the 20150122 snapshot of GCC 4.8.5.gerald2015-01-252-3/+3 * Update to the 20150121 snapshot of GCC 4.9.3.gerald2015-01-252-3/+3 * - Update to csnobol4 version 2.0; this is a major upgradejohans2015-01-254-23/+94 * Switch ports depending on docbook* through a directory name to a package name,antoine2015-01-242-2/+2 * Remove explicit dependency on javavmwrapper for ports that USE_JAVAantoine2015-01-241-2/+0 * Update to 5.4.37 release.ale2015-01-232-3/+3 * Update to 5.5.21 release.ale2015-01-234-26/+3 * Update to 5.6.5 release.ale2015-01-234-26/+3 * Update 2.066.0 --> 2.066.1cy2015-01-233-8/+7 * lang/ruby19: set expiration dateswills2015-01-231-0/+3 * - Update to 7.0.0sunpoet2015-01-232-3/+3 * Remove BSDPAN from here too.mat2015-01-233-6/+0 * Add ports of llvm/clang 3.6.0rc1.brooks2015-01-2216-0/+1026 * Upgrade to llvm/clang 3.5.1 release.brooks2015-01-223-51/+44 * lang/python32: Fix ABIFLAGS for PYMALLOC optionkoobs2015-01-212-12/+32 * lang/python27: Fix packaging for mips64koobs2015-01-211-10/+15 * This fails to properly build with GCC 4.9, so force GCC 4.8 for thegerald2015-01-201-1/+2 * Allow to link imap extension with newer panda-cclient library.ale2015-01-193-15/+36 * lang/guile2 error: Fix LIB_DEPENDSbofh2015-01-181-4/+2 * Update to the 20150114 snapshot of GCC 4.9.3.gerald2015-01-172-3/+3 * Fix build on headantoine2015-01-172-2/+2 * Add lua 5.3.0bapt2015-01-178-0/+195 * Update to 1.1.0bapt2015-01-173-7/+12 * Link on libedit instead of readlinebapt2015-01-172-5/+9 * Add a forgot post-patch for libedit supportbapt2015-01-171-1/+3 * Link on port version of libeditbapt2015-01-171-3/+5 * Update to r225991 (the 3.6 branch point).brooks2015-01-162-5/+4 * Update to 2.11.5 release.ale2015-01-152-3/+3 * Update vala to 0.26.2.kwm2015-01-152-4/+3 * Update patch forgotten in previous commitjohans2015-01-151-10/+10 * Add missing USE_OPENSSL=yestijl2015-01-152-2/+4 * Backport lang/pypy-devel to lang/pypy.dbn2015-01-155-49/+82 * - Update to 6.9.0sunpoet2015-01-135-32/+19 * Update to the 20150108 snapshot of GCC 4.8.5. This is a bit pastgerald2015-01-122-3/+3 * Tweak a comment and fix whitespace in the new ARM support.gerald2015-01-121-2/+2 * Update to the 20150111 snapshot of GCC 5.0.gerald2015-01-122-3/+3 * Switch default python3 version from 3.3 to 3.4.demon2015-01-111-1/+1 * Revert part of r376655 that is breaks freebsd portsantoine2015-01-111-1/+1 * lang/fpc: Remove unnecessarily variable substition and EXTRACT_SUFXmarino2015-01-101-8/+7 * lang/fpc: Remove googlecode from MASTER_SITESmarino2015-01-101-4/+2 * lang/fpc: Prepare for 3.0 and the use of older bootstrapmarino2015-01-104-37/+69 * Update to Afnix 2.5.1johans2015-01-103-38/+30 * Update to the 20150107 snapshot of GCC 4.9.3.gerald2015-01-092-5/+5 * Update to the 20150104 snapshot of GCC 5.0.gerald2015-01-092-3/+3 * - Fix BUILD_DEPENDS: ExtUtils::CBuilder 0.27+ is already in all supported Per...sunpoet2015-01-081-6/+2 * Move MASTER_SITES from CRITICAL to LOCAL/ehauptehaupt2015-01-062-2/+2 * Add support for armv6*-*-freebsd*.andreast2015-01-063-3/+776 * Assign maintainership of FPC ports to new FPC ports teammarino2015-01-058-8/+8 * Add support for armv6*-*-freebsd*.andreast2015-01-053-1/+781 * - Add missing dependencylth2015-01-041-0/+3 * Upgrade to version 10.6.1.olgeni2015-01-044-39/+11 * Update from the GCC 4.8.3 release to the GCC 4.8.4 release.gerald2015-01-042-4/+3 * update to 0.402lth2015-01-043-5/+8 * security/libgcrypt: 1.6.1 -> 1.6.2, bump dependspi2015-01-031-1/+1 * Update to the 20141231 snapshot of GCC 4.9.3..gerald2015-01-022-3/+3 * Update to the 20141228 snapshot of GCC 5.0.gerald2015-01-022-3/+3 * Update to the 20141224 snapshot of GCC 4.9.3.gerald2015-01-022-3/+3 * - Add LICENSEsunpoet2015-01-021-0/+5 * Unbreak cjs and cinnamon on 9.3 and 8.4. The spidermonkey 24.0 code needskwm2015-01-011-2/+2 * Remove expired port:rene2015-01-0115-3531/+0 * Update devel/doxygen to 1.8.9antoine2014-12-313-52/+24 * Fix build for armv6 with an upstream commit:sbruno2014-12-312-1/+12 * Update cinnamon to 2.4, this should fix [1] and [2].kwm2014-12-313-35/+8 * When building the gcc ports using a full bootstrap, tell the configuredim2014-12-316-0/+6 * Update to 2.11.4 release.ale2014-12-302-7/+6 * Update to 5.6.4 release.ale2014-12-292-3/+3 * Update to 5.5.20 release.ale2014-12-292-3/+3 * Update to 5.4.36 release and drop broken fpm-ipv6 patch.ale2014-12-293-223/+4 * Update to the 20141221 snapshot of GCC 5.0.gerald2014-12-262-3/+3 * Bump portrevision after png updatebapt2014-12-263-2/+6 * Change libpng15.so to libpng.so in LIB_DEPENDS to prepare the upgradeantoine2014-12-266-6/+6 * Remove fpc-imlib and fpc-gnome1bapt2014-12-251-7/+5 * Finish properly support png 1.5antoine2014-12-251-1/+1 * Properly support png 1.5bapt2014-12-252-15/+16 * Use a less kludgy way for handling libperl.so's versionning and linking.mat2014-12-258-56/+56 * - Use proper command for manpage installationamdmi32014-12-241-2/+6 * Change my non-FreeBSD MAINTAINER mail to bofh@bofh2014-12-24