Deleted Added
full compact
ibcs2_ioctl.c (92761) ibcs2_ioctl.c (102003)
1/* $NetBSD: ibcs2_ioctl.c,v 1.6 1995/03/14 15:12:28 scottb Exp $ */
2
3/*
4 * Copyright (c) 1994, 1995 Scott Bartram
5 * All rights reserved.
6 *
7 * based on compat/sunos/sun_ioctl.c
8 *

--- 11 unchanged lines hidden (view full) ---

20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 *
1/* $NetBSD: ibcs2_ioctl.c,v 1.6 1995/03/14 15:12:28 scottb Exp $ */
2
3/*
4 * Copyright (c) 1994, 1995 Scott Bartram
5 * All rights reserved.
6 *
7 * based on compat/sunos/sun_ioctl.c
8 *

--- 11 unchanged lines hidden (view full) ---

20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 *
28 * $FreeBSD: head/sys/i386/ibcs2/ibcs2_ioctl.c 92761 2002-03-20 05:48:58Z alfred $
28 * $FreeBSD: head/sys/i386/ibcs2/ibcs2_ioctl.c 102003 2002-08-17 02:36:16Z rwatson $
29 */
30
31#include <sys/param.h>
32#include <sys/systm.h>
33#include <sys/consio.h>
34#include <sys/fcntl.h>
35#include <sys/file.h>
36#include <sys/filedesc.h>

--- 323 unchanged lines hidden (view full) ---

