2 * This file has been modified for the cdrkit suite.
4 * The behaviour and appearence of the program code below can differ to a major
5 * extent from the version distributed by the original author(s).
7 * For details, see Changelog file distributed with the cdrkit package. If you
8 * received this file from another source then ask the distributing person for
9 * a log of modifications.
13 /* @(#)movesect.c 1.3 04/03/02 Copyright 2001, 2004 J. Schilling */
15 * Copyright (c) 2001, 2004 J. Schilling
18 * This program is free software; you can redistribute it and/or modify
19 * it under the terms of the GNU General Public License version 2
20 * as published by the Free Software Foundation.
22 * This program is distributed in the hope that it will be useful,
23 * but WITHOUT ANY WARRANTY; without even the implied warranty of
24 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25 * GNU General Public License for more details.
27 * You should have received a copy of the GNU General Public License along with
28 * this program; see the file COPYING. If not, write to the Free Software
29 * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
40 void scatter_secs(track_t *trackp, char *bp, int nsecs);
43 * Scatter input sector size records over buffer to make them
46 * If input sector size is less than output sector size,
48 * | sector_0 || sector_1 || ... || sector_n ||
50 * will be convterted into:
52 * | sector_0 |grass|| sector_1 |grass|| ... || sector_n |grass||
54 * Sector_n must me moved n * grass_size forward,
55 * Sector_1 must me moved 1 * grass_size forward
58 * If output sector size is less than input sector size,
60 * | sector_0 |grass|| sector_1 |grass|| ... || sector_n |grass||
62 * will be convterted into:
64 * | sector_0 || sector_1 || ... || sector_n ||
66 * Sector_1 must me moved 1 * grass_size backward,
67 * Sector_n must me moved n * grass_size backward,
69 * Sector_0 must never be moved.
72 scatter_secs(track_t *trackp, char *bp, int nsecs)
76 int isecsize = trackp->isecsize;
77 int secsize = trackp->secsize;
80 if (secsize == isecsize)
83 nsecs -= 1; /* we do not move sector # 0 */
85 if (secsize < isecsize) {
89 for (i = nsecs; i > 0; i--) {
90 movebytes(from, to, secsize);
95 from = bp + (nsecs * isecsize);
96 to = bp + (nsecs * secsize);
98 for (i = nsecs; i > 0; i--) {
99 movebytes(from, to, isecsize);