3 * Copyright (C) 2007 Tomas 'ZeXx86' Jedrzejek (zexx86@gmail.com)
4 * Copyright (C) 2008 Tomas 'ZeXx86' Jedrzejek (zexx86@gmail.com)
5 * Copyright (C) 2009 Martin 'povik' Poviser (martin.povik@gmail.com)
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
34 int write (unsigned fd
, void *buf
, unsigned len
)
36 fd_t
*d
= fd_get (fd
);
41 if (d
->flags
& FD_PIPE
) {
42 pipe_t
*p
= pipe_get (fd
);
44 return pipe_write (p
, buf
, len
);
49 char *file
= dir
[d
->index
].name
;
52 DPRINT ("write () -> !file\n");
56 unsigned file_len
= strlen (file
);
58 /* create file when not exist */
59 if (d
->flags
& O_CREAT
) {
60 vfs_touch ((char *) file
, file_len
);
63 memcpy (d
->s
, (char *) buf
, len
);
67 if (!vfs_mmap (file
, file_len
, buf
, len
))
70 DPRINT ("write () - !d->e not implemented - O_APPEND..\n");