/* View one or more remote files through your pager. */ int CatCmd(int argc, char **argv) { int i, result, errs; LineList globFiles; LinePtr globFile; MultiLineInit(); for (i=1, errs=0; i<argc; i++) { InitLineList(&globFiles); RemoteGlob(&globFiles, argv[i], kListNoFlags); for (globFile = globFiles.first; globFile != NULL; globFile = globFile->next) { result = DoCat(globFile->line); if (result < 0) --errs; if (gXferAbortFlag == SIGINT) break; /* Don't get rest of files if you interrupted. */ if (argc > 2) MultiLinePrintF("### End of file %s ###\n", globFile->line); } DisposeLineListContents(&globFiles); } return (errs); } /* CatCmd */
/* View one or more remote files through your pager. */ int PageCmd(int argc, char **argv) { int i, result, errs; LineList globFiles; LinePtr globFile; char *pagerProg; if (STREQ(argv[1], "-b") && (gWinInit > 0) && (argc > 2)) { /* A hack to let you use the built-in pager like you * can with the lpage command. */ pagerProg = NULL; /* Use built-in */ i = 2; } else { if (gPager[0] == '\0') { EPrintF("You haven't specified a program to use as a pager.\n"); EPrintF("You can set this from the preferences screen (prefs command).\n"); return -1; } pagerProg = gPager; i = 1; } for (errs=0; i<argc; i++) { InitLineList(&globFiles); RemoteGlob(&globFiles, argv[i], kListNoFlags); for (globFile = globFiles.first; globFile != NULL; globFile = globFile->next) { if (pagerProg == NULL) result = DoCat(globFile->line); else result = DoPage(globFile->line); if (result < 0) --errs; if (gXferAbortFlag == SIGINT) break; /* Don't get rest of files if you interrupted. */ } DisposeLineListContents(&globFiles); } return (errs); } /* PageCmd */
int AJ_Main(void) { AJ_Status status = AJ_OK; uint8_t connected = FALSE; uint8_t done = FALSE; /* * One time initialization before calling any other AllJoyn APIs */ AJ_Initialize(); AJ_RegisterObjects(NULL, proxyObjects); while (!done) { AJ_Message msg; if (!connected) { const char* announceRule = "type='signal',sessionless='t',interface='org.alljoyn.About',member='Announce'"; status = AJ_FindBusAndConnect(&bus, NULL, AJ_CONNECT_TIMEOUT); if (status != AJ_OK) { AJ_WarnPrintf(("AJ_FindBusAndConnect(): failed - sleeping for %d seconds\n", AJ_CONNECT_PAUSE / 1000)); AJ_Sleep(AJ_CONNECT_PAUSE); continue; } AJ_AboutRegisterAnnounceHandlers(peerDescriptions, ArraySize(peerDescriptions)); AJ_BusSetSignalRule(&bus, announceRule, AJ_BUS_SIGNAL_ALLOW); connected = TRUE; } status = AJ_UnmarshalMsg(&bus, &msg, UNMARSHAL_TIMEOUT); if (AJ_ERR_TIMEOUT == status) { continue; } if (AJ_OK == status) { switch (msg.msgId) { case AJ_REPLY_ID(AJ_METHOD_JOIN_SESSION): if (msg.hdr->msgType != AJ_MSG_ERROR) { uint32_t result; status = AJ_UnmarshalArgs(&msg, "uu", &result, &sessionId); if (status == AJ_OK) { if (result == AJ_JOINSESSION_REPLY_SUCCESS) { AJ_AlwaysPrintf(("joined session %u\n", sessionId)); DoCat(); } else { AJ_AlwaysPrintf(("joined session rejected %d\n", result)); } } } else { AJ_ErrPrintf(("JoinSession reply was error: %s\n", msg.error)); } break; case AJ_REPLY_ID(BASIC_CLIENT_CAT): if (msg.hdr->msgType != AJ_MSG_ERROR) { AJ_Arg arg; status = AJ_UnmarshalArg(&msg, &arg); if (AJ_OK == status) { AJ_AlwaysPrintf(("cat returned \"%s\"\n", arg.val.v_string)); if (!waitVar) { done = TRUE; } } } else { AJ_ErrPrintf(("Reply was error: %s\n", msg.error)); } break; case AJ_SIGNAL_MP_SESSION_CHANGED_WITH_REASON: { uint32_t sessId; const char* peer; uint32_t added; uint32_t reason; status = AJ_UnmarshalArgs(&msg, "usbu", &sessId, &peer, &added, &reason); if (added) { AJ_AlwaysPrintf(("Member \"%s\" added to session %u\n", peer, sessId)); } else { AJ_AlwaysPrintf(("Member \"%s\" removed from session %u\n", peer, sessId)); } } break; case AJ_SIGNAL_SESSION_LOST_WITH_REASON: AJ_AlwaysPrintf(("Session lost\n")); break; default: /* Pass to the built-in handlers. */ status = AJ_BusHandleBusMessage(&msg); break; } } /* Messages MUST be discarded to free resources. */ AJ_CloseMsg(&msg); if (status == AJ_ERR_READ) { AJ_AlwaysPrintf(("Connection lost\n")); AJ_Disconnect(&bus); exit(0); } } AJ_AlwaysPrintf(("Basic client exiting with status %d.\n", status)); return status; }