|
Karsten Hopp |
9aaaf6 |
To: vim_dev@googlegroups.com
|
|
Karsten Hopp |
9aaaf6 |
Subject: Patch 7.3.221
|
|
Karsten Hopp |
9aaaf6 |
Fcc: outbox
|
|
Karsten Hopp |
9aaaf6 |
From: Bram Moolenaar <Bram@moolenaar.net>
|
|
Karsten Hopp |
9aaaf6 |
Mime-Version: 1.0
|
|
Karsten Hopp |
9aaaf6 |
Content-Type: text/plain; charset=UTF-8
|
|
Karsten Hopp |
9aaaf6 |
Content-Transfer-Encoding: 8bit
|
|
Karsten Hopp |
9aaaf6 |
------------
|
|
Karsten Hopp |
9aaaf6 |
|
|
Karsten Hopp |
9aaaf6 |
Patch 7.3.221
|
|
Karsten Hopp |
9aaaf6 |
Problem: Text from the clipboard is sometimes handled as linewise, but not
|
|
Karsten Hopp |
9aaaf6 |
consistently.
|
|
Karsten Hopp |
9aaaf6 |
Solution: Assume the text is linewise when it ends in a CR or NL.
|
|
Karsten Hopp |
9aaaf6 |
Files: src/gui_gtk_x11.c, src/gui_mac.c, src/ops.c, src/os_msdos.c,
|
|
Karsten Hopp |
9aaaf6 |
src/os_mswin.c, src/os_qnx.c, src/ui.c
|
|
Karsten Hopp |
9aaaf6 |
|
|
Karsten Hopp |
9aaaf6 |
|
|
Karsten Hopp |
9aaaf6 |
*** ../mercurial/vim73/src/gui_gtk_x11.c 2011-02-25 17:10:22.000000000 +0100
|
|
Karsten Hopp |
9aaaf6 |
--- src/gui_gtk_x11.c 2011-06-19 00:58:31.000000000 +0200
|
|
Karsten Hopp |
9aaaf6 |
***************
|
|
Karsten Hopp |
9aaaf6 |
*** 1173,1179 ****
|
|
Karsten Hopp |
9aaaf6 |
char_u *tmpbuf = NULL;
|
|
Karsten Hopp |
9aaaf6 |
guchar *tmpbuf_utf8 = NULL;
|
|
Karsten Hopp |
9aaaf6 |
int len;
|
|
Karsten Hopp |
9aaaf6 |
! int motion_type;
|
|
Karsten Hopp |
9aaaf6 |
|
|
Karsten Hopp |
9aaaf6 |
if (data->selection == clip_plus.gtk_sel_atom)
|
|
Karsten Hopp |
9aaaf6 |
cbd = &clip_plus;
|
|
Karsten Hopp |
9aaaf6 |
--- 1173,1179 ----
|
|
Karsten Hopp |
9aaaf6 |
char_u *tmpbuf = NULL;
|
|
Karsten Hopp |
9aaaf6 |
guchar *tmpbuf_utf8 = NULL;
|
|
Karsten Hopp |
9aaaf6 |
int len;
|
|
Karsten Hopp |
9aaaf6 |
! int motion_type = MAUTO;
|
|
Karsten Hopp |
9aaaf6 |
|
|
Karsten Hopp |
9aaaf6 |
if (data->selection == clip_plus.gtk_sel_atom)
|
|
Karsten Hopp |
9aaaf6 |
cbd = &clip_plus;
|
|
Karsten Hopp |
9aaaf6 |
***************
|
|
Karsten Hopp |
9aaaf6 |
*** 1182,1188 ****
|
|
Karsten Hopp |
9aaaf6 |
|
|
Karsten Hopp |
9aaaf6 |
text = (char_u *)data->data;
|
|
Karsten Hopp |
9aaaf6 |
len = data->length;
|
|
Karsten Hopp |
9aaaf6 |
- motion_type = MCHAR;
|
|
Karsten Hopp |
9aaaf6 |
|
|
Karsten Hopp |
9aaaf6 |
if (text == NULL || len <= 0)
|
|
Karsten Hopp |
9aaaf6 |
{
|
|
Karsten Hopp |
9aaaf6 |
--- 1182,1187 ----
|
|
Karsten Hopp |
9aaaf6 |
*** ../mercurial/vim73/src/gui_mac.c 2011-06-12 20:33:30.000000000 +0200
|
|
Karsten Hopp |
9aaaf6 |
--- src/gui_mac.c 2011-06-19 00:59:07.000000000 +0200
|
|
Karsten Hopp |
9aaaf6 |
***************
|
|
Karsten Hopp |
9aaaf6 |
*** 4671,4677 ****
|
|
Karsten Hopp |
9aaaf6 |
if (flavor)
|
|
Karsten Hopp |
9aaaf6 |
type = **textOfClip;
|
|
Karsten Hopp |
9aaaf6 |
else
|
|
Karsten Hopp |
9aaaf6 |
! type = (strchr(*textOfClip, '\r') != NULL) ? MLINE : MCHAR;
|
|
Karsten Hopp |
9aaaf6 |
|
|
Karsten Hopp |
9aaaf6 |
tempclip = lalloc(scrapSize + 1, TRUE);
|
|
Karsten Hopp |
9aaaf6 |
mch_memmove(tempclip, *textOfClip + flavor, scrapSize);
|
|
Karsten Hopp |
9aaaf6 |
--- 4671,4677 ----
|
|
Karsten Hopp |
9aaaf6 |
if (flavor)
|
|
Karsten Hopp |
9aaaf6 |
type = **textOfClip;
|
|
Karsten Hopp |
9aaaf6 |
else
|
|
Karsten Hopp |
9aaaf6 |
! type = MAUTO;
|
|
Karsten Hopp |
9aaaf6 |
|
|
Karsten Hopp |
9aaaf6 |
tempclip = lalloc(scrapSize + 1, TRUE);
|
|
Karsten Hopp |
9aaaf6 |
mch_memmove(tempclip, *textOfClip + flavor, scrapSize);
|
|
Karsten Hopp |
9aaaf6 |
*** ../mercurial/vim73/src/ops.c 2011-04-01 16:28:33.000000000 +0200
|
|
Karsten Hopp |
9aaaf6 |
--- src/ops.c 2011-06-19 00:59:39.000000000 +0200
|
|
Karsten Hopp |
9aaaf6 |
***************
|
|
Karsten Hopp |
9aaaf6 |
*** 5733,5739 ****
|
|
Karsten Hopp |
9aaaf6 |
}
|
|
Karsten Hopp |
9aaaf6 |
}
|
|
Karsten Hopp |
9aaaf6 |
|
|
Karsten Hopp |
9aaaf6 |
! /* Convert from the GUI selection string into the '*'/'+' register */
|
|
Karsten Hopp |
9aaaf6 |
void
|
|
Karsten Hopp |
9aaaf6 |
clip_yank_selection(type, str, len, cbd)
|
|
Karsten Hopp |
9aaaf6 |
int type;
|
|
Karsten Hopp |
9aaaf6 |
--- 5733,5741 ----
|
|
Karsten Hopp |
9aaaf6 |
}
|
|
Karsten Hopp |
9aaaf6 |
}
|
|
Karsten Hopp |
9aaaf6 |
|
|
Karsten Hopp |
9aaaf6 |
! /*
|
|
Karsten Hopp |
9aaaf6 |
! * Convert from the GUI selection string into the '*'/'+' register.
|
|
Karsten Hopp |
9aaaf6 |
! */
|
|
Karsten Hopp |
9aaaf6 |
void
|
|
Karsten Hopp |
9aaaf6 |
clip_yank_selection(type, str, len, cbd)
|
|
Karsten Hopp |
9aaaf6 |
int type;
|
|
Karsten Hopp |
9aaaf6 |
***************
|
|
Karsten Hopp |
9aaaf6 |
*** 6090,6098 ****
|
|
Karsten Hopp |
9aaaf6 |
if (yank_type == MBLOCK)
|
|
Karsten Hopp |
9aaaf6 |
yank_type = MAUTO;
|
|
Karsten Hopp |
9aaaf6 |
#endif
|
|
Karsten Hopp |
9aaaf6 |
- if (yank_type == MAUTO)
|
|
Karsten Hopp |
9aaaf6 |
- yank_type = ((len > 0 && (str[len - 1] == '\n' || str[len - 1] == '\r'))
|
|
Karsten Hopp |
9aaaf6 |
- ? MLINE : MCHAR);
|
|
Karsten Hopp |
9aaaf6 |
str_to_reg(y_current, yank_type, str, len, block_len);
|
|
Karsten Hopp |
9aaaf6 |
|
|
Karsten Hopp |
9aaaf6 |
# ifdef FEAT_CLIPBOARD
|
|
Karsten Hopp |
9aaaf6 |
--- 6092,6097 ----
|
|
Karsten Hopp |
9aaaf6 |
***************
|
|
Karsten Hopp |
9aaaf6 |
*** 6113,6125 ****
|
|
Karsten Hopp |
9aaaf6 |
* is appended.
|
|
Karsten Hopp |
9aaaf6 |
*/
|
|
Karsten Hopp |
9aaaf6 |
static void
|
|
Karsten Hopp |
9aaaf6 |
! str_to_reg(y_ptr, type, str, len, blocklen)
|
|
Karsten Hopp |
9aaaf6 |
struct yankreg *y_ptr; /* pointer to yank register */
|
|
Karsten Hopp |
9aaaf6 |
! int type; /* MCHAR, MLINE or MBLOCK */
|
|
Karsten Hopp |
9aaaf6 |
char_u *str; /* string to put in register */
|
|
Karsten Hopp |
9aaaf6 |
long len; /* length of string */
|
|
Karsten Hopp |
9aaaf6 |
long blocklen; /* width of Visual block */
|
|
Karsten Hopp |
9aaaf6 |
{
|
|
Karsten Hopp |
9aaaf6 |
int lnum;
|
|
Karsten Hopp |
9aaaf6 |
long start;
|
|
Karsten Hopp |
9aaaf6 |
long i;
|
|
Karsten Hopp |
9aaaf6 |
--- 6112,6125 ----
|
|
Karsten Hopp |
9aaaf6 |
* is appended.
|
|
Karsten Hopp |
9aaaf6 |
*/
|
|
Karsten Hopp |
9aaaf6 |
static void
|
|
Karsten Hopp |
9aaaf6 |
! str_to_reg(y_ptr, yank_type, str, len, blocklen)
|
|
Karsten Hopp |
9aaaf6 |
struct yankreg *y_ptr; /* pointer to yank register */
|
|
Karsten Hopp |
9aaaf6 |
! int yank_type; /* MCHAR, MLINE, MBLOCK, MAUTO */
|
|
Karsten Hopp |
9aaaf6 |
char_u *str; /* string to put in register */
|
|
Karsten Hopp |
9aaaf6 |
long len; /* length of string */
|
|
Karsten Hopp |
9aaaf6 |
long blocklen; /* width of Visual block */
|
|
Karsten Hopp |
9aaaf6 |
{
|
|
Karsten Hopp |
9aaaf6 |
+ int type; /* MCHAR, MLINE or MBLOCK */
|
|
Karsten Hopp |
9aaaf6 |
int lnum;
|
|
Karsten Hopp |
9aaaf6 |
long start;
|
|
Karsten Hopp |
9aaaf6 |
long i;
|
|
Karsten Hopp |
9aaaf6 |
***************
|
|
Karsten Hopp |
9aaaf6 |
*** 6136,6141 ****
|
|
Karsten Hopp |
9aaaf6 |
--- 6136,6147 ----
|
|
Karsten Hopp |
9aaaf6 |
if (y_ptr->y_array == NULL) /* NULL means empty register */
|
|
Karsten Hopp |
9aaaf6 |
y_ptr->y_size = 0;
|
|
Karsten Hopp |
9aaaf6 |
|
|
Karsten Hopp |
9aaaf6 |
+ if (yank_type == MAUTO)
|
|
Karsten Hopp |
9aaaf6 |
+ type = ((len > 0 && (str[len - 1] == NL || str[len - 1] == CAR))
|
|
Karsten Hopp |
9aaaf6 |
+ ? MLINE : MCHAR);
|
|
Karsten Hopp |
9aaaf6 |
+ else
|
|
Karsten Hopp |
9aaaf6 |
+ type = yank_type;
|
|
Karsten Hopp |
9aaaf6 |
+
|
|
Karsten Hopp |
9aaaf6 |
/*
|
|
Karsten Hopp |
9aaaf6 |
* Count the number of lines within the string
|
|
Karsten Hopp |
9aaaf6 |
*/
|
|
Karsten Hopp |
9aaaf6 |
*** ../mercurial/vim73/src/os_msdos.c 2010-12-17 18:06:00.000000000 +0100
|
|
Karsten Hopp |
9aaaf6 |
--- src/os_msdos.c 2011-06-19 01:00:56.000000000 +0200
|
|
Karsten Hopp |
9aaaf6 |
***************
|
|
Karsten Hopp |
9aaaf6 |
*** 2232,2238 ****
|
|
Karsten Hopp |
9aaaf6 |
void
|
|
Karsten Hopp |
9aaaf6 |
clip_mch_request_selection(VimClipboard *cbd)
|
|
Karsten Hopp |
9aaaf6 |
{
|
|
Karsten Hopp |
9aaaf6 |
! int type = MCHAR;
|
|
Karsten Hopp |
9aaaf6 |
char_u *pAllocated = NULL;
|
|
Karsten Hopp |
9aaaf6 |
char_u *pClipText = NULL;
|
|
Karsten Hopp |
9aaaf6 |
int clip_data_format = 0;
|
|
Karsten Hopp |
9aaaf6 |
--- 2232,2238 ----
|
|
Karsten Hopp |
9aaaf6 |
void
|
|
Karsten Hopp |
9aaaf6 |
clip_mch_request_selection(VimClipboard *cbd)
|
|
Karsten Hopp |
9aaaf6 |
{
|
|
Karsten Hopp |
9aaaf6 |
! int type = MAUTO;
|
|
Karsten Hopp |
9aaaf6 |
char_u *pAllocated = NULL;
|
|
Karsten Hopp |
9aaaf6 |
char_u *pClipText = NULL;
|
|
Karsten Hopp |
9aaaf6 |
int clip_data_format = 0;
|
|
Karsten Hopp |
9aaaf6 |
***************
|
|
Karsten Hopp |
9aaaf6 |
*** 2280,2293 ****
|
|
Karsten Hopp |
9aaaf6 |
{
|
|
Karsten Hopp |
9aaaf6 |
clip_data_format = CF_TEXT;
|
|
Karsten Hopp |
9aaaf6 |
pClipText = pAllocated;
|
|
Karsten Hopp |
9aaaf6 |
- type = (vim_strchr((char*)pClipText, '\r') != NULL) ? MLINE : MCHAR;
|
|
Karsten Hopp |
9aaaf6 |
}
|
|
Karsten Hopp |
9aaaf6 |
|
|
Karsten Hopp |
9aaaf6 |
else if ((pAllocated = Win16GetClipboardData(CF_OEMTEXT)) != NULL)
|
|
Karsten Hopp |
9aaaf6 |
{
|
|
Karsten Hopp |
9aaaf6 |
clip_data_format = CF_OEMTEXT;
|
|
Karsten Hopp |
9aaaf6 |
pClipText = pAllocated;
|
|
Karsten Hopp |
9aaaf6 |
- type = (vim_strchr((char*)pClipText, '\r') != NULL) ? MLINE : MCHAR;
|
|
Karsten Hopp |
9aaaf6 |
}
|
|
Karsten Hopp |
9aaaf6 |
|
|
Karsten Hopp |
9aaaf6 |
/* Did we get anything? */
|
|
Karsten Hopp |
9aaaf6 |
--- 2280,2291 ----
|
|
Karsten Hopp |
9aaaf6 |
*** ../mercurial/vim73/src/os_mswin.c 2011-01-17 20:08:04.000000000 +0100
|
|
Karsten Hopp |
9aaaf6 |
--- src/os_mswin.c 2011-06-19 01:01:51.000000000 +0200
|
|
Karsten Hopp |
9aaaf6 |
***************
|
|
Karsten Hopp |
9aaaf6 |
*** 1410,1418 ****
|
|
Karsten Hopp |
9aaaf6 |
{
|
|
Karsten Hopp |
9aaaf6 |
char_u *temp_clipboard;
|
|
Karsten Hopp |
9aaaf6 |
|
|
Karsten Hopp |
9aaaf6 |
! /* If the type is not known guess it. */
|
|
Karsten Hopp |
9aaaf6 |
if (metadata.type == -1)
|
|
Karsten Hopp |
9aaaf6 |
! metadata.type = (vim_strchr(str, '\n') == NULL) ? MCHAR : MLINE;
|
|
Karsten Hopp |
9aaaf6 |
|
|
Karsten Hopp |
9aaaf6 |
/* Translate <CR><NL> into <NL>. */
|
|
Karsten Hopp |
9aaaf6 |
temp_clipboard = crnl_to_nl(str, &str_size);
|
|
Karsten Hopp |
9aaaf6 |
--- 1410,1418 ----
|
|
Karsten Hopp |
9aaaf6 |
{
|
|
Karsten Hopp |
9aaaf6 |
char_u *temp_clipboard;
|
|
Karsten Hopp |
9aaaf6 |
|
|
Karsten Hopp |
9aaaf6 |
! /* If the type is not known detect it. */
|
|
Karsten Hopp |
9aaaf6 |
if (metadata.type == -1)
|
|
Karsten Hopp |
9aaaf6 |
! metadata.type = MAUTO;
|
|
Karsten Hopp |
9aaaf6 |
|
|
Karsten Hopp |
9aaaf6 |
/* Translate <CR><NL> into <NL>. */
|
|
Karsten Hopp |
9aaaf6 |
temp_clipboard = crnl_to_nl(str, &str_size);
|
|
Karsten Hopp |
9aaaf6 |
*** ../mercurial/vim73/src/os_qnx.c 2010-05-15 21:22:11.000000000 +0200
|
|
Karsten Hopp |
9aaaf6 |
--- src/os_qnx.c 2011-06-19 01:02:26.000000000 +0200
|
|
Karsten Hopp |
9aaaf6 |
***************
|
|
Karsten Hopp |
9aaaf6 |
*** 93,99 ****
|
|
Karsten Hopp |
9aaaf6 |
clip_length = clip_header->length - 1;
|
|
Karsten Hopp |
9aaaf6 |
|
|
Karsten Hopp |
9aaaf6 |
if( clip_text != NULL && is_type_set == FALSE )
|
|
Karsten Hopp |
9aaaf6 |
! type = (strchr( clip_text, '\r' ) != NULL) ? MLINE : MCHAR;
|
|
Karsten Hopp |
9aaaf6 |
}
|
|
Karsten Hopp |
9aaaf6 |
|
|
Karsten Hopp |
9aaaf6 |
if( (clip_text != NULL) && (clip_length > 0) )
|
|
Karsten Hopp |
9aaaf6 |
--- 93,99 ----
|
|
Karsten Hopp |
9aaaf6 |
clip_length = clip_header->length - 1;
|
|
Karsten Hopp |
9aaaf6 |
|
|
Karsten Hopp |
9aaaf6 |
if( clip_text != NULL && is_type_set == FALSE )
|
|
Karsten Hopp |
9aaaf6 |
! type = MAUTO;
|
|
Karsten Hopp |
9aaaf6 |
}
|
|
Karsten Hopp |
9aaaf6 |
|
|
Karsten Hopp |
9aaaf6 |
if( (clip_text != NULL) && (clip_length > 0) )
|
|
Karsten Hopp |
9aaaf6 |
*** ../mercurial/vim73/src/ui.c 2010-09-21 22:09:28.000000000 +0200
|
|
Karsten Hopp |
9aaaf6 |
--- src/ui.c 2011-06-19 01:03:31.000000000 +0200
|
|
Karsten Hopp |
9aaaf6 |
***************
|
|
Karsten Hopp |
9aaaf6 |
*** 1609,1615 ****
|
|
Karsten Hopp |
9aaaf6 |
|
|
Karsten Hopp |
9aaaf6 |
#if defined(FEAT_HANGULIN) || defined(PROTO)
|
|
Karsten Hopp |
9aaaf6 |
void
|
|
Karsten Hopp |
9aaaf6 |
! push_raw_key (s, len)
|
|
Karsten Hopp |
9aaaf6 |
char_u *s;
|
|
Karsten Hopp |
9aaaf6 |
int len;
|
|
Karsten Hopp |
9aaaf6 |
{
|
|
Karsten Hopp |
9aaaf6 |
--- 1609,1615 ----
|
|
Karsten Hopp |
9aaaf6 |
|
|
Karsten Hopp |
9aaaf6 |
#if defined(FEAT_HANGULIN) || defined(PROTO)
|
|
Karsten Hopp |
9aaaf6 |
void
|
|
Karsten Hopp |
9aaaf6 |
! push_raw_key(s, len)
|
|
Karsten Hopp |
9aaaf6 |
char_u *s;
|
|
Karsten Hopp |
9aaaf6 |
int len;
|
|
Karsten Hopp |
9aaaf6 |
{
|
|
Karsten Hopp |
9aaaf6 |
***************
|
|
Karsten Hopp |
9aaaf6 |
*** 2016,2022 ****
|
|
Karsten Hopp |
9aaaf6 |
long_u *length;
|
|
Karsten Hopp |
9aaaf6 |
int *format;
|
|
Karsten Hopp |
9aaaf6 |
{
|
|
Karsten Hopp |
9aaaf6 |
! int motion_type;
|
|
Karsten Hopp |
9aaaf6 |
long_u len;
|
|
Karsten Hopp |
9aaaf6 |
char_u *p;
|
|
Karsten Hopp |
9aaaf6 |
char **text_list = NULL;
|
|
Karsten Hopp |
9aaaf6 |
--- 2016,2022 ----
|
|
Karsten Hopp |
9aaaf6 |
long_u *length;
|
|
Karsten Hopp |
9aaaf6 |
int *format;
|
|
Karsten Hopp |
9aaaf6 |
{
|
|
Karsten Hopp |
9aaaf6 |
! int motion_type = MAUTO;
|
|
Karsten Hopp |
9aaaf6 |
long_u len;
|
|
Karsten Hopp |
9aaaf6 |
char_u *p;
|
|
Karsten Hopp |
9aaaf6 |
char **text_list = NULL;
|
|
Karsten Hopp |
9aaaf6 |
***************
|
|
Karsten Hopp |
9aaaf6 |
*** 2036,2042 ****
|
|
Karsten Hopp |
9aaaf6 |
*(int *)success = FALSE;
|
|
Karsten Hopp |
9aaaf6 |
return;
|
|
Karsten Hopp |
9aaaf6 |
}
|
|
Karsten Hopp |
9aaaf6 |
- motion_type = MCHAR;
|
|
Karsten Hopp |
9aaaf6 |
p = (char_u *)value;
|
|
Karsten Hopp |
9aaaf6 |
len = *length;
|
|
Karsten Hopp |
9aaaf6 |
if (*type == vim_atom)
|
|
Karsten Hopp |
9aaaf6 |
--- 2036,2041 ----
|
|
Karsten Hopp |
9aaaf6 |
*** ../vim-7.3.220/src/version.c 2011-06-19 00:27:46.000000000 +0200
|
|
Karsten Hopp |
9aaaf6 |
--- src/version.c 2011-06-19 01:03:59.000000000 +0200
|
|
Karsten Hopp |
9aaaf6 |
***************
|
|
Karsten Hopp |
9aaaf6 |
*** 711,712 ****
|
|
Karsten Hopp |
9aaaf6 |
--- 711,714 ----
|
|
Karsten Hopp |
9aaaf6 |
{ /* Add new patch number below this line */
|
|
Karsten Hopp |
9aaaf6 |
+ /**/
|
|
Karsten Hopp |
9aaaf6 |
+ 221,
|
|
Karsten Hopp |
9aaaf6 |
/**/
|
|
Karsten Hopp |
9aaaf6 |
|
|
Karsten Hopp |
9aaaf6 |
--
|
|
Karsten Hopp |
9aaaf6 |
hundred-and-one symptoms of being an internet addict:
|
|
Karsten Hopp |
9aaaf6 |
190. You quickly hand over your wallet, leather jacket, and car keys
|
|
Karsten Hopp |
9aaaf6 |
during a mugging, then proceed to beat the crap out of your
|
|
Karsten Hopp |
9aaaf6 |
assailant when he asks for your laptop.
|
|
Karsten Hopp |
9aaaf6 |
|
|
Karsten Hopp |
9aaaf6 |
/// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
|
|
Karsten Hopp |
9aaaf6 |
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
|
|
Karsten Hopp |
9aaaf6 |
\\\ an exciting new programming language -- http://www.Zimbu.org ///
|
|
Karsten Hopp |
9aaaf6 |
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
|