360 case IBCS2_TCGETA:
361 case IBCS2_XCGETA:
362 case IBCS2_OXCGETA:
363 {
364 struct termios bts;
365 struct ibcs2_termios sts;
366 struct ibcs2_termio st;
367
29 */
30
31#include <sys/param.h>
32#include <sys/systm.h>
33#include <sys/consio.h>
34#include <sys/fcntl.h>
35#include <sys/file.h>
36#include <sys/filedesc.h>

--- 323 unchanged lines hidden (view full) ---

360 case IBCS2_TCGETA:
361 case IBCS2_XCGETA:
362 case IBCS2_OXCGETA:
363 {
364 struct termios bts;
365 struct ibcs2_termios sts;
366 struct ibcs2_termio st;
367
368 if ((error = fo_ioctl(fp, TIOCGETA, (caddr_t)&bts, td)) != 0)
368 if ((error = fo_ioctl(fp, TIOCGETA, (caddr_t)&bts,
369 td->td_ucred, td)) != 0)
369 break;
370
371 btios2stios (&bts, &sts);
372 if (SCARG(uap, cmd) == IBCS2_TCGETA) {
373 stios2stio (&sts, &st);
374 error = copyout((caddr_t)&st, SCARG(uap, data),
375 sizeof (st));
376#ifdef DEBUG_IBCS2

--- 21 unchanged lines hidden (view full) ---

398 if ((error = copyin(SCARG(uap, data), (caddr_t)&st,
399 sizeof(st))) != 0) {
400 DPRINTF(("ibcs2_ioctl(%d): TCSET copyin failed ",
401 p->p_pid));
402 break;
403 }
404
405 /* get full BSD termios so we don't lose information */
370 break;
371
372 btios2stios (&bts, &sts);
373 if (SCARG(uap, cmd) == IBCS2_TCGETA) {
374 stios2stio (&sts, &st);
375 error = copyout((caddr_t)&st, SCARG(uap, data),
376 sizeof (st));
377#ifdef DEBUG_IBCS2

--- 21 unchanged lines hidden (view full) ---

399 if ((error = copyin(SCARG(uap, data), (caddr_t)&st,
400 sizeof(st))) != 0) {
401 DPRINTF(("ibcs2_ioctl(%d): TCSET copyin failed ",
402 p->p_pid));
403 break;
404 }
405
406 /* get full BSD termios so we don't lose information */
406 if ((error = fo_ioctl(fp, TIOCGETA, (caddr_t)&bts, td)) != 0) {
407 if ((error = fo_ioctl(fp, TIOCGETA, (caddr_t)&bts,
408 td->td_ucred, td)) != 0) {
407 DPRINTF(("ibcs2_ioctl(%d): TCSET ctl failed fd %d ",
408 p->p_pid, SCARG(uap, fd)));
409 break;
410 }
411
412 /*
413 * convert to iBCS2 termios, copy in information from
414 * termio, and convert back, then set new values.
415 */
416 btios2stios(&bts, &sts);
417 stio2stios(&st, &sts);
418 stios2btios(&sts, &bts);
419
420 error = fo_ioctl(fp, SCARG(uap, cmd) - IBCS2_TCSETA + TIOCSETA,
409 DPRINTF(("ibcs2_ioctl(%d): TCSET ctl failed fd %d ",
410 p->p_pid, SCARG(uap, fd)));
411 break;
412 }
413
414 /*
415 * convert to iBCS2 termios, copy in information from
416 * termio, and convert back, then set new values.
417 */
418 btios2stios(&bts, &sts);
419 stio2stios(&st, &sts);
420 stios2btios(&sts, &bts);
421
422 error = fo_ioctl(fp, SCARG(uap, cmd) - IBCS2_TCSETA + TIOCSETA,
421 (caddr_t)&bts, td);
423 (caddr_t)&bts, td->td_ucred, td);
422 break;
423 }
424
425 case IBCS2_XCSETA:
426 case IBCS2_XCSETAW:
427 case IBCS2_XCSETAF:
428 {
429 struct termios bts;
430 struct ibcs2_termios sts;
431
432 if ((error = copyin(SCARG(uap, data), (caddr_t)&sts,
433 sizeof (sts))) != 0)
434 break;
435 stios2btios (&sts, &bts);
436 error = fo_ioctl(fp, SCARG(uap, cmd) - IBCS2_XCSETA + TIOCSETA,
424 break;
425 }
426
427 case IBCS2_XCSETA:
428 case IBCS2_XCSETAW:
429 case IBCS2_XCSETAF:
430 {
431 struct termios bts;
432 struct ibcs2_termios sts;
433
434 if ((error = copyin(SCARG(uap, data), (caddr_t)&sts,
435 sizeof (sts))) != 0)
436 break;
437 stios2btios (&sts, &bts);
438 error = fo_ioctl(fp, SCARG(uap, cmd) - IBCS2_XCSETA + TIOCSETA,
437 (caddr_t)&bts, td);
439 (caddr_t)&bts, td->td_ucred, td);
438 break;
439 }
440
441 case IBCS2_OXCSETA:
442 case IBCS2_OXCSETAW:
443 case IBCS2_OXCSETAF:
444 {
445 struct termios bts;
446 struct ibcs2_termios sts;
447
448 if ((error = copyin(SCARG(uap, data), (caddr_t)&sts,
449 sizeof (sts))) != 0)
450 break;
451 stios2btios (&sts, &bts);
452 error = fo_ioctl(fp, SCARG(uap, cmd) - IBCS2_OXCSETA + TIOCSETA,
440 break;
441 }
442
443 case IBCS2_OXCSETA:
444 case IBCS2_OXCSETAW:
445 case IBCS2_OXCSETAF:
446 {
447 struct termios bts;
448 struct ibcs2_termios sts;
449
450 if ((error = copyin(SCARG(uap, data), (caddr_t)&sts,
451 sizeof (sts))) != 0)
452 break;
453 stios2btios (&sts, &bts);
454 error = fo_ioctl(fp, SCARG(uap, cmd) - IBCS2_OXCSETA + TIOCSETA,
453 (caddr_t)&bts, td);
455 (caddr_t)&bts, td->td_ucred, td);
454 break;
455 }
456
457 case IBCS2_TCSBRK:
458 DPRINTF(("ibcs2_ioctl(%d): TCSBRK ", p->p_pid));
459 error = ENOSYS;
460 break;
461
462 case IBCS2_TCXONC:
463 {
464 switch ((int)SCARG(uap, data)) {
465 case 0:
466 case 1:
467 DPRINTF(("ibcs2_ioctl(%d): TCXONC ", p->p_pid));
468 error = ENOSYS;
469 break;
470 case 2:
456 break;
457 }
458
459 case IBCS2_TCSBRK:
460 DPRINTF(("ibcs2_ioctl(%d): TCSBRK ", p->p_pid));
461 error = ENOSYS;
462 break;
463
464 case IBCS2_TCXONC:
465 {
466 switch ((int)SCARG(uap, data)) {
467 case 0:
468 case 1:
469 DPRINTF(("ibcs2_ioctl(%d): TCXONC ", p->p_pid));
470 error = ENOSYS;
471 break;
472 case 2:
471 error = fo_ioctl(fp, TIOCSTOP, (caddr_t)0, td);
473 error = fo_ioctl(fp, TIOCSTOP, (caddr_t)0,
474 td->td_ucred, td);
472 break;
473 case 3:
475 break;
476 case 3:
474 error = fo_ioctl(fp, TIOCSTART, (caddr_t)1, td);
477 error = fo_ioctl(fp, TIOCSTART, (caddr_t)1,
478 td->td_ucred, td);
475 break;
476 default:
477 error = EINVAL;
478 break;
479 }
480 break;
481 }
482

--- 10 unchanged lines hidden (view full) ---

493 break;
494 case 2:
495 arg = FREAD | FWRITE;
496 break;
497 default:
498 fdrop(fp, td);
499 return EINVAL;
500 }
479 break;
480 default:
481 error = EINVAL;
482 break;
483 }
484 break;
485 }
486

--- 10 unchanged lines hidden (view full) ---

497 break;
498 case 2:
499 arg = FREAD | FWRITE;
500 break;
501 default:
502 fdrop(fp, td);
503 return EINVAL;
504 }
501 error = fo_ioctl(fp, TIOCFLUSH, (caddr_t)&arg, td);
505 error = fo_ioctl(fp, TIOCFLUSH, (caddr_t)&arg, td->td_ucred,
506 td);
502 break;
503 }
504
505 case IBCS2_TIOCGWINSZ:
506 SCARG(uap, cmd) = TIOCGWINSZ;
507 error = ioctl(td, (struct ioctl_args *)uap);
508 break;
509

--- 183 unchanged lines hidden ---
507 break;
508 }
509
510 case IBCS2_TIOCGWINSZ:
511 SCARG(uap, cmd) = TIOCGWINSZ;
512 error = ioctl(td, (struct ioctl_args *)uap);
513 break;
514

--- 183 unchanged lines hidden ---