it is possible to change patrition size, move or merge partitions with programs such as PQ partition magic. but it is a little risky.
first backup all of the data in your all of partitions!!! then delete C partition (dont forget to backup boot.ini ntldr and other system files in C:\ ). create C again with the size that u want. set active that partition. format it then copy back that sytem files to C:\. now u have unpartitioned space to install linux. install linux. the option "Keep my current partitions and use existing free space" will work now. but u will have a trouble about booting XP. u must edit c:\boot.ini and give correct partition of XP. mine is in 2nd partition. yours will be probably in 3rd or 4th maybe 5th patition
here is my disk:
root@teknik shell-scripts]# /sbin/fdisk -l
Disk /dev/hda: 30.7 GB, 30750031872 bayt
16 kafa, 63 sektör/iz, 59582 silindir
Birimler = silindir / 1008 * 512 = 516096 bayt
Aygıt Boot Start End Blocks Id System
/dev/hda1 * 1 34553 17414428+ c W95 FAT32 (LBA)
/dev/hda2 34553 59575 12611025 f W95 Ext'd (LBA)
/dev/hda5 34553 44721 5124703+ 7 HPFS/NTFS
/dev/hda6 44722 55286 5324728+ 83 Linux
/dev/hda7 55287 55806 262048+ 82 Linux takas
[mesut@teknik shell-scripts]$ cat /mnt/win/boot.ini
multi(0)disk(0)rdisk(0)partition[B](2)[B]\WINDOWS="M$ xp Pro Tr" /fastdetect
C:\="M$ win 98 Se Tr"