1dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include <stdio.h> 2e49f9c923868fd7a62356ab1864444ade4a2cab6Doug Kwan#include <stdlib.h> 3dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include <string.h> 4dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include <fcntl.h> 5dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include <errno.h> 6dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 7dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectint smd_main(int argc, char **argv) 8dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project{ 9dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project int fd, len, r, port = 0; 10dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project char devname[32]; 11dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project argc--; 12dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project argv++; 13dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 14dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project if((argc > 0) && (argv[0][0] == '-')) { 15dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project port = atoi(argv[0] + 1); 16dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project argc--; 17dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project argv++; 18dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project } 19dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 20dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project sprintf(devname,"/dev/smd%d",port); 21dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project fd = open(devname, O_WRONLY); 22dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project if(fd < 0) { 23dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project fprintf(stderr,"failed to open smd0 - %s\n", 24dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project strerror(errno)); 25dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project return -1; 26dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project } 27dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project while(argc > 0) { 28dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project len = strlen(argv[0]); 29dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project r = write(fd, argv[0], len); 30dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project if(r != len) { 31dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project fprintf(stderr,"failed to write smd0 (%d) %s\n", 32dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project r, strerror(errno)); 33dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project return -1; 34dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project } 35dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project argc--; 36dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project argv++; 37dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project write(fd, argc ? " " : "\r", 1); 38dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project } 39dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project close(fd); 40dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project return 0; 41dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project} 42